AI開発は、実装より先に境界を切る | 魔王いっぺいのブログ

魔王いっぺいのブログ

ゲーム、漫画、AIなど、自分の趣味から考察まで、幅広く残していく。Youtubeチャンネルの補完的役割

この記事は魔王いっぺいとAI(Codex / GPT-5)の対話をAI視点でブログ記事に代筆したものである。

今回の対話は、ローグライク試作版の `Phase 2` を進める話として始まった。
だが、実際にやっていたことは単なる機能追加ではなかった。

中心にあったのは、コードを書く前に、どこまでを今回やるのか、その境界をどう切るか、という話だった。

最初にぶつかったのは、`v0.1` と `Phase 2` の関係だった。
文書を読むと、`v0.1` に含まれている要素の多くが `Phase 2` に持ち越されている。
つまり、`v0.1` と `Phase 2` がかなり近い意味で語られているように見えた。

ここで魔王いっぺいが返したのは、かなり率直な違和感だった。

「`v0.1` と `phase2` がほぼ同義で語られているように見えるな」

この違和感は小さくない。
ここが曖昧なままだと、今どこに向かっているのかがぶれるからだ。

そこでまず整理したのは、`v0.1 = Phase 1 + Phase 2` という関係だった。
`Phase 1` は最小ループの成立。
`Phase 2` はその未実装分を埋めて `v0.1` を完了させる段階。
さらに、その先として `Phase 3` を「内容の厚み、評価しやすさ、保守性を上げる段階」と定義した。

ここで終わらなかったのが今回の面白いところだった。
`Phase 2` 自体も、まだ大きすぎた。

そこで `Phase 2` を切り分けた。

- `2-A`: 戦闘中のカード使用 UI
- `2-B`: アイテム効果、`MP` 消費、破損率
- `2-C`: `不明` 部屋と、後にカード破棄も含める探索側の拡張
- `2-D`: 戦闘ごとの報酬サマリーや詳細 UI

この時点で、かなり先の話まで少し見えた。
`Phase 3` に何が残るのか。
いや、そもそも残るものはあるのか。

ここでも結論は変に飾らなかった。
`v0.1 = Phase 1 + Phase 2` と見るなら、`Phase 3` に必須で残るものは特にない。
だから `Phase 3` は、`v0.1` 後の内容拡張と保守性改善として切り直した。

この段階分けが入ったことで、ようやく実装に入る意味が出てきた。
逆に言えば、ここを切らずに「カード使用を実装しよう」と始めていたら、かなり不安定だったと思う。

そして、実装前にもう一つ重要な確認が入った。
戦闘中のカード使用を、どういう操作感にするかだ。

ここで魔王いっぺいが返したイメージはかなり具体的だった。

- 戦闘コマンドに `CARD` を足す
- 追加の一覧は出さない
- 右のインベントリをそのまま選ぶ
- 効果の最小表示は左下
- キャンセルで戦闘コマンドに戻る
- モンスターカードや `MP` 不足カードは選べるが使えない
- カード使用は 1 ターン消費
- 効果は当面 `HP回復` と `攻撃`

この粒度がちょうどよかった。
UI の細部まで固定しているわけではない。
だが、AI が余計な一覧画面や平均的なメニューを勝手に足さない程度には、意図が明確だった。

ここまで来て、やっと `Phase 2-A/B` の実装に入った。

やったこと自体はかなり素直だ。

- 戦闘コマンドに `CARD` を追加
- インベントリ上で直接カード選択
- `HP回復` と `攻撃` のアイテム効果
- `MP` 消費
- 破損率処理
- 使用は 1 ターン消費
- モンスターカードと `MP` 不足カードは無効

ただ、実装だけで会話は終わらなかった。
実機確認のフィードバックが入ると、すぐに「選択中色変更だと視認性が悪い」「インベントリが 15 個以降見切れる」という話になった。

このあたりは、いかにも試作らしいラリーだったと思う。
動く。
でも遊ぶと気になる。
しかも、その気になる点が曖昧な「なんか違う」ではなく、かなり具体的に返ってくる。

ここで良かったのは、その修正が感覚論で終わらなかったことだと思う。
選択中は白い枠を出す。
インベントリ上限は 15 にする。
上限時は古いカードを捨てず、新規取得を諦める。
非破損時はログを出さない。

どれも細かい変更だが、こういう詰めが「試作として遊べる」感触に効いてくる。

さらに今回、実装と同じくらい重要だったのが文書側の違和感の整理だった。

`doc/spec_modules/` という名前なのに、中にあったのは `phase1_current.md` だった。
つまり「module」という名前なのに、実態は phase 単位の現物仕様メモになっていた。

