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

AIのための特別なアーキテクチャはいらない 0→1開発で実践した設計原則とガードレール

AIのための特別なアーキテクチャはいらない 0→1開発で実践した設計原則とガードレール

カミナシ Tech Night #3
https://kaminashi.connpass.com/event/387233/

Shimmy
ソフトウェアエンジニア

More Decks by 株式会社カミナシ

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 • 名前: Shimmy • 所属: 株式会社カミナシ ◦ ソフトウェアエンジニア ◦

    カミナシで新規プロダクトを開発中 ◦ TanStack Startを使ってFull TypeScriptで開発 • その他: ◦ 最近はポケポケに時間を取られています ◦ AIのお陰で個⼈開発にまた⽕がついて、ゴリゴリコードを書いてます (AIが)
  2. Feature内のディレクトリ構成 • domain/ ◦ 純粋関数のみ • infrastructure/ ◦ DBアクセスなどI/O •

    server/(api) ◦ オーケストレーション domainとinfrastructureを組み⽴てる • index.ts ◦ Public API 外部に公開するものだけをexport
  3. Functional Core + Imperative Shell I/Oとロジックを分離し、副作⽤を端においやる • Functional Core ◦

    domain/ : 純粋関数でビジネスロジック • Imperative Shell ◦ infrastructure/: DBアクセスなどI/O操作 ◦ server/ : API層。組み⽴ててエンドポイントを提供する
  4. ガードレールの条件 • 決定的であること ◦ AGENT.mdは確率的 → 守られないことがある -> 決定的なシステムが必 要

    • 速くフィードバックできること(Shift Left) ◦ AIの試⾏錯誤ループの中でフィードバックしたい
  5. 開発フロー アウトプットではなく、プロセスを信頼できるものにす る 1. AIにコードを書かせる 2. git commit a. Biome

    + dependency-cruiser が⾛る b. 設計違反があればエラー c. → AIが⾃動修正 3. git push a. → 型チェック + knip + テスト が⾛る
  6. 設計条件を振り返る • 関⼼の分離 ◦ 関⼼事ごとにファイルをまとめる ◦ AIのコンテキストに載せやすく、並列開発でもコンフリクトしにくい • 価値の⾼いテスト ◦

    domain層を純粋関数で構成し、出⼒値ベースの単体テストを書く ◦ モック不要でリファクタリングに強い。質の⾼いテストを書きやすい構 造が整う • 依存⽅向の決定 ◦ 層ごとのルールを明確にする ◦ AIが迷わず、静的解析で機械的に強制できる