Slide 1

Slide 1 text

新規案件の⽴ち上げ専⾨チームから⾒た AI駆動開発の始め⽅ ⾦城秀哉 リテールアプリ共創部マッハチーム

Slide 2

Slide 2 text

⾃⼰紹介 2 ⾦城秀哉(Shuya Kinjo) ● 所属 ○ リテールアプリ共創部マッハチーム ● 役割 ○ サーバーサイドエンジニア ● 興味‧関⼼ ○ ⽣成AI、AI駆動開発 ○ Dev tools(IaC, CI/CD) ● 好きなAIコーディングエージェント ○ Cursor Agent、 Claude Code @joe-king-sh

Slide 3

Slide 3 text

リテールアプリ共創部 マッハチーム 3 プロダクト開発の 「立ち上げ専門チーム」 です。 0→1のアプリ開発 をAI駆動で爆速開発 しています

Slide 4

Slide 4 text

AI駆動でスプリント1から初速をマッハに 4

Slide 5

Slide 5 text

AI駆動でスプリント1から初速をマッハに 5 AI駆動開発前提で スプリント0の準備が⼤事

Slide 6

Slide 6 text

AI駆動開発を始める課題 6 1. AI関連のツールが多すぎて何を使えば良いかわからない 2. AI関連のアップデートが速すぎて追いきれない 3. セキュリティ的に不安があり踏み切れない 4. AIを導⼊してみたが思うように効率が上がらない 🤯

Slide 7

Slide 7 text

この40分でお話しすること 7 実案件で得られた知⾒をベースに以下について話します 1. AI駆動開発のスプリント0でするべきこと 2. AI駆動開発のつまずきポイントと回避⽅法

Slide 8

Slide 8 text

このセッションのゴール 8 ● AI駆動開発のツールチェーンの選び⽅‧セットアップを知る ● AI駆動開発前提でのプロジェクトの開始⽅法を知る ● 実践的なAIコーディングのテクニックを知る ● AIコーディングエージェントが持つ⼒を引き出せるようになる AI駆動開発を何から始めたら良いかわからない⽅ 開発にAIを導⼊したが思うように成果が出ない⽅

Slide 9

Slide 9 text

AI駆動開発のスプリント0でするべきこと

Slide 10

Slide 10 text

スプリント0でするべきこと 10 本格開発に⼊る前の期間で以下のような準備を進めます

Slide 11

Slide 11 text

AI駆動開発のスプリント0でするべきこと 11 1. 使⽤するAIコーディングツールの選定 2. ガードレールの設定 3. プロジェクトのボイラープレート作成 4. AIによるPullRequestレビューの整備

Slide 12

Slide 12 text

AI駆動開発のスプリント0でするべきこと 12 1. 使⽤するAIコーディングツールの選定 2. ガードレールの設定 3. プロジェクトのボイラープレート作成 4. AIによるPullRequestレビューの整備

Slide 13

Slide 13 text

様々なAIコーディングツール GitHub Copilot Cursor Kiro Windsurf Cline Claude Code Amazon Q Developer Gemini CLI Devin 13

Slide 14

Slide 14 text

AIコーディングツールを選ぶ観点 14 1. インタフェース 2. 開発スタイル 3. 同期‧⾮同期 4. 使⽤したいモデル

Slide 15

Slide 15 text

インタフェースで選ぶ: エディタ型 GitHub Copilot Cursor Kiro Windsurf Cline Claude Code Amazon Q Developer CLI Gemini CLI Devin 15

Slide 16

Slide 16 text

エディタ型の特徴 16 1. コードの先読み補完(Tab補完)が可能 2. インタラクティブに細かい指⽰が出せる 3. これまでの開発の延⻑で⼿が出しやすい GitHub Copilot Cursor Kiro Windsurf Cline ( )

Slide 17

Slide 17 text

1. VSCodeフォークのAIネイティブな統合開発環境 a. VSCode拡張機能がそのまま使える 2. AI前提でエディタの機能が組まれており、開発 プロセスの中に⾃然にAIが統合されている 3. Cursor Tabがとにかく強⼒ Cursor 17

Slide 18

Slide 18 text

Cursorの主要機能 18 1. Cursor Tab a. 挿⼊するコードの先読み補完だけでなく、カーソル 周辺、離れた箇所の変更‧削除についても提案 2. インライン編集(Cmd+K) a. 選択範囲やファイルに対して直接細かな指⽰出し 3. Cursor Chat a. ⾃然⾔語でAIと対話しながら開発‧デバッグ‧調査

