VANNAN GAMES.

← 制作ノート一覧

ルールを決めた8日後に、自分でそれを破った——AIへの指示を4つのレイヤーに分けた

サイト全体

このサイトは、コードを書く作業の大半をAIに頼んで作っています。8月11日、そのAIに読ませている規約に1行足しました。「.js.css にキャッシュ用のクエリを付けない」。ブラウザに古いファイルを掴ませないための小細工なのですが、この2種類は配信の設定でそもそも毎回確認が入るようになっていて、付けるだけ無駄だったからです。既存のぶんも全部消しました。

8月19日、AIにオリ図鑑の画像へ版数を付ける作業を頼んでいて、そのついでに style.css?v=2game.js?v=2 が復活していました。8日後です。規約は、AIに読ませているファイルのほうにちゃんと書いてありました。

紛らわしいルールほど、書いただけでは効かない

このサイトでは、画像とスクリプトでキャッシュの扱いがになっています。画像は「一度取ったらずっと使い回してよい」という設定で配信しているので、差し替えたらURLに版数を付けないと永久に古いままです。逆にスクリプトとスタイルは毎回確認が入るので、版数は要りません。

つまり「画像には必須、js/cssには禁止」。この向きを間違えると、直したのに反映されないか、毎回よけいな通信が走るかのどちらかになります。8月19日の作業は画像に版数を付けるのが目的でした。手が滑るとしたら、まさにここです。

規約ファイルには書いてありました。ただ、そのファイルは11,000行あるメモ群の一部で、AIが画像を差し替えるたびに開くものではありません。書いてある場所と、読まれる場所が違いました。

入口は短く絞る

そこで、置き場所を4つに分けました。1つめは入口です。AIが作業を始めるたびに必ず読む短いファイルを1つ用意して、118行に収めました(この記事を書いた2026年8月19日時点。以下の数字も同じ)。中身は踏むと事故ることだけ。さっきのキャッシュの向き、公開してはいけないディレクトリの構造、本文の無いページに広告タグを置かない、といった項目が並んでいます。全部、過去に実際にやらかしたものです。

ここに「なぜそうなっているか」を書きたくなるのを我慢しました。理由は正典のほうにいくらでも書いてあります。入口が長くなると読まれなくなるので、案内と地雷だけにとどめています。読む相手がAIでも、人に渡す資料と同じ考えかたですね。

行数に根拠があるわけではありません。ただ、書きながら「これは入口に要るか?」と一度ずつ止まると、だいたいの項目は正典側へ送り返すことになりました。残ったのが118行だった、というだけです。足したくなったときは、代わりに何を落とすかを先に決めるようにしています。

作業の種類で出てくるレイヤーをつくる

2つめは、頼まれた作業の種類をAIが見て、自分で引っぱり出してくる手順書です。いまは4本あります。

素材の追加・差し替え   キャッシュの向きを間違えると事故
バランス数値の変更     本体とシミュレータの二箇所にある
制作ノートを書く       公開ペースに審査上の制約がある
ゲームを追加する       掲載箇所が多く、漏れる

共通しているのは、4本とも過去に事故った作業だということです。思いつきで手順書を増やしたものは1つもありません。

たとえばバランス数値のぶんは、こういう事故から生まれました。カードゲームの敵編成が、ゲーム本体では「硬いのが2体+弱いのが3体」なのに、勝率を測るシミュレータのほうは「同じ強さが5体」の古い設定のまま残っていたんです。両方を揃え直したら、上手いプレイの勝率が51.8%から49.1%に下がりました。2.7ポイントぶん甘い数字を見ながら、難易度を判断していたことになります。

AIが数値を触るときだけこの手順が出てきて、「本体とシミュレータの両方を直せ」と書いてある。それだけのものですが、それだけで足ります。

自分で呼ぶレイヤーと、並列で走らせるレイヤー

3つめは、私が自分で打って、AIに始めさせるコマンドです。点検を全部通す、シミュレータを回す、ブランチを切ってコミットしてPRを作る。この3つを用意しています。手順書との違いは、勝手に始まってほしくないこと。とくに最後のものは、PRを作るところで必ず止まるようにしてあります。マージするかどうかはAIに任せず、自分で決めたいので。

4つめが、並列で走らせる監査役です。AIを1ファイルに1体ずつ当てて、ドキュメントと実装のズレを洗わせます。ただしこちらは読む専門で、書き換えはさせていません。その話は別に書きました

どこに置くかの決めかた

迷ったときの基準は、いまのところこの2つです。

逆に、置かなかったものもあります。コンフリクトの直しかた、AdSenseの定期点検、リリース作業の一括手順。どれも「あったら便利そう」で止まっていて、まだ2回同じ説明をしていません。増やすのは簡単なので、増やさない理由のほうを持っておくようにしています。

忘れるのは相手ではない

ここまで書いておいて何ですが、この4つのレイヤーはAIのために作ったものではありませんでした。

8月19日に規約を破ったのは私です。手を動かしたのはAIですが、頼んだ私は画像に版数を付けることだけを見ていて、隣にある禁止のほうが頭から抜けていました。出てきた差分も、そのまま通しました。同じ紛らわしさは、半年後の自分にも同じように効きます。手順書を読み返すと、そのほとんどが「昔の自分が引っかかった場所」の一覧になっていて、少し気まずいです!

ルールは、書いた場所ではなく読まれる場所に置く。当たり前のことなのに、11,000行を書き溜めた後でようやく実感しました。

後日談: 入口は減って、正典は倍になった

この記事は8月19日に書いて、1か月ほど寝かせてから出しています。そのあいだに数字が動いたので、出す直前に数え直しました。

入口は118行から116行になりました。足す前に何を落とすか決める、という決めごとは守れています。正典のほうは11,000行から22,000行を超えて、1か月で倍です。手順書は4本から6本に増えました。足した2本は「作品紹介ページに開発の裏話を書いてしまう」「日本語が英語の直訳調になる」で、どちらも実際にやらかしてから作ったものです。事故った作業からしか生まれていない、は変わっていません。

いちばん増えたのは自分で打つコマンドで、3本から10本になりました。issueを先に立てる、制作ノートを1本出す、といった「勝手に始まってほしくない」ものと、アプリ版を端末で確かめる、Zennの記事を書く、といった手順が長すぎて名前で呼びたくなったものの2種類です。監査役は当時から2種類あって、記事に書いたドキュメント1ファイルずつのもののほかに、ゲーム1本ずつに当てるものがあります。こちらは増えていません。

シミュレータの勝率は、いま回し直すと49.0%でした(4,000回)。本文の49.1%と同じ設定で、ぶれの範囲です。