Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オブジェクト指向プログラミングとAI駆動開発

 オブジェクト指向プログラミングとAI駆動開発

2026/08/20、【AI自走環境整備・運用スペシャル #5】にて弊社社員がLT(ライトニングトーク)を発表いたしましたので、こちらに掲載いたします。

More Decks by 燈株式会社(Akari .inc)

Transcript

  1. 自己紹介 Ⓒ Akari Inc. l Confidential 執行役員 DX Solution 事業本部

    VPoE 丸尾 恭四郎 | Kyoshiro Maruo 東京大学大学院情報理工学 修士卒 新卒: エムスリー株式会社 AI・機械学習チーム 2022年: 燈株式会社にジョイン 2026年: 執行役員に就任 得意領域 ・最適化 / データエンジニア / DevOps / MLOps 2
  2. オブジェクト指向プログラミングとは? Ⓒ Akari Inc. l Confidential オブジェクト = 内部状態を外に見せず、「何ができるか」だけを外に約束する 自律した単位

    Alan Kayが提唱した3つの概念 メッセージング 状態の隠蔽と保護 極端な遅延結合 オブジェクト同士の唯一の相互作用手段。相 状態はオブジェクトの内部に閉じ、外から直 その依頼に誰が応えるかは実行時に決まる。 手の内部構造を知らずに「依頼」だけを送る 接読み書きできない。整合性は自分で守る 呼ぶ側は具体的な型に縛られない ※ 原義には「クラス / 継承」という概念は含まれていない 3
  3. オブジェクト指向プログラミングの考え方の変遷 Ⓒ Akari Inc. l Confidential 1972 1980-1990 1998 2003

    Kayがオブジェクト指向プログラ C++ / Java が OOP を「クラス Kay 本人が命名を後悔 — "The Evans『DDD』 振る舞いの集約 ミングを提唱 + 継承」として世界に普及 big idea is messaging." が論点化 メッセージング・隠蔽・遅延結 データ・名前空間・振る舞いを 「objects」という語が本質から モデルはデータスキーマではな 合の3つを中心に class という 1 つの概念に入れた 目を逸らさせた く振る舞いだ、という主張 クラスと継承ベースによる設計に限界が生じた 4
  4. プログラミング言語仕様も継承ベースの考え方から、振る舞いの集約へと変遷 Ⓒ Akari Inc. l Confidential 継承ベースの限界(C++/Java) 振る舞いの集約(Go / Rust)

    • 継承ツリー全体を持ち込まないと再利用できない • Go :interfaceに振る舞いを集約 • 多重継承で共通祖先のメソッドが曖昧になる • Rust :module(名前空間) / trait(振る舞い) に • 親の内部実装変更が派生クラスを予期せず壊す • 現実に一意なカテゴリ階層は存在しない class を解体 継承をベースとする設計に限界があり、振る舞いの集約による設計へと遷移 5
  5. AIコーディング時代の設計 Ⓒ Akari Inc. l Confidential 「AIコーディング時代において、人間の設計の重要性が高まってきている」 設計 = 振る舞いの集約を規定すること

    AIコーディング時代で、振る舞いの集約が規定されていないと... • • ❌ AIコーディングが曖昧な箇所を誤読して誤ったコードを増幅してしまう ❌ 人間が生成物の正しさを判定できない 6
  6. DDDにおけるAI駆動開発 Ⓒ Akari Inc. l Confidential ① 顧客の頭の中 探求すべき「真のドメイン」 ②

    ドメインモデル 振る舞いを自然言語で記述したドメインモデル(mdファイル) ③ 実装 ドメインモデルの振る舞いを実現した実装コード ④ テスト ドメインモデルの振る舞いを検証するテストコード ※ DDDによる開発を想定 7
  7. DDDにおけるAI駆動開発 Ⓒ Akari Inc. l Confidential ① 顧客の頭の中 ドメインモデルの記述のAIによる検証・人間によるレビューが重要 ②

    ドメインモデル ③ 実装 レビュー観点 LLMの習慣 ユビキタス言語の整合 LLMは似た単語を無意識に混ぜてし まう 集約境界の遵守 LLMは短絡的な実装を行ってしまう 境界づけられたコンテクストの分離 LLMはすべてのドメインをまとめて 扱ってしまう ④ テスト 9
  8. DDDにおけるAI駆動開発 Ⓒ Akari Inc. l Confidential ① 顧客の頭の中 実装時のコーディングエージェントは2つ •

    ②→③→④ ◦ ドメインモデルから振る舞いを実装・テストコードを記述する • ④→② ◦ コンテクストがない状態から、ドメインモデルとテストコードの 一致を検証する ② ドメインモデル ③ 実装 テストはあるが契約に紐付かない、実装から自己整合させるだけのテストを排除 ④ テスト 10
  9. まとめ Ⓒ Akari Inc. l Confidential 振る舞いの集約が重要であることは50年前から変わらない Go の interface

    / Rust の trait / DDD は、「振る舞いの集約」 に収束した ドメインモデルの振る舞いの集約をファイルとして残しておく 人間が主にレビューする対象となり、AIエージェントのコンテクストとなり、コーディング精度に大きく影響 ドメインモデルの振る舞いの記述をベースに、テストコードが記述されているかを検証 実装コード自体はコンテクストに含めず、テストコードとドメインモデルの振る舞いの記述のみを比較する 11