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

AI駆動開発を実現するためのアーキテクチャと取り組み

 AI駆動開発を実現するためのアーキテクチャと取り組み

AI駆動開発を実現するためのアーキテクチャと取り組み

【概要】
「人間がやるべきことを見極め、それ以外は完全自動化を目指せ」をテーマに、株式会社フライルで実践しているAI駆動開発の全貌を解説した資料です。

ソフトウェア開発の工程を「ドメイン理解」「要件定義・設計」「実装」の3つに分解し、特に人間が注力すべき領域(ドメイン理解)と、徹底的にAIによる自動化を目指す領域(実装)の役割分担について深掘りします。

Cursor、Claude Code、Devin (DeepWiki) などの最新AIツールを組み合わせた実装フローだけでなく、AIコーディング特有の課題である「コードの無秩序化」や「意図しないリグレッション」を防ぐための、静的検査やテストアーキテクチャの具体的な設計についても共有します。

【目次・主なトピック】

■ ソフトウェア開発における人間とAIの役割
・ ソフトウェアの複雑さの核心は「ドメイン」にある
・ ドメイン理解は人間のみが可能な領域
・ 実装フェーズは徹底的な自動化を目指す

■ AI駆動開発の実践フロー
・ 方針検討から実装まで:DeepWiki, Cursor, VIBE-KANBANの活用
・ AIに実装を任せるためのプロセス設計

■ AIコーディングの課題と解決策
1. コードの秩序を維持する「徹底的な静的検査」
・ TypeScript, ESLint, Oxlint, Knip, publint等による品質ゲート
・ 自社特有のルールを強制するカスタムESLintルールの運用

2. 意図しないリグレッションを防ぐ「テスト戦略」
・ モックを極力排除した結合テストの実践
・ AIによるテストコード生成と保守

3. AIによるコードレビュー体制
・ Codex:ロジックや技術的詳細のレビュー
・ Claude Code:プロジェクト方針(AGENTS.md)に基づいた設計レビュー
・ Security Reviewer:脆弱性診断

■ 成果
・ 大規模なデータ構造改革におけるバグゼロリリースの事例

【登壇者】
baseballyama (山下 裕一朗)
株式会社フライル ソフトウェアエンジニア
Svelte コアチームメンバー

【キーワード】
AI駆動開発, 生成AI, GitHub Copilot, Cursor, Claude Code, Devin, TypeScript, ESLint, テスト自動化, アーキテクチャ

Avatar for Yuichiro Yamashita

Yuichiro Yamashita

November 20, 2025
Tweet

More Decks by Yuichiro Yamashita

Other Decks in Technology