Slide 19

Slide 19 text

インタフェースで選ぶ: CLI型 GitHub Copilot Cursor Kiro Windsurf Cline Claude Code Amazon Q Developer CLI Gemini CLI Devin 19

Slide 20

Slide 20 text

CLI型の特徴 20 1. 開発者が好きなエディタを使⽤できる(Vim,Emacsなど) 2. ⼀度に⼤きなタスクをこなせる 3. GUIを持たずリモートで実⾏しやすい Claude Code Amazon Q Developer CLI Gemini CLI Cursor CLI

Slide 21

Slide 21 text

1. Anthropic社純正でClaudeモデルと統合された CLI型AIコーディングエージェント 2. Claude CodeのVS Code 拡張を組み合わせると エディタ上のコンテキスト情報も収集可能 3. VS Code拡張によるエディタ統合と使い放題プ ランにより⼈気が⾼まる Claude Code 21

Slide 22

Slide 22 text

インタフェースで選ぶ: Webサービス型 GitHub Copilot Cursor Kiro Windsurf Cline Claude Code Amazon Q Developer CLI Gemini CLI Devin 22

Slide 23

Slide 23 text

Webサービス型の特徴 23 1. Webブラウザだけで⾃然⾔語でUIを構築可能 2. エンジニア以外でも気軽に利⽤できる 3. モックアップやプロトタイプ作成⽤途で使⽤ v0 by Vercel Bolt.new

Slide 24

Slide 24 text

AIコーディングツールを選ぶ観点 24 1. インタフェース 2. 開発スタイル 3. 同期‧⾮同期 4. 使⽤したいモデル

Slide 25

Slide 25 text

開発スタイルで選ぶ: 仕様駆動開発 GitHub Copilot Cursor Kiro Windsurf Cline Claude Code Amazon Q Developer CLI Gemini CLI Devin 25

Slide 26

Slide 26 text

1. AWSが提供するVS CodeフォークのAIエディタ 2. 要件定義‧設計‧TODOリストの作成を特別な 指⽰なしに⾏う「Specモード」を搭載 3. 現時点では「仕様駆動開発」をネイティブにサ ポートする唯⼀のAIエディタ Kiro 26

Slide 27

Slide 27 text

1. AWSが提供するVS CodeフォークのAIエディタ 2. 要件定義‧設計‧TODOリストの作成を特別な 指⽰なしに⾏う「Specモード」を搭載 3. 現時点では「仕様駆動開発」をネイティブにサ ポートする唯⼀のAIエディタ Kiro 27 仕様駆動のアイデアは他のツールでも実践可能

Slide 28

Slide 28 text

AI⽀援型テスト駆動開発フレームワーク「Tsumiki」 28 1. 「仕様駆動」と「TDD」の思想を Claude Codeのカスタムスラッ シュコマンドとして実装 2. Gemini CLIで動かす試みも DevelopersIO - AI 支援型テスト駆動開発 フレームワークの Tsumiki を Gemini CLI で動かせるようにしてみた Claude Code Gemini CLI

Slide 29

Slide 29 text

AIコーディングツールを選ぶ観点 29 1. インタフェース 2. 開発スタイル 3. 同期‧⾮同期 4. 使⽤したいモデル

Slide 30

Slide 30 text

同期型‧⾮同期型で選ぶ 30 1. 同期型の特徴 a. 1チケットをAIエージェントとペアプロして進める b. AIエージェントの仕事を細かく管理‧制御が可能 2. ⾮同期型の特徴 a. チケットをAIに丸投げするイメージ b. AIエージェントの成果は作業が完了するまで不明 c. 複数のタスクを並列でAIに依頼可能

Slide 31

Slide 31 text

同期型‧⾮同期型で選ぶ: ⾮同期型 GitHub Copilot Cursor (Background Agent) Kiro Windsurf Cline Claude Code Amazon Q Developer CLI Gemini CLI Devin 31

Slide 32

Slide 32 text

Claude Code GitHub Actions 32 1. GitHub Actions上でClaude Codeを動かす仕組み 2. 任意のPull RequestやIssueで@claudeメンショ ンすると、ClaudeCodeが起動する 3. Issueを元に開発からPR作成までを⾃動化した り、PRレビュー等を⾏う 4. Claudeを利⽤していると導⼊が容易

