Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AIのための特別なアーキテクチャはいらない 0→1開発で実践した設計原則とガードレール
Search
株式会社カミナシ
May 10, 2026
Technology
820
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AIのための特別なアーキテクチャはいらない 0→1開発で実践した設計原則とガードレール
カミナシ Tech Night #3
https://kaminashi.connpass.com/event/387233/
Shimmy
ソフトウェアエンジニア
株式会社カミナシ
May 10, 2026
More Decks by 株式会社カミナシ
See All by 株式会社カミナシ
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
140
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
630
AI時代こそ、スケールしないことをしよう -「作る人」から「なぜ作るか」を考える人へ / Do Things That Don't Scale in the AI Era — From How to Why
kaminashi
1
320
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
370
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
610
Amazon Redshift zero-ETL 統合を活用した軽量なマルチプロダクトデータ可視化基盤 / Lightweight Multi-Product Data Visualization with Amazon Redshift Zero-ETL
kaminashi
0
410
実践 TanStack Start ― 新規プロダクトを開発して確立した、サーバーとクライアント境界の設計パターン / Practical TanStack Start Server-Client Boundary Patterns
kaminashi
3
990
スクラムの中で AI-DLC workflow を 使い始めて3ヶ月の振り返り
kaminashi
0
1.1k
The essence of decision-making lies in primary data
kaminashi
0
1.4k
Other Decks in Technology
See All in Technology
Digitization部 紹介資料
sansan33
PRO
2
7.7k
ハーレムエンジニアリング
kazuma777777
0
190
Kiro Crew入門 - 常駐エージェントの仕組みと使いどころ / Intro to Kiro Crew
k_adachi_01
1
610
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
2
460
DatadogのBits Chatが開発組織にもたらしたもの / What Bits Chat Has Brought Us
sms_tech
1
290
AI時代に、人は何を、どう学ぶのか #pbl_pub / What and How Do We Learn in the AI Era?
takaking22
1
170
Oracle MCP Servers Explained
thatjeffsmith
0
220
2027年のMetricKit
kantacky
0
130
ホームラボ紹介
y_sera15
0
220
AIにブラウザを触らせて、E2EテストをPlaywrightで書く
koji_kawamura
0
190
自宅NWにISR4331を導入してみた話
okaits
0
120
トークンマネジメントでAIにとって働きやすい環境を実現する
hikaruegashira
0
120
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.2k
Claude Code のすすめ
schroneko
67
230k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
It's Worth the Effort
3n
188
29k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Code Review Best Practice
trishagee
74
20k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
Writing Fast Ruby
sferik
630
63k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
480
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Transcript
AIのための特別なアーキテクチャはいらない 0→1開発で実践した設計原則とガードレール カミナシ Tech Night #3
⾃⼰紹介 • 名前: Shimmy • 所属: 株式会社カミナシ ◦ ソフトウェアエンジニア ◦
カミナシで新規プロダクトを開発中 ◦ TanStack Startを使ってFull TypeScriptで開発 • その他: ◦ 最近はポケポケに時間を取られています ◦ AIのお陰で個⼈開発にまた⽕がついて、ゴリゴリコードを書いてます (AIが)
今⽇話すこと 1. AIの⼒を最⼤限引き出す設計条件 2. その設計を決定論的に守らせる仕組み
AIの⼒を最⼤限 引き出す条件
条件1: 関⼼の分離
Feature-First構成 関⼼事でディレクトリを分ける • ある機能を修正したいとき、修正したい箇所がまとまって いると扱いやすい • 1つの関⼼事がすべて1ディレクトリの中にあるのでAIの コンテキストに載せやすい • 並列にAI開発しても関⼼ごと別に分ければコンフリクトし
にくい
結合をバランスさせる 結合を「避ける」のではなく「バランスさせる」 • 「結合の強さ」が⾼いなら「距離」を短く ◦ -> Feature内部は⾼凝集 • 「距離」が⻑いなら「結合」を弱く ◦
-> Feature間は疎結合
Feature内のディレクトリ構成 • domain/ ◦ 純粋関数のみ • infrastructure/ ◦ DBアクセスなどI/O •
server/(api) ◦ オーケストレーション domainとinfrastructureを組み⽴てる • index.ts ◦ Public API 外部に公開するものだけをexport
Featureを横断するケー ス
パターン1: shared/ 複数featureが使う共通ロジックを切り出す • 純粋関数をsrc/shared/lib/に置く • 依存⽅向は常に features/ → shared/
パターン2: routes/ 複数featureを組み合わせるページ • 各featureのPublic APIをimportして統合する • featureは互いの存在を知らない
条件2: 価値の⾼いテスト
テストの4つの柱 『単体テストの考え⽅/使い⽅』より • 退⾏保護: バグを⾒逃さない • リファクタリング耐性: 内部を変えても壊れない • 迅速なフィードバック:
すぐ結果がわかる • 保守しやすさ: テスト⾃体がシンプル
出⼒値ベーステスト • Inputを⼊れてOutputを検証する • 内部実装に依存しない → リファクタリング耐性が⾼い • モック不要でAIに書かせやすい •
テスト実⾏が速い → AIの試⾏錯誤ループが速く回る
domain層の純粋関数 • Inputを受け取り、純粋関数を組み合わせて計算し、 Outputを返す • DB参照なし、副作⽤なし、I/Oなし
domain層の関数のテスト • テストはInputを組み⽴て 関数を呼び、Outputを検証するシンプルなもの • モック不要、DI不要
Functional Core + Imperative Shell I/Oとロジックを分離し、副作⽤を端においやる • Functional Core ◦
domain/ : 純粋関数でビジネスロジック • Imperative Shell ◦ infrastructure/: DBアクセスなどI/O操作 ◦ server/ : API層。組み⽴ててエンドポイントを提供する
設計を決定論的に 守らせる仕組み
なぜ「決定論的」的に守る必要があるか • ルールを教えただけでは守らないことがある • AIの出⼒速度に⼈間のレビューが追いつかない -> 決定論的に守る「ガードレールが必要」
ガードレールの条件 • 決定的であること ◦ AGENT.mdは確率的 → 守られないことがある -> 決定的なシステムが必 要
• 速くフィードバックできること(Shift Left) ◦ AIの試⾏錯誤ループの中でフィードバックしたい
静的解析 dependency-cruiser
dependency-cruiserで設計を強制する import⽂を静的解析して依存関係のルール違反を検出する ツール • 設計思想をdependency-cruiserのルールとする • 新規プロダクトでは12個のルールを定義
ルール定義①: 純粋なドメイン層 domain/からinfrastructure/やserver/をimportす るとエラー
ルール定義②: Feature間の疎結合 同⼀feature内はOK。別featureを直接importするとエラー
ルール定義③: Public API境界 index.tsを通さずにfeature内部を参照するとエラー
その他の静的解析ツール • knip: 未使⽤コードを検出 ◦ AI実装で⽣まれる未使⽤exportやファイルを⾃動検出 • Biome: コード品質を統⼀ ◦
any型禁⽌、⾮nullアサーション禁⽌、awaitされていないPromise検出
Git hooksで統合する
lefthook: コミット前に⾃動で弾く • pre-commit: Biomeのチェック + dependency-cruiser • pre-push: 型チェック
+ knip + テスト
開発フロー アウトプットではなく、プロセスを信頼できるものにす る 1. AIにコードを書かせる 2. git commit a. Biome
+ dependency-cruiser が⾛る b. 設計違反があればエラー c. → AIが⾃動修正 3. git push a. → 型チェック + knip + テスト が⾛る
まとめ
設計条件を振り返る • 関⼼の分離 ◦ 関⼼事ごとにファイルをまとめる ◦ AIのコンテキストに載せやすく、並列開発でもコンフリクトしにくい • 価値の⾼いテスト ◦
domain層を純粋関数で構成し、出⼒値ベースの単体テストを書く ◦ モック不要でリファクタリングに強い。質の⾼いテストを書きやすい構 造が整う • 依存⽅向の決定 ◦ 層ごとのルールを明確にする ◦ AIが迷わず、静的解析で機械的に強制できる
設計を決定論的に守らせる dependency-cruiserで設計思想をガードレールに • domain層から他の層をimportしたらエラー • 別featureを直接importしたらエラー • index.tsを通さずfeature内部を参照したらエラー knip +
Biome も活⽤し、lefthookで確定的に実⾏
良い設計をちゃんと守る
株式会社カミナシ https://kaminashi.jp