SlideShare a Scribd company logo
ロジックから状態を
分離する技術
設計ナイト2024
わいとん @ytnobody
私について
• 東 聡志(AZUMA Satoshi)
• a.k.a. @ytnobody – わいとん
• 零細システム開発会社経営
• Y.pm LLC
• バックエンドエンジニア25年生
• YAPC::Hakodate 2024実行委員
みんな、盛り上げていこうぜ!
話すこと
なぜ純粋関数で作るのか
やらないこと
副作用を取り扱う層と純粋関数だけの層を分離する
テストがしやすくなる以外のメリット
純粋関数デザインパターン
なぜ純粋関数でつくるのか
ロジックから状態を分離する技術
そもそも「純粋関数」とは
何なのか
• e-words.jpによると…
> 純粋関数(pure function)とは、プログラミングにお
ける関数のうち、同じ入力に対して常に同じ出力を返し、
副作用が生じないもの。
わかったようなわからんような…🤔
もうちょっと言い換えてみよう😣
純粋関数であるための条件
同じ引数に対し、決まった返り値を返す
引数以外の入力を持たない
返り値以外の出力を持たない
関数内で乱数生成を行わない
多少イメージできたかも😌
純粋関数における3つの「容易」
テストが
容易
x + 15 = y; x = 22; のとき、yは37であると
確信できるのと同じ理屈
流用が
容易
状態をもたないからこそ可搬性・再利用性が
極めて高い
分離が
容易
フレームワークやORMと結合されておらず、
流行り廃りとは無関係
純粋関数でつくるのは
あらゆる面で「容易」を求めるため
• テスト・流用・分離が容易であれば読み手にとっても「容易」
となりやすい。
• 長くメンテナンスすることを容易にする
• 不具合の発見を容易にする
• 引継ぎ・教育を容易にする
• 改造を容易にする
• 「選ばれし者」だけがコミットできる仕組みは長続きしづらく、
引継ぎや改造が大変で、不具合調査が難航しがち。
• だから徹底的に「容易」を取りに行くし、それが純粋関数でつ
くる理由となる。
やらないこと
ロジックから状態を分離する技術
メンバ変数とカプセル化
• instance = new MyClass(some_attributes)
• MyClassはsome_attributesに依存するかしないかわからないが、
内部に状態を持っているかもしれないし、持っていないかもしれない。
• decoratorやannotation等で識別可能するというアプローチは
かえって複雑性を増すのでNG。
• インスタンス内部の状態を予測・忖度しながらコードを書くの
は難しい
• インスタンス内部に値を持たなければカプセル化の存在意義は
なくなる
データとロジックの混在
• もっと言うとRowクラス
• 型としてのRow型は良い
• データだけ持つ分にはOK
• Rowクラスにメソッドを生やすと、どのRowクラスにどのメソッドが
あるのかを意識するコストが発生する
• これは、次に挙げる「継承」の最大要因となる
継承
• 継承元のロジックを受け継ぐことができることの功罪
• ロジックの前後関係が分断される
• 関数本体に書かれていない処理が実行される
• 継承元の仕様を知らないとコードを書けないし読めない
• 多世代継承が発生すると、どの世代がどの処理を行っているの
かわからなくなる
• このあたりは継承の利用ルールで予防できる
副作用を取り扱う層と
純粋関数だけの層を
分離する
ロジックから状態を分離する技術
例:MVCにおけるFat Model問題
Model
- DBとのやり取り
- ビジネスロジック実装
- ファイルハンドリング
- クラウドリソース取扱
- 各種状態の管理
- 外部システムとの連携
View
- テンプレートに基づくデータ整形
Controller
- 要求の受付
- Modelへの処理要求
- Viewへの描画要求
- 応答の返却
Fat Modelの根本的な病理
• Modelに期待される役割が多すぎる
Fat Model問題を解くために
MVCを崩してみる(Modelを分解)
Service
- ビジネスロジック実装
- 各種状態の管理
- Infraとのやり取り
View
- テンプレートに基づくデータ整形
Controller
- 要求の受付
- Serviceへの処理要求
- Viewへの描画要求
- 応答の返却
Infra
- DBとのやり取り
- ファイルハンドリング
- クラウドリソース取扱
- 外部システムとの連携
コード量が多くなりがちな役割は何か
• 多くの場合「ビジネスロジック」と「各種状態の管理」が
分厚くなる傾向
分厚くなりがちな役割を分ける
Usecase
- ビジネスロジック実装
- Serviceとのやり取り
View
- テンプレートに基づくデータ整形
Controller
- 要求の受付
- Usecaseへの処理要求
- Viewへの描画要求
- 応答の返却
Infra
- DBとのやり取り
- ファイルハンドリング
- クラウドリソース取扱
- 外部システムとの連携
Service
- 各種状態の管理
- Infraとのやり取り
循環参照を排除するには
• コンポーネント間の参照方向を厳格に一方通行とする
参照方向を厳格に一方通行にする
Usecase
- ビジネスロジック
実装
View
- テンプレートに
基づくデータ整形
Controller
- 要求の受付
- 応答の返却
Infra
- システム外部との
やり取り
Service
- 各種状態の管理
ようやく本題にたどりつけました😇
ビジネスロジックから純粋関数を
分離する
• データ整形処理を純粋関数化
• 構造体に値を詰め込む処理
• 文字列結合・テンプレート処理
• フォーマット処理
• 純全たる計算処理
• 条件が複数の判断条件を純粋関数化
• if(user.role === ADMIN && user.isBanned === false) みたいなやつ
• 上記をここでは「狭義のビジネスロジック」と呼ぶ
• 狭義のビジネスロジックをDomainにまとめる
• DomainはUsecaseおよびServiceから参照される
UsecaseやServiceにある純粋関数候補を
Domainとして切り出す
Usecase
- ビジネスロジック
View
- テンプレートに
基づくデータ整形
Controller
- 要求の受付
- 応答の返却
Infra
- システム外部との
やり取り
Service
- 各種状態の管理
Domain
- データ整形(純粋関数)
- 判断条件(純粋関数)
よく聞く反駁
• ビジネスロジックと状態は切っても切り離せない
広義のビジネスロジックとしては
その通り
• 狭義のビジネスロジックを前提に考えると
「状態は引数として渡されるべき」である。
テストがしやすくなる以外の
メリット
ロジックから状態を分離する技術
ロジックの流用がしやすい
• 純粋関数として実装されたビジネスロジックは、その利用のた
めの前提条件が「引数の型が期待通りである」だけである。
• テストが書きやすい故に品質が高められやすく、ロジック流用
をするうえで求められる品質に達しやすい。
ORMやフレームワークから独立している
• ORMやフレームワークとは全く独立しているので、比較的容易
に別のORMやフレームワークに乗り換えができる。
• ORMやフレームワークよりも長寿命のコードをつくることができる。
状態に関する考慮を軽減できる
• 状態そのものを引数として受け取るため、テストケースとして
記述できる。
• そのため、考え得るあらゆる状態を網羅したテストを書くこと
ができ、特にDBに格納されたデータに基づく処理について安
全性を高めることが容易。
純粋関数デザインパターン
ロジックから状態を分離する技術
純粋関数にもデザインパターンが
ほしい!
• 勝手にいくつか列挙してみました。
Conditional Function – 条件関数
• if文の中で利用できるように作られた関数。
• 返り値はBool値のみ。
• 接頭辞にisやhas等が使われる
• 複雑な組み合わせ条件を条件関数にまとめると明快である。
条件関数の例:isSweetFruit
Switching Function – スイッチ関数
• 条件関数をより高度にしたもの。
• 引数が合致する条件に応じ、所定のenum値を返す。
スイッチ関数の例:getTypeOfFood
Template Function – テンプレート関数
• 入力値を元に文字列を組み立てる関数。
• URLを組み立てたり、文章を作ったりさせるのに使います。
テンプレート関数の例:
buildFoodDescription
Data Construction Function –
データ構築関数
• 入力値を元に構造体を組み立てる関数。
• レスポンス型にデータを当て込むなどの様々なデータ形式の構
築に使います。
データ構築関数の例:buildFoodResponse
まとめ
ロジックから状態を分離する技術
まとめ
• 純粋関数でつくるのは、あらゆる「容易」を取りに行くため。
• そのために以下の事を守っていく。
• 状態を持たせない作りと継承を最小限に抑える
• 分厚くなりがちなコンポーネントの責務を分割していく
• コンポーネント間の参照方向を一方通行にする
• 狭義のビジネスロジックとして純粋関数を仕上げていく
• 状態を引数として渡す
• そうして得られるメリットは、システムの健康寿命を
大きく伸ばすことに貢献する。
おわり
ありがとうございました