Slide 33

Slide 33 text

AIコーディングツールを選ぶ観点 33 1. インタフェース 2. 開発スタイル 3. 同期‧⾮同期 4. 使⽤したいモデル

Slide 34

Slide 34 text

使⽤できるモデルに合わせて選ぶ GitHub Copilot Cursor Kiro Windsurf Cline Claude Code Amazon Q Developer Gemini CLI Devin 34 Claudeのみ Geminiのみ 柔軟に選択可能 柔軟に選択 Claudeのみ Claudeのみ

Slide 35

Slide 35 text

35 ⼀⻑⼀短があって何に決めればいい‧‧?🤔

Slide 36

Slide 36 text

どれか⼀つに絞らなくて良い 36 CursorにClaude CodeのVSCode拡張を⼊れて併⽤

Slide 37

Slide 37 text

どれか⼀つに絞らなくて良い 37 タスクに応じてCursorとClaude Codeを使い分け 1. Cursor ○ AIエージェントを細かく制御したい時 ■ 複雑な業務ロジックの実装やリファクタリング ○ ⾃然⾔語で指⽰するよりも直接直した⽅が速い時 ■ AIエージェントが書いたコードをCursor Tabで⼿直し 2. Claude Code ○ 少し⼤きめでも雑な指⽰で完遂してくれそうなタスク ○ Pull RequestのAIレビュー ○ 雑作業の効率化(GitやGitHubの操作)

Slide 38

Slide 38 text

チームで統⼀もしなくて良い 38 移り変わりが本当 に速いので、チー ムメンバーで⾊々 と試し情報収集す るフェーズ 引⽤: AI駆動開発がもたらす⾰新と実践

Slide 39

Slide 39 text

AI駆動開発のスプリント0でするべきこと 39 1. 使⽤するAIコーディングツールの選定 2. ガードレールの設定 3. プロジェクトのボイラープレート作成 4. AIによるPullRequestレビューの整備

Slide 40

Slide 40 text

ガードレールの設定で押さえておきたいこと 40 1. データ使⽤ポリシーの確認 2. AIに与える権限の制御 3. 課⾦上限の設定

Slide 41

Slide 41 text

データ使⽤ポリシー 41 AIサービス事業者に送信されるコードやプロンプトの使⽤⽅法と保持期間を確認する ⼊⼒したプロンプトやAIが読み取ったコードについて、 ● どのようにサーバーに送信されるのか ● サーバー側でどう使われ、いつまで保持されるのか 扱いはAIサービス事業者によって異なる

Slide 42

Slide 42 text

データ使⽤ポリシー: Cursorの場合 42 コードデータは、Cursor のすべての AI 機能を実行するために当社のサーバーに送 信されます(「AI リクエスト」セクションを参照)。また、プライバシーモードのユーザー のコードデータは永続化されません (「プライバシーモード保証」セクションを参照)。 引⽤: Cursor ドキュメント - Security Teamsプラン($40/⽉)以上で 組織のプライバシーモードを強制

Slide 43

Slide 43 text

データ使⽤ポリシー: Claude Codeの場合 43 デフォルトでは、 AnthropicはClaude Codeに送信されるコードやプロンプトを使 用して生成モデルをトレーニングしません。 私たちはあなたのデータをどのように使用するかについて完全に透明性を保つことを 目指しています。製品やサービスの改善のためにフィードバックを使用することがあり ますが、Claude Codeからのフィードバックを使用して生成モデルをトレーニングする ことはありません。 引⽤: Anthropic Claude Code - データ使⽤

Slide 44

Slide 44 text

データ使⽤ポリシー: Claude Codeの場合 44 本日ポリシーがアップデートさ れ、オプトアウトしないと入力 データが学習に使用されるよ うに変更されました。 引⽤: Updates to Consumer Terms and Privacy Policy

Slide 45

Slide 45 text

ガードレールの設定で押さえておきたいこと 45 1. データ使⽤ポリシーの確認 2. AIに与える権限の制御 3. 課⾦上限の設定

Slide 46

Slide 46 text

AIに与える権限を制御 46 AIのアクセス可能な範囲や実⾏コマンドを制御しないと起きる問題 ● パスワードやAPIキー、秘密鍵などの秘匿情報が流出 ● ⼤切なファイルをAIが削除する ○ $ rm -rf / で環境⾃体を破壊された話も 😨