ここで出た違和感もかなり良かった。

「module 配下が phase でくくられてるのが違和感」

短いが、ほぼ論点の核心そのものだった。

この違和感はかなり本質的だった。

もし今後も `spec_modules` に phase 名ファイルを足していくと、文書の責務がまた曖昧になる。
どこに何を書くべきかで毎回迷い始める。

そこでここも切り直した。

- `project_spec.md` は全体方針と段階境界
- `spec_modules/` は実装済み挙動の現物仕様
- しかも `spec_modules/` は phase 名ではなく機能単位で持つ

結果として、

- `runtime_overview.md`
- `exploration.md`
- `cards_and_stats.md`
- `battle.md`

という構成へ再編した。

これは地味だがかなり効く整理だと思う。
今後 `2C` で `不明` 部屋を足すなら `exploration.md`。
カード破棄なら `cards_and_stats.md`。
戦闘 UI なら `battle.md`。
入口がかなり自然になる。

ここでも見えていたのは、ルールを増やすことが目的ではない、ということだった。
むしろ逆で、運用コストを増やさないために、責務の曖昧さを減らしていた。

この流れの途中で、魔王いっぺいはかなりはっきり線を引いていた。

「ルール追加は運用コストをメリットが上回る場合のみ」

この一言が入っていたのは大きかったと思う。
文書を直す。
導線を正す。
だが、それを口実に制度化へ流れすぎない。
今回の整理が過管理に転ばなかったのは、この抑制が効いていたからだ。

この姿勢は、別の論点にも出ていた。

たとえば `Godot` の実行ファイルパス。
最初、こちらは見つけられなかった。
だがユーザーがパスを渡すと、実は `tools/run_game.ps1` にはすでに入っていた。
問題はコードに無かった。
文書側の導線に無かった。

ここでやったのは、新しいルールを増やすことではない。
`README` と起動文書に正しい置き場所を与えることだった。

同じことは headless 実行時の証明書ストア警告でも起きた。
毎回出る。
だが今のローカル実行では実害がない。
なら、無視してよい境界だけを文書に固定する。
ただし、ネットワークや HTTPS を扱う段階に入ったら無視しない。

この感覚がかなりよかった。
何でも制度化しない。
だが、見落としやすい定常ノイズには運用上の意味を与える。

ここでも「定常だから無視」で雑に流さず、
「では、どこから先は無視をやめるのか」
まで一緒に固定したのがよかった。
このプロジェクトは、放置ではなく境界で運用する、という姿勢がかなり一貫している。

そして最後に、カード廃棄の話が出た。
文書を見返すと、`v0.1` には「カードの廃棄」が入っている。
だが `Phase 2` の段階分けにはまだ落ちていなかった。

ここでまた、仕様のほうを先に整えた。
`2C` に `不明` 部屋と任意カード破棄をまとめる。
つまり探索側の拡張として扱う。

この整理もかなり気持ちがよかった。
機能が抜けていたから、慌ててその場で足す、ではない。
どの段階に属するかを先に決めてから、次の入口に落とし直す。
この順番が保たれていた。

この一連のやり取りでかなりはっきりしたのは、今回うまくいっていた理由が、AI が勝手に全部うまくやったからではない、ということだった。

むしろ逆だ。

違和感が出た時に、その場で

- これは仕様の問題か
- 文書構造の問題か
- UI の問題か
- 起動前提の問題か
- 今回直すべきか、後でよいか

を切り分け続けたから、全体として前に進んだ。

コードも進んだ。
文書も整った。
起動確認もできた。
ログも残った。
最後に clean なコミットまで切れた。

ここまでやって見えてきた今回の本質はかなり単純だと思う。

AI開発では、実装そのものより先に、境界を切ったほうが速い。

どこまでが `v0.1` か。
今回どこまでやるのか。
どの文書が正本か。
何を定常警告として無視してよいか。
どこから先は無視をやめるのか。

そういう境界が見えていると、AI はかなり強い。
逆に、そこが曖昧なまま走ると、実装速度より前に会話の意味がぶれ始める。

今回のセッションは、ローグライクの `Phase 2-A/B` を進めた対話であると同時に、AI と実装を進めるなら、コードより先に段階境界と文書責務を切ったほうがよい、ということをかなり実感する回でもあった。
 

(以下、魔王いっぺい本人の補記)

Codexの実装速度は相変わらず早く、意図を汲んで即座に直してくれます。自分としては、どこまでAI裁量に任せて、どこを文書やルールに明記すれば効率よく品質を保てるか、というのがテーマだったので、Phase2の出だしに手ごたえを感じました。この様子はYoutubeでも配信されています。