More Related Content

What's hot

Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
Rui Watanabe
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
Mikiya Okuno
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
 
WayOfNoTrouble.pptx
WayOfNoTrouble.pptxWayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Daisuke Yamazaki
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 
ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話
Tsuyoshi Ushio
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
Masahiro Sakai
 
基礎線形代数講座
基礎線形代数講座基礎線形代数講座
基礎線形代数講座
SEGADevTech
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
murachue
 

What's hot (20)

Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
 
WayOfNoTrouble.pptx
WayOfNoTrouble.pptxWayOfNoTrouble.pptx
WayOfNoTrouble.pptx
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 
Oss貢献超入門
Oss貢献超入門Oss貢献超入門
Oss貢献超入門
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話
 
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向 宗教戦争に疲れたなたに送るGo言語入門
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
基礎線形代数講座
基礎線形代数講座基礎線形代数講座
基礎線形代数講座
 
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 

Similar to ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody

XPで出会った「新たな社会構造」 ver 0.0.1
XPで出会った「新たな社会構造」 ver 0.0.1XPで出会った「新たな社会構造」 ver 0.0.1
XPで出会った「新たな社会構造」 ver 0.0.1
Koichi ITO
 
インタラクションのためのコンピュータビジョンのお仕事
インタラクションのためのコンピュータビジョンのお仕事インタラクションのためのコンピュータビジョンのお仕事
インタラクションのためのコンピュータビジョンのお仕事
Yasunori Ozaki
 
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
asa88
 