Slide 47

Slide 47 text

アクセス範囲の制御: Cursorの場合 47 Cursorのグローバル設定で制限する デフォルトで制限されている例 ● 環境ファイル ○ **/.env, **/.env.* ● 認証情報 ○ **/credentials.json, **/secrets.json ● キー ○ **/*.key, **/*.pem, **/id_rsa

Slide 48

Slide 48 text

● .cursorignore ファイル指定した対象が以下から除外 ○ コードベースのインデックス化 ○ Tab‧インライン編集‧Chatの編集 ○ @シンボル検索 ● デフォルトで .gitignore ファイルに加え、 .cursorindexignore ファ イルで指定した対象がコードベースのインデックス化から除外 ■ セキュリティよりもパフォーマンス⽬的 アクセス範囲の制御: Cursorの場合 48 .ignoreファイルでプロジェクト毎に制限する

Slide 49

Slide 49 text

実⾏可能コマンドの制御: Cursorの場合 49 ● Ask Every Time ○ 全てユーザーに確認してから実⾏ ● Use Allowlist ○ allowリストで許可したコマンドだけ実⾏可能 ● Run Everything ○ 基本全て実⾏可能、denyリストで実⾏禁⽌コマンドを指定 Auto-RunモードでAIが⾃動実⾏できるコマンドを指定する

Slide 50

Slide 50 text

● settings.json ○ Git管理推奨 ○ 事前に設定しチームで共有 ● settings.local.json ○ Git管理外 ○ 個⼈で管理したい設定 Claude Codeの場合 50 allow, ask, denyリストでアクセス範囲と実⾏可能コマンドを両⽅指定 { "permissions": { "allow": [ "Bash(npm run lint) ","Bash(npm run test) ", "Read(~/.zshrc)" ], "deny": [ "Bash(rm -rf)", "Read(./.env)", "Read(./secrets/**) " ] } }

Slide 51

Slide 51 text

指定した設定が必ず効くわけではないため注意 51 セキュリティ: APIキー、認証情報、シークレットへのアクセスを制限します。Cursorは 無視されたファイルをブロックしますが、 LLMの予測不可能性により完全な保護は 保証されません。 引⽤: Cursor ドキュメント - ファイルを無視する データ使⽤ポリシーと 環境分離(Docker内で実⾏など)を併⽤する

Slide 52

Slide 52 text

ガードレールの設定で押さえておきたいこと 52 1. データ使⽤ポリシーの確認 2. AIに与える権限の制御 3. 課⾦上限の設定

Slide 53

Slide 53 text

AIコーディングツールの料⾦プラン 53 1. APIキー利⽤ ○ モデルプロバイダーが払い出したAPIキーを設定して使⽤ ○ 1⽇で簡単に数⼗ドル溶けることも 2. サブスクリプション利⽤ ○ 定額で使い放題になるプラン ○ ⼀部モデル、機能は追加料⾦がかかるため注意 チーム開発で⽇常的に利⽤する場合 サブスクリプション利⽤を推奨

Slide 54

Slide 54 text

従量課⾦に上限を設定する 54 AIツールの利⽤制限はそのまま開発⽣産性の低下に繋がる 開発⽣産性を維持しつつ意図しない出費を避けるため、予算上限を設定する

Slide 55

Slide 55 text

従量課⾦モデルの料⾦体系を理解する 55 例) Claude Opus 4.1 はClaude Sonnet 4 の約5倍のコスト⽐

Slide 56

Slide 56 text

従量課⾦モデルの料⾦体系を理解する 56 例) o3-proはGPT-5の16倍(Input)、8倍(Output)のコスト⽐

Slide 57

Slide 57 text

利⽤可能なモデルを予め制限する 57 Cursor Settingsから利⽤できる モデルのON/OFFを指定 (組織管理は今のところできない)

Slide 58

Slide 58 text

AI駆動開発のスプリント0でするべきこと 58 1. 使⽤するAIコーディングツールの選定 2. ガードレールの設定 3. プロジェクトのボイラープレート作成 4. AIによるPullRequestレビューの整備

Slide 59

Slide 59 text

AIのコード品質を上げるためのボイラープレート 59 ● 従来のスプリント0でも技術選定や開発の基盤構築を実施する ● AIが⽣成するコードの品質を上げるためにしている⼯夫を紹介 ○ ⼀通りのリファレンス実装 ○ ディレクトリ構成 ○ Lintルールの整備 ○ AIを制御するRulesの管理

