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
710
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 株式会社カミナシ
運用を犠牲にせずコストを制御し事業成長を支える B2B SaaS ID管理基盤におけるS3 Tableのログストレージ活用
kaminashi
1
100
AI時代こそ、スケールしないことをしよう -「作る人」から「なぜ作るか」を考える人へ / Do Things That Don't Scale in the AI Era — From How to Why
kaminashi
1
190
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
220
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
390
Amazon Redshift zero-ETL 統合を活用した軽量なマルチプロダクトデータ可視化基盤 / Lightweight Multi-Product Data Visualization with Amazon Redshift Zero-ETL
kaminashi
0
300
実践 TanStack Start ― 新規プロダクトを開発して確立した、サーバーとクライアント境界の設計パターン / Practical TanStack Start Server-Client Boundary Patterns
kaminashi
3
860
スクラムの中で AI-DLC workflow を 使い始めて3ヶ月の振り返り
kaminashi
0
930
The essence of decision-making lies in primary data
kaminashi
0
1.3k
JAWS DAYS 2026 AWS知識・技術力を使って隠された旗をゲットせよ!〜出張版「ごーとんカップ」〜 解説編
kaminashi
0
1.1k
Other Decks in Technology
See All in Technology
QAタスクをスキル化したいときに考えること
aomoriringo
0
120
現場で使える AWS DevOps Agent 活用ノウハウ - Release Management 機能の検証結果を添えて / AWS DevOps Agent Release Management and Know-How
kinunori
4
710
人とエージェントが高め合う協業設計
kintotechdev
0
1.1k
文字起こし基盤の信頼性
abnoumaru
0
150
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
310
テックカンファレンス三大ステークホルダーの文化人類学 ─ 違いを認め合う関係性作り
bash0c7
4
1k
書籍セキュアAPIについて
riiimparm
0
380
NYC Summit 2026 におけるAmazon Bedrock AgentCore のアップデート
ren8k
1
260
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
1.2k
AI研修(Day2)【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
1.4k
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
150
Escolhendo LLMs na Prática: Lições Reais em Busca Agêntica no Mercado Livre —TDC 2026 Floripa
jpbonson
0
100
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Writing Fast Ruby
sferik
630
63k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
330
Prompt Engineering for Job Search
mfonobong
0
380
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
380
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
230
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
370
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