REBOKを社内展開する際の障壁
REBOKを社内展開する際の障壁REBOKを社内展開する際の障壁
REBOKを社内展開する際の障壁
mkoszk
 
Ops x meet up v18.12 クラウドサービス運用の裏側
Ops x meet up v18.12 クラウドサービス運用の裏側Ops x meet up v18.12 クラウドサービス運用の裏側
Ops x meet up v18.12 クラウドサービス運用の裏側
Akifumi Niida
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
 
福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)
福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)
福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)
Members_corp
 
Jaws ug yokoyama-16
Jaws ug yokoyama-16Jaws ug yokoyama-16
Jaws ug yokoyama-16
Akifumi Niida
 
Startup react lt
Startup react ltStartup react lt
Startup react lt
Yusuke Mori
 
Startup shikujiri LT
Startup shikujiri LTStartup shikujiri LT
Startup shikujiri LT
Yusuke Mori
 
nalgo-botができるまで
nalgo-botができるまでnalgo-botができるまで
nalgo-botができるまで
TomoakiNakashima
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
Yoshitaka Seo
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
Kouji Matsui
 
NOBUNAGA AI,Tokuhime Bot
NOBUNAGA AI,Tokuhime BotNOBUNAGA AI,Tokuhime Bot
NOBUNAGA AI,Tokuhime Bot
Tajima Takumi
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
 
20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove
Takao Oyobe
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
Koichi ITO
 
jOOQの紹介
jOOQの紹介jOOQの紹介
jOOQの紹介
Takuya Kitamura
 
俺 と ご褒美 Bot
俺 と ご褒美 Bot俺 と ご褒美 Bot
俺 と ご褒美 Bot
Masayuki KaToH
 

Similar to ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody (20)

XPで出会った「新たな社会構造」 ver 0.0.1
XPで出会った「新たな社会構造」 ver 0.0.1XPで出会った「新たな社会構造」 ver 0.0.1
XPで出会った「新たな社会構造」 ver 0.0.1
 