Slide 60

Slide 60 text

⼀通りのリファレンス実装 60 ● 0から⾃然⾔語で技術スタックやアーキテクチャを伝えて、思い通 りのコードをAIに書かせることは実質不可能 ● ⼀貫性のある既存コードが⼀番の良質なコンテキスト情報 ○ 1画⾯、1API、⾃動テスト(単体、結合、E2E)、IaC、CI/CD を事前に整備しておく ● マッハチームでは標準化したボイラープレートをチームで継続的 にメンテナンス

Slide 61

Slide 61 text

AIにコンテキストを与えやすいディレクトリ構成 61 フィーチャーベース レイヤーベース src/ ├── features/ │ ├── products/ │ │ ├── domain/ │ │ ├── use-cases/ │ │ ├── infrastructure/ │ │ └── presentation/ │ └── orders/ │ ├── domain/ │ ├── use-cases/ │ ├── infrastructure/ │ └── presentation/ └── shared src/ ├── domains/ │ ├── entities/ │ └── repositories/ ├── use-cases/ │ ├── products/ │ └── orders/ ├── infrastructure/ │ ├── repositories/ └── presentation/ ├── controllers/ └── middleware/ VS

Slide 62

Slide 62 text

@シンボルでコンテキストの与えやすさの違い 62 フィーチャーベース レイヤーベース 「products」を参考にしながら、新機能「events」を追加する場合を考える ● @domains/entities/products ● @domains/repositories/products ● @use-case/products ● @infrastructure/repositories/products ● @features/products こちらを採⽤

Slide 63

Slide 63 text

AIを制御するルールの整備 63 AIが書きがちな良くないコード(以下はTypeScriptの例) ● 静的解析結果のエラーを握りつぶしている ● 既存コードのディレクトリ、モジュール間の依存関係を無視

Slide 64

Slide 64 text

AIを制御するルールの整備 64 まずはLinterで厳しく縛り、不穏なコードが蔓延するのを防ぐ ● AIへ与えるルールの前にLintを徹底する ○ 先ほどの例 ■ 明⽰的なanyの禁⽌ ■ ⾮nullアサーションの禁⽌ ■ モジュール間の依存⽅向の制御 ● …etc

Slide 65

Slide 65 text

65 プロジェクト全体で共有するもの、個⼈で設定するものを分けて管理する AIへ与えるルールの管理⽅法 ● プロジェクト全体(Git管理対象) ○ プロジェクト全体のルール ○ 技術スタック‧業務知識 ○ ガードレール ● 個⼈管理(Git管理対象外 or exampleとしてコミット) ○ エージェントの振る舞い ○ AIコーディングスタイル ■ こちらは個⼈でカスタマイズして使い⽅を模索していきたい

Slide 66

Slide 66 text

66 AGENTS.mdに標準化していく流れ AIコーディングツールを跨いだルールの管理⽅法 ● README.mdは⼈間向けの情報 をまとめ、エージェント向け の情報はAGENTS.mdファイル に集約する動き ● Cursorはv1.6から対応 ● Codex、Gemini CLI、 RooCodeなど続々と対応 参照: Agents.md

Slide 67

Slide 67 text

67 ツールを跨いだルールを同期するOSS AIコーディングツールを跨いだルールの管理⽅法 参照: rulesync: Claude CodeやCursor、Clineのrulesを統⼀管理するツールを公開しました ● ルールファイルだけでなく、 mcpやメモリー、ignoreファイ ルなども同期

Slide 68

Slide 68 text

1. Rulesで事前に以下をインプット a. プロジェクトの構成や業務知識 b. 開発の進め⽅ c. mcpを利⽤したコンテキスト収集⽅法の指⽰ 2. GitHub Issueを指定して開発を指⽰ a. AIがGitHub Issueをmcpで取得し仕様を理解 b. AIがGitHub Wikiを確認し設計情報を取得 c. Rulesに従って開発を進める →コンテキストの取得が不安定。⼀度に⼤きいタスクを与えて⽅向性が違うと⼿戻りが⼤きい。 68 Rulesを完璧に整備しAIに⾃律的にコーディングをさせる試みは上⼿くいかず... ⼀⽅で、ルールで全てを制御しようとしない @シンボルやチャットでコンテキスト情報の補⾜や細かい指⽰出しを併⽤する