Transcript

  1. 横断で使うもの
 実装支援
 壁打ち・相談
 最近のAIツール振り返り (感覚)
 Gemini
 ChatGPT
 Codex
 Claude Code


    コードレビュー
 Codex
 Claude Code
 その他
 (自社では今は使っていないもの)
 GitHub Copilot

  2. そもそもソフトウェア開発とはなんなのか
 There are many things that make software development complex.

    
 But the heart of this complexity is the essential intricacy of the problem domain itself.
 If you’re trying to add automation to complicated human enteprise, then your software cannnot dodge this complexity — all it can do is control it. 
 
 ソフトウェア開発の複雑さの核心は、自動化しようとして いる対象領域(ドメイン)そのものが持つ本質的な複雑さ にあります。ソフトウェアは、その複雑さから逃れることは できず、それをうまく制御(コントロール)することしかでき ないのです。

  3. baseballyama 自己紹介
 • baseballyama (山下 裕一朗)
 • 株式会社フライル
 ◦ ソフトウェアエンジニア


    
 • Svelte コアチームメンバー
 ◦ 元々は Svelte コンパイラを担当
 ◦ 最近は主に eslint-plugin-svelte や svelte-eslint-parser を担当
 
 本日スポンサーブースを出しています! 
 ぜひお話しましょう! 
 便利なポーチが貰えます。 

  4. そもそもソフトウェア開発とはなんなのか
 There are many things that make software development complex.

    
 But the heart of this complexity is the essential intricacy of the problem domain itself.
 If you’re trying to add automation to complicated human enteprise, then your software cannnot dodge this complexity — all it can do is control it. 
 
 ソフトウェア開発の複雑さの核心は、自動化しようとして いる対象領域(ドメイン)そのものが持つ本質的な複雑さ にあります。ソフトウェアは、その複雑さから逃れることは できず、それをうまく制御(コントロール)することしかでき ないのです。

  5. そもそもソフトウェア開発とはなんなのか
 There are many things that make software development complex.

    
 But the heart of this complexity is the essential intricacy of the problem domain itself. 
 If you’re trying to add automation to complicated human enteprise, then your software cannnot dodge this complexity — all it can do is control it. 
 
 ソフトウェア開発の複雑さの核 心は、自動化しようとしている 対象領域(ドメイン)そのものが 持つ本質的な複雑さにありま す。ソフトウェアは、その複雑さから逃れることはできず、それをうまく制御(コント ロール)することしかできないのです。

  6. 通話ログを
 登録
 ラベルを付与
 (例: 製品区分)
 通話内容を要約
 顧客から受電
 ラベルを頼りに
 検索・集計
 個別のデータを


    深掘り
 レポートを作成し
 社内に共有
 現状のドメインを理解する
 データ発生
 (コールセンター)
 加工
 (コールセンター)
 連携
 (API連携)
 分析
 (製品部門)
 共有
 (製品部門 → 全社)
 ⚠ 非常に単純化しています 

  7. ⚠ 非常に単純化しています 
 通話ログを
 登録
 ラベルを付与
 (例: 製品区分)
 通話内容を要約
 顧客から受電


    ラベルを頼りに
 検索・集計
 個別のデータを
 深掘り
 レポートを作成し
 社内に共有
 現状のドメインを理解する
 データ発生
 (コールセンター)
 加工
 (コールセンター)
 連携
 (API連携)
 分析
 (製品部門)
 共有
 (製品部門 → 全社)
 
 • 入力負荷が高い
 • 入力品質が属人化している
 
 💡課 題
 
 • 新しい軸でラベルづけができない (工数的に)
 • 人間では深掘りに限界がある (工数的に)
 • 上記に起因して効果的なレポートが作成できない
 💡課 題

  8. 弊社の実装フロー
 方針検討
 既存コードを前提とした 
 実装方針を検討する。 
 必要に応じてチームで検討する。 
 Gemini
 ChatGPT


    Claude Code 
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code 
 Vitest
 Knip
 レビュー
 AIによるレビュー 
 必要に応じて人間レビュー 
 Claude Code 
 Codex

  9. 弊社の実装フロー
 方針検討
 既存コードを前提とした 
 実装方針を検討する。 
 必要に応じてチームで検討する。 
 Gemini
 ChatGPT


    Claude Code 
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code 
 Vitest
 Knip
 レビュー
 AIによるレビュー 
 必要に応じて人間レビュー 
 Claude Code 
 Codex

  10. 弊社の実装フロー
 方針検討
 既存コードを前提とした 
 実装方針を検討する。 
 必要に応じてチームで検討する。 
 Gemini
 ChatGPT


    Claude Code 
 • 一般的な技術調査や壁打ちに使用
 • 既存のコードベースに対する調査に使用
 • 具体的な実装方針検討に使用

  11. 弊社の実装フロー
 方針検討
 既存コードを鑑みた 
 実装方針を検討する。 
 必要に応じてチームで検討する。 
 Gemini
 ChatGPT


    Claude Code 
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code 
 Vitest
 Knip
 レビュー
 AIによるレビュー 
 必要に応じて人間レビュー 
 Claude Code 
 Codex

  12. AIコーディングの課題
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code

    
 Vitest
 Knip
 • 実装を担当
 
 • コードが無秩序になりメンテナンス不能になる 
 • 人間が完全に把握しきれなくなり影響範囲を読みきれなくなる 
 💡AIコーディングの課題 

  13. AIコーディングの課題を乗り越える
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code

    
 Vitest
 Knip
 • 実装を担当
 • コードの秩序を維持する
 • 意図しないリグレッションを防ぐ

  14. AIコーディングの課題を乗り越える
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code

    
 Vitest
 Knip
 • 実装を担当
 • コードの秩序を維持する
 • 意図しないリグレッションを防ぐ

  15. 前提知識
 • ESLint 
 JavaScript 製の静的検査ツール。プラグインを使用することで、 JavaScript 以外の コードに対しても静的検査を実行できる。
 (例:

    TypeScript, Vue, Svelte, YAML, JSON)
 • Oxlint 
 ESLint 互換を目指した Rust 製静的検査ツール。
 ESLint と比較して 50倍から100倍高速。

  16. 自社特有のルール例
 • require-hono-request-validation 
 Hono (Webフレームワーク) の req.param / query

    / json / formData 直接取得を全部 禁止して req.valid(...) 経由に統一、ルーターハンドラの第1引数をASTでたどって自動 判定する。
 • no-unsafe-redirect 
 Hono / SvelteKit (UIフレームワーク) 双方の redirect 呼び出しを型情報込みで解析し、ユー ザー入力由来・外部URL・定数でない変数を報告。Open Redirect耐性をLintで網羅的に守る。 
 • void-promise-without-catch 
 void someAsync() パターンを解析して、catch() もしくは try/catch 無しの素のPromise を検出。未捕捉例外をLintで潰して適切なエラーハンドリングを強制する。 

  17. 自社特有のルール例
 • require-hono-request-validation 
 Hono (Webフレームワーク) の req.param / query

    / json / formData 直接取得を全部 禁止して req.valid(...) 経由に統一、ルーターハンドラの第1引数をASTでたどって自動 判定する。
 • no-unsafe-redirect 
 Hono / SvelteKit (UIフレームワーク) 双方の redirect 呼び出しを型情報込みで解析し、ユー ザー入力由来・外部URL・定数でない変数を報告。Open Redirect耐性をLintで網羅的に守る。 
 • void-promise-without-catch 
 void someAsync() パターンを解析して、catch() もしくは try/catch 無しの素のPromise を検出。未捕捉例外をLintで潰して適切なエラーハンドリングを強制する。 
 合計で50個以上の 
 自社特有ルールを 
 運用しています。 

  18. AIコーディングの課題を乗り越える
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code

    
 Vitest
 Knip
 • 実装を担当
 • コードの秩序を維持する
 • 意図しないリグレッションを防ぐ

  19. 全体を n多重で実行 
 テストアーキテクチャ
 
 • データベースの初期データを定義 
 初期化
 


    • APIを実行 (Hono の testClient を使用)
 実行
 
 • APIレスポンスを検証 
 • データベースを検証 
 検証
 
 • データベースをロールバック 
 後処理

  20. 全体を n多重で実行 
 テストアーキテクチャ
 
 • データベースの初期データを定義 
 初期化
 


    • APIを実行 (Hono の testClient を使用)
 実行
 
 • APIレスポンスを検証 
 • データベースを検証 
 検証
 
 • データベースをロールバック 
 後処理
 変更頻度の低い外部IFに対して 
 モックを使用しない 
 結合テストを記述することで 
 変更耐性を確保する 
 (S3などの外部サービス連携部分はモックする) 

  21. 全体を n多重で実行 
 テストアーキテクチャ
 
 • データベースの初期データを定義 
 初期化
 


    • APIを実行 (Hono の testClient を使用)
 実行
 
 • APIレスポンスを検証 
 • データベースを検証 
 検証
 
 • データベースをロールバック 
 後処理
 • 実装を担当
 
 • テストケース設計から実装までAIが実施 
 • テストが通るまでAIが繰り返し修正 
 • 細かなテストケースの重複や欠損は気にしない 
 💡テストはAIが記述 

  22. 弊社の実装フロー
 方針検討
 既存コードを鑑みた 
 実装方針を検討する。 
 必要に応じてチームで検討する。 
 Gemini
 ChatGPT


    Claude Code 
 実装
 実装方針をAIに説明し 
 AIに実装させる。 
 必要に応じて手で修正する。 
 Claude Code 
 Vitest
 Knip
 レビュー
 AIによるレビュー 
 必要に応じて人間レビュー 
 Claude Code 
 Codex

  23. Claude Code Security Reviewer
 検出される脆弱性の種類 
 • インジェクション攻撃:SQL、コマンド、LDAP、XPath、NoSQL、XXE 
 •

    認証・認可:認証破綻、権限昇格、IDOR、ロジックバイパス、セッション問題 
 • データ露出:ハードコードされた秘密情報、機微情報のログ、情報漏えい、PII 取り扱い違反 
 • 暗号化の問題:弱いアルゴリズム、不適切な鍵管理、安全でない乱数生成 
 • 入力バリデーション:未検証入力、不十分なサニタイズ、バッファオーバーフロー 
 • ビジネスロジック欠陥:レースコンディション、TOCTOU 
 • 設定の不備:安全でない初期設定、欠落したセキュリティヘッダー、過度に許可された CORS 
 • サプライチェーン:脆弱な依存関係、タイポスクワッティングリスク 
 • コード実行:デシリアライズによる RCE、pickle インジェクション、eval インジェクション 
 • XSS(クロスサイトスクリプティング):反射型、保存型、DOM ベース 
 引用元: https://github.com/anthropics/claude-code-security-review

  24. そもそもソフトウェア開発とはなんなのか
 There are many things that make software development complex.

    
 But the heart of this complexity is the essential intricacy of the problem domain itself. 
 If you’re trying to add automation to complicated human enteprise, then your software cannnot dodge this complexity — all it can do is control it. 
 
 ソフトウェア開発の複雑さの核 心は、自動化しようとしている 対象領域(ドメイン)そのものが 持つ本質的な複雑さにありま す。ソフトウェアは、その複雑さから逃れることはできず、それをうまく制御(コント ロール)することしかできないのです。

  25. ソフトウェア開発における3つのフェーズ
 ①ドメイン理解
 ②要件定義・設計
 ③実装
 業務を理解する
 IT化する方法を考える
 IT化を実現する
 • 実装は徹底的に自動化を目指す 


    
 • 自動化による以下の懸念に対処する 
 ◦ コードが無秩序になりメンテナンス不能になる 
 ▪ 徹底的な静的検査 
 ◦ 人間が完全に把握しきれなくなり影響範囲を読みき れなくなる 
 ▪ モックを使用しない結合テストを基本とする 
 
 • コードレビューでもAIを活用する