背景
Claude codeを使ってUnityにゲームを作ってもらおうとしていたのですが、簡単なのはまだしもちょっと複雑になると(それでも簡単なレベルの範囲内ですが)、以下のような問題が出てきました。
- claude codeの利用制限に引っかかって(料金が高い無制限プランを使っていないので…)、途中で中断されてしまう
- 翌日再開したときに、現状の把握のためにclaudeが再読み込みと残タスクの分析を行う(これだけで時間もただでさえ少ないトークンも使われてしまう…)
- 翌日再開したとき、前日と若干方向性が違う
- 数時間レベルでclaudeの作業が続くので進捗が分からない
人が頻繁に入れ替わってしまう管理されていないプロジェクトを受け持つPMみたいな気分です(笑)。
そこで、cc-sddという生成AI用のハーネスを使ってみました。
cc-sddとは
企業などで何かシステムを作るときは以下のような手順に従ってシステムを作ると思います。
このやり方に従ってAIにコードを書いてもらうようにするのが、cc-sddです。
cc-sddを使うと以下のようなことをしてくれるので、
- ちゃんとドキュメントを作って、仕様がぶれないようにする
- 作業管理表を作って記憶がゼロの状態でも次に何の作業をすべきかAIがすぐにキャッチアップできる。(作業の引継ぎの感覚)
claudeの1日の利用上限に引っかかっても再開がスムーズになり、また、要件定義や設計フェイズでのAIからの質問に対する回答に応じて、AIが作る要件定義書や仕様書に反映されるので、claude.mdやskillに書いていなかった事柄によってAIの方向性が日によってずれることも少なくなりました。
環境
- windows powershell
- unity
- claude
- unity cli
- ss-cdd (本記事の時点ではv3)
cc-sddの導入
公式ドキュメント
に従います。
まずnode.jsをいれます
> winget install OpenJS.NodeJS
powershellを再起動
PowerShell 7.6.6
> node -v
v26.8.1
> npm -v
11.19.0
> npx -v
11.19.0
次にコードを置くディレクトリに移動して
npx cc-sdd@latest
でcc-sddを実行します。(cc-sddのやり方に制限するためのCLAUDE.msやskillを作ってくれます。)
> npx cc-sdd@latest
Need to install the following packages:
cc-sdd@3.1.0
Ok to proceed? (y) y
Select the agent you want to set up:
1. Claude Code (--claude-code)
Installs kiro prompts in `.claude/commands/kiro/`, shared settings in `{{KIRO_DIR}}/settings/` (default `.kiro/settings/`), and an AGENTS.md quickstart.
2. Claude Code Agents (--claude-code-agent)
Installs kiro prompts in `.claude/commands/kiro/`, a Claude agent library in `.claude/agents/kiro/`, shared settings in `{{KIRO_DIR}}/settings/`, and a CLAUDE.md quickstart.
3. Claude Code Skills (--claude-code-skills)
Installs kiro skills in `.claude/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and a CLAUDE.md quickstart.
4. Codex CLI (--codex)
Deprecated: Codex no longer supports `.codex/prompts/`. Use `--codex-skills` instead.
5. Codex Skills (--codex-skills)
Installs kiro skills in `.agents/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
6. Cursor IDE (--cursor)
Installs kiro prompts in `.cursor/commands/kiro/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
7. Cursor Skills (--cursor-skills)
Installs kiro skills in `.cursor/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
8. GitHub Copilot (--copilot)
Installs kiro prompts in `.github/prompts/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
9. GitHub Copilot Skills (--copilot-skills)
Installs kiro skills in `.github/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
10. Gemini CLI (--gemini-cli)
Installs kiro prompts in `.gemini/commands/kiro/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
11. Gemini CLI Skills (--gemini-cli-skills)
Installs kiro skills in `.gemini/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and a GEMINI.md quickstart.
12. Devin Local / CLI Skills (--devin)
Installs kiro skills for Devin Local in Devin Desktop and Devin CLI in `.devin/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
13. Windsurf / Cascade (deprecated) (--windsurf)
Installs kiro workflows for Cascade in `.windsurf/workflows/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
14. Windsurf / Cascade Skills (deprecated) (--windsurf-skills)
Installs kiro skills for Cascade in `.windsurf/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
15. Qwen Code (--qwen-code)
Installs kiro prompts in `.qwen/commands/kiro/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
16. OpenCode (--opencode)
Installs kiro prompts in `.opencode/commands/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
17. OpenCode Agents (--opencode-agent)
Installs kiro commands in `.opencode/commands/`, a kiro agent library in `.opencode/agents/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
18. OpenCode Skills (--opencode-skills)
Installs kiro skills in `.opencode/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
19. Antigravity Skills (--antigravity-skills)
Installs kiro skills in `.agents/skills/kiro-*/`, shared settings in `{{KIRO_DIR}}/settings/`, and an AGENTS.md quickstart.
導入先はclaude codeであり、unity MPCを使うのでMPCと相性がいい3を選びました。
これで、必要なCLAUDE.mdやskillなどのファイルが作られるので、claude codeはこのcc-sddのルールに従って作業してくれます。
作業手順
claudeで
https://github.com/gotalab/cc-sdd/blob/main/docs/guides/ja/command-reference.md
のコマンドを実行するとそれぞれの開発フェイズの作業をしてくれます。
基本的にこちらは各フェイズのコマンドを実行して、AIからの質問に都度答えるだけです。
次のフェイズで実行すべきコマンドも作業完了後にAIから提案されるので、それに従えば大丈夫です。
最初のステップ
まずは、最初のアイデア出しの相談を
/kiro-discovery <やりたいこと>
で実行します。
もしすでにある程度アイデアが固まっているのなら
.kiro/spec/
にやりたいことを
.kiro/spec/<実装したい機能やゲーム名>/notes.md
などと置いて(どんなメモを置くかは自由)
/kiro-spec-init <実装したい機能やゲーム名>
で.kiro/spec/<実装したい機能やゲーム名>のメモを読ませてAIに要件定義書を作らせます。
デモ (TBO)
落ちものパズルを作ってもらいます。
準備
まず、fallingBlockPuzzleというディレクトリにcc-sddのハーネスを入れます。
npx cc-sdd@latest --claude-code-skills --lang ja
ここで日本語にしてもらうオプションを入れました。
こんな感じのハーネスが出来ました。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2026/10/10 21:38 .claude
d---- 2026/10/10 21:38 .kiro
-a--- 2026/10/10 21:38 3976 CLAUDE.md
企画・立案
次にclaudeを立ち上げて
/kiro-discovery Unity CLI を使って落ちものパズルゲームを作りたい。ゲームの目的、ルール、必要なシステムを構造化して整理し、設計・実装に進むための開発プロセスを提示してほしい。
とコマンドを実行し立案を手伝ってもらいます。
I confirmed this is a greenfield project with Unity CLI and multiple editor versions installed, and given the scope across core rules, input, rendering, UI, scoring, and setup, I'll likely decompose this into multiple specs. First, let me nail down a few foundational decisions about the game.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
← [ ] ゲーム型 [ ] 目的 [ ] Platform [ ] 機能範囲 √ Submit →
どのタイプの落ちものパズルを作りますか?(ルール体系が根本的に変わります)
> 1. ライン消し型 (推奨)
7種テトロミノを回転・移動し、横一列を揃えて消す。ルールが明確で最初の1本に最適
2. 色マッチ型
2個1組のブロックを落とし、同色4つ以上つながると消える。連鎖の重力処理が必要
3. 3マッチ落下型
縦3個組の色ブロックを落とし、縦横斜めに3つ揃えて消す(コラムス系)
4. Type something.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
5. Chat about this
Enter to select · Tab/Arrow keys to navigate · Esc to cancel
こんな感じで色々聞かれるので、選択肢を選んで(あるいは4のその他で好きなのを書いて)方向性を決めていきます。
ちなみに私は
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
← [×] ゲーム型 [×] 目的 [×] Platform [×] 機能範囲 √ Submit →
Review your answers
● どのタイプの落ちものパズルを作りますか?(ルール体系が根本的に変わります)
→ 色マッチ型
● このプロジェクトの主な目的は?
→ 学習・ポートフォリオ (推奨)
● ターゲットプラットフォームは?
→ Windows (PC)
● 初期スコープに含めたいゲーム要素は?
→ Next/Hold表示, レベル・速度上昇, ハイスコア保存, サウンド・演出
Ready to submit your answers?
> 1. Submit answers
2. Cancel
と選択しました。
次の質問には
← [×] 設計方針 [×] ルール [×] Editor √ Submit →
Review your answers
● 実装アーキテクチャのアプローチを選んでください
→ 純C#コア+表示分離 (推奨)
● ルールの基本パラメータはどうしますか?
→ 定番仕様 (推奨)
● 使用するUnity Editorバージョンは?
→ 6000.3.24f1 LTS (推奨)
Ready to submit your answers?
> 1. Submit answers
2. Cancel
と回答しました。
すると
ゲームの目的・ルール・必要なシステムを整理し、作業を6つの spec に分けて .kiro/ に保存しました。ルール・進行・表示・UI・音は変更理由がそれぞれ異なり、複数の領域にまたがるため、spec を分ける構成(Path D)にしています。
ゲーム概要(詳細は .kiro/steering/roadmap.md)
目的: 2個1組のブロックを落とし、同色を4個以上つなげて消します。連鎖を組んでハイスコアを狙い、上がっていく落下速度の中で生き残るゲームです。
┌────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 項目 │ ルール(値はすべて設定オブジェクトに外出し) │
├────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 盤面 │ 横6 × 縦12(+ 見えない13段目) │
├────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ピース │ 2個1組、4色 │
├────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 操作 │ 左右移動、回転(壁蹴り・床蹴りあり)、ソフトドロップ、ホールド │
├────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 消去と連鎖 │ 同色が上下左右に4個以上つながると消える。消えたあとブロックが落ちて再判定し、消えるものがある限り繰り返す │
├────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ スコア │ 消去数 × 10 × (連鎖 + 連結 + 色数のボーナス) │
├────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ゲームオーバー │ 出現位置(左から3列目・最上段)がすでに埋まっている │
├────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 追加要素 │ Next(2組先まで表示)、ホールド、レベルと速度上昇、ローカルのハイスコア │
└────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────┘
アプローチ
ルールは Unity に依存しない純 C# のコード(noEngineReferences)にまとめ、CLI から素早くテストできるようにします。入力・描画・UI・音はその上の薄い層で、コマンドを渡してイベントを受け取る形でつなぎます。MonoBehaviour 中心の構成(ルールと表示が絡んでテストしにくい)や、ScriptableObject のイベント駆動(アセット管理が増えて CLI 中心の作業と相性が悪い)よりもこちらを選びました。
spec 一覧(依存順)
project-foundation → puzzle-core-rules → game-progression ─┬→ board-presentation ─┐
└→ ui-screens ─────────┴→ audio-and-effects
1. project-foundation: CLI でプロジェクトを作成し、コードモジュール(asmdef)構成とパッケージを整え、テスト・Windows ビルド用のスクリプトを用意する
2. puzzle-core-rules: 盤面、ピースの移動・回転、着地時の組の分離(ちぎり)、連結判定、重力、連鎖、Next/Hold
3. game-progression: ゲームの状態機械、スコア、レベルと速度、コマンド/イベントの契約
4. board-presentation: 入力(長押しリピートあり)、盤面の描画、落下・消去のアニメーション
5. ui-screens: スコア・Next/Hold の画面表示、タイトル/ポーズ/ゲームオーバー画面、ハイスコアの保存
6. audio-and-effects: BGM・効果音、消去エフェクト、連鎖数に応じた演出
game-progression が終われば、4 と 5 は並行して進められます。
注意点:
- コマンドとイベントの形式は game-progression の設計で確定させる必要があります。表示系の3つの spec がこれに依存します。
- 連鎖は設定可能な待ち時間を挟んで1段ずつ進み、アニメーションはその待ち時間の中で再生します。
環境: Unity 6000.3.24f1 LTS、ビルド対象は Windows 64bit です。Unity CLI にプロジェクト作成・テスト実行(unity test)・ビルド(unity build)のコマンドがあることは確認済みです。ただし CLI はまだベータ版(1.0.0-beta.13)なので、あとで差し替えやすいように CLI の呼び出しはスクリプトにまとめることをおすすめします。
開発プロセス
┌──────────────────┬────────────────────────────────────────────────────┬───────────────────────────────────────────────────────┐
│ フェーズ │ コマンド │ 成果物 │
├──────────────────┼────────────────────────────────────────────────────┼───────────────────────────────────────────────────────┤
│ 0. ステアリング │ /kiro-steering(project-foundation の後) │ product.md / tech.md / structure.md │
├──────────────────┼────────────────────────────────────────────────────┼───────────────────────────────────────────────────────┤
│ 1. 仕様作成 │ /kiro-spec-batch │ 各 spec の requirements・design・tasks を依存順に作成 │
├──────────────────┼────────────────────────────────────────────────────┼───────────────────────────────────────────────────────┤
│ 1'. 設計レビュー │ /kiro-validate-design game-progression(強く推奨) │ イベント契約の確定 │
├──────────────────┼────────────────────────────────────────────────────┼───────────────────────────────────────────────────────┤
│ 2. 実装 │ /kiro-impl project-foundation から依存順に │ コードと、CLI で通るテスト │
├──────────────────┼────────────────────────────────────────────────────┼───────────────────────────────────────────────────────┤
│ 3. 最終確認 │ /kiro-validate-impl {feature} │ spec 間の整合確認と全テストの実行 │
└──────────────────┴────────────────────────────────────────────────────┴───────────────────────────────────────────────────────┘
次のステップ
- 標準: /kiro-spec-batch で、ロードマップから6つの spec すべての requirements・design・tasks を作成します。
- 慎重に進める場合: まず /kiro-spec-init project-foundation でプロジェクト構成と CLI の流れを固めてから、残りの spec をまとめて作成します。
とこの後の作業の流れを提案してくれるのでこれに従って1つずつコマンドを実行していきます。
AIはあいまいな部分がそんなにないので要件定義はスキップしてもいいよと言っていますが、今回は練習のために"慎重に進める場合"の方に従います。
要件定義
/kiro-spec-init project-foundation
/kiro-spec-requirements project-foundation
:
:
要件の概要
Requirement 1–7 を EARS 形式で書いています。主語はすべて「開発基盤」です。
- 1. プロジェクトの生成と再現性: エディタ 6000.3.24f1 でプロジェクトを開けて、必要なパッケージが宣言済みであること。そのバージョンがインストールされていなければ、必要なバージョン番号を表示してエラー終了します。
- 2. コード層の分離: コード領域は4つ(コア/表示/エディットモードテスト/プレイモードテスト)です。コア層からエンジン API や表示層を参照するとコンパイルエラーになります。テストのコードはビルド成果物に含めません。
- 3. テストの実行: モード(エディットモード/プレイモード/両方)を指定して実行できます。結果の要約をコンソールに出し、詳細はレポートファイルに保存します。失敗時やプロジェクトが使用中のときは非ゼロの終了コードで終わります。各モードにサンプルテストを1件以上入れます。
- 4. Windows 向けビルド: コマンド1つで実行ファイルを生成し、失敗時はログの場所を表示します。生成した実行ファイルが正常に起動・終了することも要件に入れています。
- 5〜7. 運用面: 操作は入口コマンドにまとめ、使い方の表示と、CLI が見つからないときのエラー表示を用意します。git の除外設定(.meta ファイルは追跡する)と、使い方の文書化も含みます。
ファイルの状態
.kiro/specs/project-foundation/requirements.md (更新)
.kiro/specs/project-foundation/spec.json (phase: requirements-generated, requirements.generated: true)
レビューゲート
1回目のレビューで、機械チェック(数値の ID・EARS 形式・実装用語が入っていないこと)と、範囲・境界のレビューを通過しました。
確認してほしい点が2つあります。
- 3.6: プロジェクトがエディタで開かれている間にテストを実行した場合、エラーで止める扱いにしました。開いているエディタで代わりにテストを走らせる方式にしたい場合は教えてください。
- steering 未作成: steering ファイルがまだないので、roadmap.md を前提条件として使っています。
次のステップ
内容に問題なければ、要件を承認して設計に進んでください。
/kiro-spec-design project-foundation
修正が必要な場合は、修正点を伝えたうえで /kiro-spec-requirements project-foundation を再実行してください。
✻ Baked for 1m 4s · done 21:59
● How is Claude doing this session? (optional)
1: Bad 2: Fine 3: Good 0: Dismiss
設計
/kiro-spec-design project-foundation -y
-yは前の要件定義書の承認を示すフラグです。
調査方法
新規機能なので full discovery で調査しました。Unity CLI のヘルプとリファレンスを読み、テンプレート一覧・認証・ライセンスの状態を実際に確認し、PowerShell の動作もローカルで試しました。
設計に影響した発見
1. パッケージの追加は不要: テンプレート universal-2d(6000.3.24f1)に Input System・Test Framework・URP が最初から入っています。
2. テストは2回に分けて呼ぶ: unity test は1回の起動で1モードしか実行できません。終了コードは「テスト失敗 = 8」「実行できなかった = 6」と分かれています。そのため dev test で EditMode と PlayMode を順に呼び、結果をまとめて返します。
3. 使用中の判定はロックファイルで行う: エディタが起動中かを調べる unity status は Pipeline パッケージが必要で、今は使えません。代わりに Temp/UnityLockfile を排他的に開けるかで、プロジェクトが使用中かを判定します(要件 3.6)。
4. PowerShell 5.1 の不具合を回避する: pwsh から起動するとモジュールの自動読み込みが失敗し、BOM なしのスクリプトは日本語が化けます。入口の dev.cmd で PSModulePath をクリアし、dev.ps1 は UTF-8 BOM 付きで保存して避けます。クリアで直ることはローカルで確認済みです。
主な設計判断
- Unity プロジェクトはサブフォルダ FallingBlockPuzzle/ に置き、.kiro やツール類と分けます。
- 終了コードは Unity CLI に揃えます(0 / 2 / 3 / 4 / 6 / 8)。
- コア層の参照ルールは、コンパイラに加えて EditMode の AssemblyBoundaryTests でも毎回チェックします。
レビューゲート
1回目で通過しました。要件 ID 33 件はすべて traceability 表にあり、境界の記述とファイル構成も揃っています。spec.json の要件は承認済み、phase は design-generated に更新しました。
次のステップ
design.md を確認して、問題なければ次に進んでください。
/kiro-spec-tasks project-foundation # 設計を確認してから
/kiro-spec-tasks project-foundation -y # 設計を承認して続行
任意ですが、/kiro-validate-design project-foundation で設計を対話形式でレビューすることもできます。
タスク洗い出し
/kiro-spec-tasks project-foundation -y
タスクの内訳
大項目は 5 つ、実行するサブタスクは 12 件です(大項目 4 はそれ自体が 1 件のタスクです)。1 件あたり 1〜3 時間の作業量を想定しています。
┌─────────────────────┬──────────────────────────────────────────────────────────────┬──────┐
│ 大項目 │ 内容 │ 件数 │
├─────────────────────┼──────────────────────────────────────────────────────────────┼──────┤
│ 1. 基盤の用意 │ git 初期化と除外設定、CLI でのプロジェクト生成、Player 設定 │ 3 │
├─────────────────────┼──────────────────────────────────────────────────────────────┼──────┤
│ 2. 入口コマンド dev │ 使い方表示と CLI チェック、前提チェックと open、test、build │ 4 │
├─────────────────────┼──────────────────────────────────────────────────────────────┼──────┤
│ 3. コード領域 │ コア層・表示層、テスト領域とサンプルテスト、境界の回帰テスト │ 3 │
├─────────────────────┼──────────────────────────────────────────────────────────────┼──────┤
│ 4. README │ 使い方と、コード領域ごとの参照方向 │ 1 │
├─────────────────────┼──────────────────────────────────────────────────────────────┼──────┤
│ 5. 検証 │ 正常系、異常系、ビルドと起動・シェル互換、git の除外状態 │ 4 │
└─────────────────────┴──────────────────────────────────────────────────────────────┴──────┘
並行実行の印 (P) を付けたタスクはありません。2.3 と 2.4 は同じ dev.ps1 を編集し、3 章は 2.3 の dev test を使って完了を確かめるためです。理由は各タスクに書いてあります。
チェック結果
- 要件 33 件はすべて、いずれかのタスクに割り当てられています(機械的に確認済み)。
- 設計の 8 コンポーネントと前提条件(サインイン・ライセンスの確認)もタスクに入っています。
- タスク順序の確認は、サブエージェントを使わずこの会話の中で 1 回だけ行い、PASS でした。
確認しておいてほしい点が 2 つあります。
- 5.4 ではコミットしません: git の除外状態はドライランで確認するだけです。初回コミットのタイミングは決めてください。
- 2.2・5.2 は Unity Editor を起動します: dev open でエディタを開いて、使用中の判定を確かめる手順が含まれています。
次のステップ
/kiro-impl project-foundation
タスク整理が終わったら
gitも設定してね unityを使うのでadd . で重くなりすぎないように
と指示してバージョン管理もしもらうようにしました。(これも事前にスキル化とかしておいた方がよさそう)
開発
さて、では実装に入りましょう。各タスク大項目に数時間かかると言っているので、おそらく途中でトークン利用上限に引っかかると思います。
ただ常にどこまでサブタスクを消化したか進捗管理してくれるので、問題なく再開できます。
では以下のコマンドで実装を開始してもらいます。
/kiro-impl project-foundation
感想
感覚的にはcc-sddを使う前のAIとの関係性は"プログラマーとSIer"という感じでしたが、cc-sddのハーネスがあると"顧客とシステム開発会社"みたいな感覚でした。こちらの管理負担はかなり減った気がします。ただ、作成された資料はあくまでAIが読むようなので、人間が読んでもちょっと把握が難しいですね(笑)そこは人間が読む用のものを別途作ってもらうとか工夫が要りそうです。