Slide 69

Slide 69 text

AI駆動開発のスプリント0でするべきこと 69 1. 使⽤するAIコーディングツールの選定 2. ガードレールの設定 3. プロジェクトのボイラープレート作成 4. AIによるPullRequestレビューの整備

Slide 70

Slide 70 text

1. 実装者⾃⾝がAIによるレビューを先に通し、基本的な指摘事項をつぶす 2. AIによるレビューでPRの概要をまとめてレビュワーの作業を効率化 3. ⼿元でAIに書かせたコードで⾒落としがちな、⾮機能⾯の改善ポイントをAI ⽤いてダブルチェック 70 AIによるPRレビューの必要性 AIで実装が早くなる分レビューがボトルネックになりがち

Slide 71

Slide 71 text

1. GitHub Copilot a. GitHub Copilotのライセンスがあればすぐに使える b. 対応⾔語に限りあり(Dartが使えなかった) 2. BugBot a. Cursorが提供するPRレビューサービス b. バグの検出に特化しており、サマリーなどは弱い印象 3. Claude Code Actions a. Claude CodeをGitHub Actions上で起動しPRレビューが可能 b. 導⼊しやすさ、カスタマイズ性、レビュー内容‧精度のバランスが良い c. 1レビューあたり15~20円で運⽤中 71 いくつか試してClaude Code ActionsによるPRレビューに落ち着く AIによるPRレビューツールの⽐較

Slide 72

Slide 72 text

AI駆動開発のつまずきポイントと回避⽅法

Slide 73

Slide 73 text

AI駆動開発の理想と現実 73 1. 要件定義 a. ミーティング⽂字起こし、議事録要約(Gemini) b. 説明資料‧図表作成(Mermaid、Draw.io) c. 情報収集(Perplexity、Notebook LLM) 2. 設計 a. ⾃然⾔語で設計書作成 i. UML、API定義、DB設計 b. 壁打ち(AI-Starter) 1. hidden 2. hidden 3. 実装 a. エージェントでコーディング b. Tab補完で⼿直し c. ⾮同期エージェント活⽤ d. AIによるコードレビュー 4. テスト a. AIによる⾃動テスト実装 b. テスト設計、仕様書作成 c. テスト⽤スクリプト‧データ⽣成 全ての⼯程でAIを駆使して爆速開発できると嬉しい

Slide 74

Slide 74 text

AI駆動開発の理想と現実 74 実際はそこまで上⼿くいかない ● AIが最後までタスクを完遂してくれない ○ 途中までいい感じで進むが諦める ○ すぐにレートリミットに引っかかる ○ 時には完了したと虚偽報告をしてくる ● 動きはするが継続的に開発するのが困難な実装が出てくる ○ 既存コードとの⼀貫性がない ○ 同じようなコードが複数箇所で実装される ○ どこからも使われないゴミが残る ○ 必要以上の機能が良かれと思って沢⼭実装される ○ 型エラーやLintエラーをとにかく黙らせている ● AI⽣成の読みずらいドキュメントが蓄積される

Slide 75

Slide 75 text

AI駆動開発の理想と現実 75 実務において、AI主体のコーディングスタイルが難しい要因 1. 複雑な業務要件 2. 多数のシステム間連携 3. ⼤規模なコードベース 4. 蓄積された技術的負債

Slide 76

Slide 76 text

AI駆動開発の理想と現実 76 実務において、AI主体のコーディングスタイルが難しい要因 1. 複雑な業務要件 2. 多数のシステム間連携 3. ⼤規模なコードベース 4. 蓄積された技術的負債 AIに適切にコンテキスト情報を与え、 AIの成果物を適切にハンドリングするスキルが必要

Slide 77

Slide 77 text

📚AIがタスクが完遂できない課題 77 1. そもそも最初から作業者(AI)と指⽰者の認識がずれている 2. タスク遂⾏に必要な情報が与えられていない 3. 1セッションが⻑く指⽰に余計なコンテキストが含まれている 以下の原因が考えられる

Slide 78

Slide 78 text

💡 予め計画して、認識を合わせてから実装を開始 78 Planモードを必ず活⽤する ● Cursor‧Claude Code‧Clineなど各ツールには、AIにいきなりコードを書か せる前に実装計画を⽴てるモードがある(CursorだとAsk) ● 実装すべき仕様、必要なコードベースのコンテキストなどを与えた後、「実装 を進めるにあたり不明点はありますか?」を必ず聞き、作業者(AI)と指⽰者の 間で認識齟齬が無くなるまで繰り返す ● 技術的な判断や、不明確な制約事項をAIエージェントが勝⼿に決めて⼿戻りが 発⽣することを防ぐ