インタラクションのためのコンピュータビジョンのお仕事
インタラクションのためのコンピュータビジョンのお仕事インタラクションのためのコンピュータビジョンのお仕事
インタラクションのためのコンピュータビジョンのお仕事
 
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
触ってみよう! Robotics Studio -レゴマインドストームRCXを動かしてみる
 
REBOKを社内展開する際の障壁
REBOKを社内展開する際の障壁REBOKを社内展開する際の障壁
REBOKを社内展開する際の障壁
 
Ops x meet up v18.12 クラウドサービス運用の裏側
Ops x meet up v18.12 クラウドサービス運用の裏側Ops x meet up v18.12 クラウドサービス運用の裏側
Ops x meet up v18.12 クラウドサービス運用の裏側
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
 
福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)
福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)
福岡Meetup/(カラビナテクノロジー株式会社:藤村賢志)
 
Jaws ug yokoyama-16
Jaws ug yokoyama-16Jaws ug yokoyama-16
Jaws ug yokoyama-16
 
Startup react lt
Startup react ltStartup react lt
Startup react lt
 
Startup shikujiri LT
Startup shikujiri LTStartup shikujiri LT
Startup shikujiri LT
 
nalgo-botができるまで
nalgo-botができるまでnalgo-botができるまで
nalgo-botができるまで
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
 
NOBUNAGA AI,Tokuhime Bot
NOBUNAGA AI,Tokuhime BotNOBUNAGA AI,Tokuhime Bot
NOBUNAGA AI,Tokuhime Bot
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
 
20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
jOOQの紹介
jOOQの紹介jOOQの紹介
jOOQの紹介
 
俺 と ご褒美 Bot
俺 と ご褒美 Bot俺 と ご褒美 Bot
俺 と ご褒美 Bot
 

More from azuma satoshi

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)
azuma satoshi
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptx
azuma satoshi
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
azuma satoshi
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
azuma satoshi
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
azuma satoshi
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 opening
azuma satoshi
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposal
azuma satoshi
 
Chibapm01 lt
Chibapm01 ltChibapm01 lt
Chibapm01 lt
azuma satoshi
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解する
azuma satoshi
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
azuma satoshi
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向
azuma satoshi
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynote
azuma satoshi
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
azuma satoshi
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talk
azuma satoshi
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynote
azuma satoshi
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynote
azuma satoshi
 
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
azuma satoshi
 

More from azuma satoshi (20)

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptx
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
 
L tthon
L tthonL tthon
L tthon
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 opening
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposal
 
Chibapm01 lt
Chibapm01 ltChibapm01 lt
Chibapm01 lt
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解する
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynote
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talk
 
PSGIへの誘い
PSGIへの誘いPSGIへの誘い
PSGIへの誘い
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynote
 
Hachiojipm 14 LT
Hachiojipm 14 LTHachiojipm 14 LT
Hachiojipm 14 LT
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynote
 
大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向大ざっぱにオブジェクト指向
大ざっぱにオブジェクト指向
 

Recently uploaded

MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
TsuyoshiSaito7
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
Tatsuya Ishikawa
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
TsuyoshiSaito7
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
shogotaguchi
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
Hironori Washizaki
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
Tetsuya Nihonmatsu
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
Takuya Minagawa
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
iPride Co., Ltd.
 
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
company21
 

Recently uploaded (10)

MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツールMOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
MOSHI: 革新的な音声AI QAIが開発した次世代のコミュニケーションツール
 
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
2024/07/04 Blazor+ローコードで実現する.NET資産のモダナイズ
 
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
【GPT4-o越えのリアルタイム会話AI】kyutai labsのMoshiデモ動画を解説
 
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
「福利厚生をコストから投資へ」AIで社員1人ひとりに最適な支援を届ける 全く新しいカフェテリアプラン
 
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
「スマートエスイー」におけるスマートシステム&サービスおよびDX推進人材の産学連携育成ならびに参照モデルに基づく育成プログラム分析
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
能動的サイバー防御の時代へ - GPTsから垣間見えた私達と未来のAIについて
 
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
 
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
 
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
VRM*VOICEVOX*GoogleCloudを使って自分だけのAIパートナーを作る話
 

ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody