
はじめに
こんにちは!Thinkings株式会社でエンジニアとして働いている栗岡と申します。 2023年4月にThinkings株式会社へ新卒で入社し、現在はCREという、顧客課題の解決や既存機能のアップデートを通して、顧客信頼性を高めていくことを目的・役割としているチームでエンジニアとして働いています。
今回は、個人開発をやってみたい人を対象に、AI-Scrumという、Codex CLI(コーデイングエージェント)を用いて作りたいものをスクラム形式で開発、改善できるシステムを作ってみたので紹介していきたいと思います。 非エンジニアの方・初学者の方でも、根気よく設定していただければ作りたいものが作れるようになると思うので是非一読していただければと思います!
事前知識
スクラム
スクラムに関しては、私自身もまだまだ勉強中の身なのですが、基本的にはスクラムガイドというものを参考にしています。 スクラムとは、ソフトウェア開発でよく使われる「チームワーク重視の開発手法」のことです。従来の「最初から最後まで一直線で進む」開発とは違い、「小さな単位に分けて、チームで協力しながら段階的に完成させる」アプローチになります。 通常のスクラムチームには以下の役割があります。
スクラムマスター:チームにスクラムの理論とプラクティスを全員に理解してもらえるよう支援する人
プロダクトオーナー(PO):何を作るかを決める人
開発者:設計やタスク分解、実際にコードを書き品質を作り込む人
AI-Scrumでは、POと開発者をAIが自動で担当してくれます。人間がスクラムマスターの立ち位置になります。
Codex CLI
AI-ScrumはCodex CLIを使うこと前提になっています(私はChatGPT Proプランで利用しています)。 なので、他のAI Agentでの動作は確認していません。要望が多く集まればClaude CodeやGithub Copilot向けの設定を追記するかもしれませんが、基本的には皆様自身で使いたいAI Agentに沿って設定を変更してください。
AI-Scrumで何ができるのか
AI-ScrumのコードはGithubで公開しているので、実際に手元で試してください。
概要
例えば、「旅行計画を立てるアプリを作りたい」と思ったとします。従来なら、設計や実装に数日ほど時間を要しますが、AI-Scrumなら以下のようなプロセスで自動化されます。
1. 要件整理AI(プロダクトオーナー)が動く
入力:「旅行計画アプリを作りたい。仕様は以下のような感じでお願いします。~~~」
↓
出力:
・目的地検索機能が必要
・スケジュール管理機能が必要
・予算計算機能が必要
・友人との共有機能が必要
このようにAIが必要なものを考えて、プロダクトバックログというやるべき作業リストを作成してくれます。
優先度1: ユーザーログイン機能
優先度2: データ入力画面
優先度3: レポート表示機能
これによって、各機能の重要度と開発順序が明確になります。また、人間がこの作業を引き継いだとしても何をやっていたのかが明確にわかります。
2. 設計AI(アーキテクト)が設計書を作成
・データベース設計
・画面設計
・機能の関係図
・技術選定理由書
3. タスク分解AI(プランナー)が作業を細分化
・ログイン画面の作成
・目的地検索画面の作成
・スケジュール入力画面の作成
・データベース接続処理の実装
(各タスクごとに優先度と工数も自動算出)
4. 開発AI(デベロッパー)が実際のコードを生成
// 実際に動くNext.jsのコードが生成される
export default function TravelPlanner() {
const [destination, setDestination] = useState('');
const [schedule, setSchedule] = useState([]);
// ... 実際に動作するコード
}
5. 品質管理AI(QA)がテストコードを作成・実行
// 自動生成されるE2Eテスト
test('旅行計画が正常に保存される', async ({ page }) => {
await page.fill('[data-testid=destination]', '京都');
await page.click('[data-testid=save-button]');
await expect(page.locator('.success-message')).toBeVisible();
});
6. ドキュメント作成AI(ドキュメンター)が説明書を生成
# 旅行計画アプリ使用マニュアル
## 基本的な使い方
1. 目的地を入力してください
2. 日程を選択してください
3. 保存ボタンを押してください
使い方
使い方はGithubのREADMEに詳しいことは書いていますが、一番簡単な使い方の例を示します。
ステップ1:インストール
まずはコードをGithubからクローンしてきて、以下コマンドを実行します。
npm install
(Node.js 18以上が必要です)
ステップ2:やりたいことを書く
domains/my-project/my-project-plan.mdというファイルに、作りたいアプリについて日本語で書きます。 my-projectというのは任意の名前です。マークダウンのファイル名も任意の名前です。 今回は家計簿アプリを作るという想定で以下のような計画書を作成します。 ファイルはdomains/kakei/kakei-plan.mdとしました。
# 家計簿アプリの計画書
## 目的
毎月の支出を管理して、無駄遣いを減らしたい## 主な機能
- 支出の記録
- カテゴリ別の集計
- 月次レポートの表示
- 予算設定と警告機能## 想定ユーザー
- 家計管理に興味がある20-40代
- スマートフォンで手軽に記録したい人
ステップ3:コマンド実行
npm run domain domains/kakei/kakei-plan.md
先ほど作ったマークダウンファイルを対象として実行します。あとはAIチームが自動で作業してくれます。 実際の出力内容は以下のような感じです。今回は少しエラーが出ていました。実装段階でなんらかの原因でcodexが何も出力しなくなってしまったようで、それを検知してエラーを出しています。
> ai-scrum-template@0.1.0 domain
> tsx scripts/run-domain.ts domains/kakei/kakei.md
=== 1) PO: Backlog 生成 ===
✔ [PO] codex完了: 7 json行 (46.8s, exitCode=0, signal=none)ed:46.7s
=== 2) Architect: 技術選定/雛形適用 ===
✔ [Architect] codex完了: 332 json行 (618.0s, exitCode=0, signal=none)d:618.0s
=== 3) Planner: タスク分解 + E2E雛形 ===
✔ [Planner] codex完了: 162 json行 (218.6s, exitCode=0, signal=none)d:218.6s
=== 4) 実装イテレーション 1/3 ===
✔ [Dev-FE#1] codex完了: 4654 json行 (268.3s, exitCode=0, signal=none)ed:268.3s
──────────────────────█───────────────── [Dev-BE#1] lines:10633 elapsed:540.2s
⚠️ STALL Dev-BE#1 306s 無アクティビティ (閾値 300s) → 終了要請 (調整: CODEX_STALL_TIMEOUT_MS)
✔ [Dev-BE#1] codex完了: 10633 json行 (540.2s, exitCode=null, signal=SIGTERM)
Unexpected error: Error: codex terminated: no activity for >= 300s (stall) (exitCode=null, signal=SIGTERM). Tune CODEX_STALL_TIMEOUT_MS/CODEX_TIMEOUT_MS as needed.
at ChildProcess.<anonymous> (/Users/niya/Documents/ai-scrum/scripts/orchestrator.ts:242:21)
at ChildProcess.emit (node:events:507:28)
at maybeClose (node:internal/child_process:1101:16)
at Socket.<anonymous> (node:internal/child_process:457:11)
at Socket.emit (node:events:507:28)
at Pipe.<anonymous> (node:net:351:12) {
特定の工程から再開も可能
前述のように、どこかのタイミングで作業が止まってしまったとしてもリカバリー可能です。 概要で説明した、要件整理AI、設計AI、タスク分解AI、開発AI、品質管理AI、ドキュメント作成AIの各工程を任意の場所から作業を再開することができます。 PO段階から再開したい場合は、計画書のパスを渡してあげて、それ以外はPOが作成したbacklog.ymlへのパスを渡すようにしてください。
# プロダクトバックログ作成工程から再開
npm run domain:po domains/my-project/my-project-plan.md
# 開発工程から再開
npm run domain:dev -- --backlog out/po/{RUNID}/backlog.yml
# テスト工程から再開
npm run domain:qa -- --backlog out/po/{RUNID}/backlog.yml
今回であれば開発工程から再開させればうまくいきそうです。 実際に以下のように実行すると、作業を再開してくれました。
npm run domain:dev -- --backlog out/po/2025-10-16T02-01-30-883Z/backlog.yml
> ai-scrum-template@0.1.0 domain:dev
> START_FROM=dev tsx scripts/run-domain.ts --backlog out/po/2025-10-16T02-01-30-883Z/backlog.yml
(from='dev' 以前のステージはスキップ)
既存 backlog を再利用します: /Users/niya/Documents/ai-scrum/out/po/2025-10-16T02-01-30-883Z/backlog.yml → out/po/2025-10-21T00-16-55-269Z/backlog.yml
backlog から推測した tasks.yml を再利用します: /Users/niya/Documents/ai-scrum/out/planner/2025-10-16T02-01-30-883Z/tasks.yml → out/planner/2025-10-21T00-16-55-269Z/tasks.yml
Architect スキップ (--from=dev). 既存 out/architect/2025-10-21T00-16-55-269Z/scaffold.log が無いので続行しますが問題が起きる可能性があります。
=== 4) 実装イテレーション 1/3 ===
✔ [Dev-BE#1] codex完了: 7 json行 (14.0s, exitCode=0, signal=none)ed:13.9s
✔ [Dev-FE#1] codex完了: 294 json行 (231.8s, exitCode=0, signal=none)d:231.7s
....
以降はQAを実行してドキュメント作成が行われます。 QAに関しても、E2Eを実行して失敗していれば、E2E失敗内容から実装フェーズをサイド実行してバグを修正します。このループは基本的にE2Eが通るまで実行され続けます。 今回であれば以下のように実行されていました。
=== 4) 実装イテレーション 1/3 ===
=== 5) QA: 受け入れテスト ===
✔ [QA#1] codex完了: 45 json行 (51.8s, exitCode=0, signal=none)ed:51.7s
QA#1 runner=unknown
⚠️ QA RED → 原因調査 → Plannerに差し戻し (再分解)
✔ [Investigate#1] codex完了: 7 json行 (34.3s, exitCode=0, signal=none)ed:34.2s
✔ [Replan#1] codex完了: 88 json行 (202.8s, exitCode=0, signal=none)d:202.7s
=== 5.3 Dev: 再分解タスクの適用 (RED後) ===
✔ [Dev-FE#1-retry] codex完了: 243 json行 (340.0s, exitCode=0, signal=none)d:339.9s
✔ [Dev-BE#1-retry] codex完了: 365 json行 (451.2s, exitCode=0, signal=none)elapsed:111.2s
✔ [Dev-FE#1-retry(impl)] codex完了: 141 json行 (140.5s, exitCode=0, signal=none)d:140.5s
=== 5.4 QA: 再実行 (再分解+実装反映後) ===
✔ [QA#1-retry] codex完了: 160 json行 (146.1s, exitCode=0, signal=none)d:146.1s
=== 4) 実装イテレーション 2/3 ===
=== 5) QA: 受け入れテスト ===
✔ [QA#2] codex完了: 180 json行 (121.9s, exitCode=0, signal=none)d:121.8s
QA#2 runner=unknown
⚠️ QA RED → 原因調査 → Plannerに差し戻し (再分解)
✔ [Investigate#2] codex完了: 7 json行 (24.8s, exitCode=0, signal=none)ed:24.7s
✔ [Replan#2] codex完了: 51 json行 (305.1s, exitCode=0, signal=none)d:305.0s
=== 5.3 Dev: 再分解タスクの適用 (RED後) ===
✔ [Dev-BE#2-retry] codex完了: 695 json行 (525.5s, exitCode=0, signal=none)d:525.4s
✔ [Dev-FE#2-retry] codex完了: 753 json行 (823.1s, exitCode=0, signal=none)d:823.0s
=== 5.4 QA: 再実行 (再分解+実装反映後) ===
✔ [QA#2-retry] codex完了: 170 json行 (122.8s, exitCode=0, signal=none)d:122.8s
✅ QA GREEN (after replan+dev) → 受け入れ完了
=== 6) Docs: ドキュメント生成 ===
✔ [Docs#2-retry] codex完了: 256 json行 (210.0s, exitCode=0, signal=none)d:209.9s
完了: 成果物/ログは 'out/' を参照してください。
このようにして、特定の工程から作業を再開でき、プロダクトを完成させ、それに関するドキュメントも作成してくれます!
想定される活用シーン
以上のようにAI-Scrumでは、計画書を作れば要点を押さえつつプロダクトを完成させてくれます。これを使えば以下のようなシーンで効率よく開発ができると考えています。
1. プロトタイプ作成
「クライアントに提案するためのデモが必要」
→ 2-3時間で動くプロトタイプが完成
2. アイデア検証
「このアイデア、実際に形にしたらどうなるだろう?」
→ 複数のバリエーションを短時間で作成・比較
3. 学習目的
「React/Next.jsを学びたいけど、何を作ればいいかわからない」
→ アイデアを入力するだけで学習素材が完成
最後に
AI-Scrumは以下のような人にとって役立つシステムだと思っています。
・アイデアはあるけど、プログラミング経験が浅い
・設計やテストまで考えるのが大変
・とりあえず動くものを素早く作りたい
・複数のアイデアを試して、一番良いものを選びたい
・ドキュメント作成が面倒だけど、ちゃんとしたものを作りたい
そして、AI-Scrumはこれからもアップデートしていく予定です。是非今後とも動向を確認していただければと思います。ありがとうございました!
Thinkingsエンジニアでは、テックブログを更新中です!
こちらもぜひご覧ください。
Thinkingsテックブログ | Zenn
記事執筆者

栗岡 陽平
Thinkings株式会社
2023年4月にThinkings株式会社へ新卒として入社。主に外部連携系のバックエンド開発を担当。 現在はCREという顧客課題の解決や既存機能のアップデートを通じ、顧客信頼性を高めていくことを目的としたチームでエンジニアとして働いています。