Slide 79

Slide 79 text

💡 計画‧タスクをチャットセッションの外部にアウトプッ ト 79 Claude CodeやCursorも内部でTODOリストを管理している 外部であえて持つ理由は以下 ● 別のセッション開始時にコンテキストをマニュアルで引き継げる ● 実装計画をAIと指⽰者で共同編集できる ○ AIが出した設計やTODOを直接書き換えて細かい指⽰を出し永続化する ○ コーディング中に後から対応したいタスクを積んでおく Planで練った計画やタスクをMarkdown形式で外部にアウトプットする

Slide 80

Slide 80 text

💡 頻繁に新しいチャットに切り替える 80 ● ⻑いセッションでは定期的に履歴の要約が⾛るので最初に与えた重要な指⽰が薄まる ● 以下のような不要なコンテキストを除外できる ○ 機能A実装→機能B実装→失敗/削除→機能B再実装→失敗/削除→機能C実装 ● ⼩さい変更を都度レビュー→最終的なAIコーディングレビューが楽に ○ AIが書きがちな品質の悪いコードを⾒落としにくくなる ● 前のセッションで何をしたかは、前の会話の要約と、外部に保存したMarkdownファイ ルを与えて共有する 変更を⼩さい単位に分割し、新しいチャットで⼩さく作る

Slide 81

Slide 81 text

💡 @シンボルをフル活⽤する 81 ● 特定のファイル/ディレクトリ、ターミナルやWebサーチ、予めインデックスしておい たドキュメントなど、@シンボルを利⽤してAIに与えられるコンテキストは多岐に渡る ● 複雑な業務要件を、⼤規模なコードベースに対して実装するには、⾯倒でも細かい指⽰ を出す必要がある ● Rulesファイルを頑張って整備するよりもこちらの⽅が成果が出ている ● 今後はAIにコンテキストを与えやすいプロジェクト構成を採⽤する ○ 例)技術関⼼カットのディレクトリ構成からドメインカットのモジュラーモノリスへ @や#などのシンボルを⽤いて明⽰的なコンテキスト情報をAIに提供する

Slide 82

Slide 82 text

● 型エラーやLintエラーを握りつぶしている ● 既存コードの書きっぷりと⼀貫性がない ● どこからも使われていないコードがゴミとして残っている ● やたらと多すぎるテストケース ● 想像を膨らませて要件にない機能まで実装 📚 動きはするが継続的に開発するのが困難な実装の課題 82 AIが書くコードにありがちな問題

Slide 83

Slide 83 text

● @シンボルを駆使して⾜りていないコンテキスト情報を明⽰的に指⽰する ● 機能開発を⼩さく区切り頻繁に新しいセッションに切り替える ● うまくいかないセッションはすっぱり諦める ● 変更を⼩さくしてレビュー負荷を下げる ● セッション中に指⽰した学びをRulesファイルにアウトプットさせて育て る 📚 既存コードとの⼀貫性がない、使われていないゴミが残る 83 💡これに対してできること

Slide 84

Slide 84 text

● AIがこれまで⼈間が書けなかったエッジケースまで網羅的にテストを書いてくれるように ○ ⼀⾒良さそうだが、書かれたコードはずっとメンテナンスしていく必要がある ○ 必要以上のエッジケース網羅は、コードリーディングやその後の拡張‧アップデート時の負 債になる 📚 いらないテストケースまで実装してくる 84 📚 これの何が問題か 💡これに対してできること ● AIが書いたテストコードをケースの説明⽂だけでなく内容まで精査する ● ビジネスインパクトの低いケース、他で担保できているケースは意図的に削る

Slide 85

Slide 85 text

● AIが気を利かせて⾊々と実装してくれる。開発者も直ぐに実装できてしまうので、⼤きめの変更 の実装判断を出しやすくなる。 ○ 「いつか必要になるかも」で作られた機能は使われず負債になる ○ 実装者は楽でもレビュワーの負荷が⾼まる 📚 いらない機能まで実装してくる(ついついしてしまう) 85 📚 これの何が問題か 💡これに対してできること ● YAGNI(You Aren't Gonna Need It)の原則に⽴ち戻る ● 本当にコードを書いて解決するべき問題か再検討する ○ 仕様調整などで要望は満たしつつシンプルな実装にできるかも

Slide 86

Slide 86 text

● 型エラーやLintエラーを握りつぶしている ● 既存コードの書きっぷりと⼀貫性がない ● どこからも使われていないコードがゴミとして残っている ● やたらと多すぎるテストケース ● 想像を膨らませて要件にない機能まで実装 📚 再掲)動きはするが継続的に開発するのが困難な実装の課題 86 AIが書くコードにありがちな問題 コンテキスト管理とRulesやLintである程度低減はできるが、 最終的にはAIが書く良くないコードの癖を認識しておく必要がある

Slide 87

Slide 87 text

● 精密なテストデータ⽣成 ○ 最⼤⻑、最⼩⻑などの桁数データの⽣成 ■ 微妙に桁数が⾜りないなど要件を満たせない ● 細かい数値データをInputとした、モックデータやOuput検証の実装 ○ それ「らしい」が「らしい」だけの出鱈⽬データを⽣成 ● ライブラリの単純移⾏ ○ jest -> vitest 移⾏でコード修正は⼀瞬だが、テストが落ちる原因を深く 探索できずに失敗 (時間があれば)📚 AIで効率化できそうで意外とできなかった分野 87

Slide 88

Slide 88 text

● AIが書いたコードは全て読み‧理解する ○ ここを怠るとAIが⽣成するコードのレビュー負荷を、チームメンバーにオフロード することになる ● わかりやすいドキュメンテーション ○ AIが⽣成する⽂章は基本的に冗⻑で読みづらい(情報量の割に⽂章だけが⻑い) ○ AIで効率化はしつつも、最終的には他の誰か読むことを意識してまとめる 💡 AI駆動のチーム開発で開発者各⾃が意識したい点 88 ⾃⾝の⽣産性向上だけでなくチーム全体の⽣産性に⽬を向ける コーディングとテクニカルライティングのスキルは 今後も変わらず重要

Slide 89

Slide 89 text

詳細はブログを参照 89 参照: 書き捨てではなく継続開発可能なコードを Cursor Agent で書くために意識していること

Slide 90

Slide 90 text

まとめ

Slide 91

Slide 91 text

このセッションでお話ししたこと 91 1. AI駆動開発のスプリント0でするべきこと a. 使⽤するAIコーディングツールの選定 b. ガードレールの設定 c. プロジェクトのボイラープレート作成 d. AIによるPullRequestレビューの整備 2. AI駆動開発のつまずきポイントと回避⽅法 a. 予め計画して、認識を合わせてから実装を開始 b. 計画‧タスクをチャットセッションの外部にアウトプット c. 頻繁に新しいチャットに切り替える d. @シンボルをフル活⽤する e. AIが書く良くないコードの癖を認識しておく f. 個⼈だけではなくチームの⽣産性を考慮する

Slide 92

Slide 92 text

AI駆動開発について壁打ちに付き合っていただいたshuntakaさん、 morimorikochanさん、るおんさん AI駆動開発を⼀緒に試⾏錯誤しながら実践していただいた⻄⽥将幸さん 本当にありがとうございました!この場を借りてお礼申し上げます。 Special Thanks🙏 92 󰢛

Slide 93

Slide 93 text

AI駆動開発したいエンジニアを⼤募集し ています!

Slide 94

Slide 94 text

リテールアプリ共創部 マッハチーム 94 プロダクト開発の 「立ち上げ専門チーム」 です。 0→1のアプリ開発 をAI駆動で爆速開発 しています

Slide 95

Slide 95 text

こんな⽅をお待ちしています! 95 ‧ モダンな技術でフルスタック開発に挑戦したい 2~3名のエンジニアで、フロントエンド、サーバーサイド、インフラの全てを担当できます ‧ プリセールスから⼊りプロダクトの⽅向性を提案したい エンジニアがプリセールスも顧客折衝もガンガン進めていきます ‧ 0から1をAI駆動の圧倒的なスピードで⽴ち上げたい ・2~6人月程度の案件サイズがボリュームゾーンです ・様々な業界・お客様のご支援を高速に回して、マッハで経験を獲得できます

Slide 96

Slide 96 text

カジュアル⾯談お待ちしています! 96

Slide 97

Slide 97 text

97