AIと開発していて手が止まるとき、足りないのはたいてい根気ではありません。
問題の形が見えていないのです。細かいレビューばかりして進まない。何を指示すればいいか分からず、
曖昧な言い方になる。出てくる用語を、なんとなくで流している。
私はこれを、三つのものを頭の外に出すことで抜けました。git と、サイドチャットと、書いて公開すること。
それぞれ別のものを外に出しています。
詰まっている状態には、いくつか典型的な形があります。私が繰り返し落ちたのは次の3つです。
書いたコードを Codex に貼ってレビューしてもらい、返ってきた指摘を直す。また貼る。また指摘が返る。 また直す——これを延々と繰り返していました。
おかしいと思ったのは、指摘の中身です。変数名、エラー処理の抜け、命名の一貫性。 どれも間違ってはいないのですが、重箱の隅ばかりで、そもそもやりたかったことには近づいていかない。 時間だけが経ちました。
しばらく、なぜこうなるのか分かりませんでした。いまはこう考えています。
レビューを頼むとき、私は「何を見てほしいか」を言っていませんでした。 正確には、言えませんでした。何が論点なのかが、自分で分かっていなかったからです。
自分が指示すべきポイント・検討すべきポイントが分かっていないから、 この低生産性のループに入り込んでいるのではないか—— そう考えたのが、私の場合の転機でした。
そこでサイドチャットに切り替えて、用語や構造を理解しにいきました。 もやもやが晴れると、別の観点の指示が出せるようになる。 「ここを見てほしい」が言えるようになって、レビューの往復も意味を持ちはじめました。
往復を自動化する仕組みは コピペリレーを消す — Claude Code × Codex レビューループの自動化 に書きました。止まらなくなるのは自動化のせいではなく、観点を渡していないせいだと思っています。
観点が決まっていれば、往復が速いほど良い。決まっていないまま速く回すと、細部だけが速く増えます。
「もう少しいい感じにして」「ちゃんとエラー処理して」——曖昧な指示を出して、曖昧な結果が返ってくる。 それを見て、また曖昧に直させる。
具体的に指示できないのは、何が選択肢なのかを知らないからです。 選択肢を知らないと、選ぶことも、選ばない理由を言うこともできません。
出てくる単語の半分くらいは、なんとなくで流している。動いているから問題ない、と思っている。 しかし判断が必要になった瞬間、根拠がないことに気づきます。
頭の中だけで抱えていて、外に出していない。 問題の全体像も、経緯も、分からない用語も、全部その場の作業記憶に乗せたまま動いている。
作業記憶は狭いので、細部を見ている間は全体が落ち、全体を見ている間は細部が落ちます。 行ったり来たりするうちに、どちらも保持できなくなる。これが「詰まった」の正体だと思っています。
「外に出す」と一言で言っても、出すものが3種類あります。そして道具も別です。
3つとも、作業記憶を空けるための操作です。空けば、全体を見る余裕が出ます。 全体が見えれば、指示が具体的になります。指示が具体的になると、開発が動き出す。
8つのうち、いま自分に当てはまるものにチェックを入れてください。 正解を測るものではなく、どの外部化が足りていないかを見るためのものです。
三つのうち、いちばん効いたのにいちばん語られていないのがこれだと思います。
実装しているセッションは、文脈が重くなっています。ファイルを読み、方針を決め、コードを書いている。 そこで「そもそも◯◯って何ですか」と聞くと、2つのことが起きます。
だから別のチャットを開きます。そこは実装から切り離された場所で、素朴な質問をするコストがゼロです。 「バカな質問」ができる。しかも本流は止まっていません。
私がよく使う3つを置いておきます。そのまま貼れます。
いま【技術名】を使って【やろうとしていること】を進めています。 まだ用語が分かっていない前提で、全体像を教えてください。 - 何の層があって、どれが上に乗っているかを階層で - 各層が「何を解決するために」存在するのか - 私がいま触っているのは、どの層か 説明の中で出てくる用語のうち、初出のものには 短い言い換えを添えてください。
【技術名】について、次の3つに分けて説明してください。 1. 原理を3行で(なぜそう動くのか) 2. その原理から出てくる、実務で効く性質を3つ 3. その性質を知らないと踏む失敗を3つ 「使い方」は要りません。原理と、そこから導かれることだけ。
私のいまの要求は「【やりたいこと】」です。 これは要求であって、要件になっていないと思っています。 検証可能な要件に書き直すのを手伝ってください。 - 何を、どこまで、何を犠牲にして達成するのか - 「できた」と judged できる基準は何か - 私が決めていない前提があれば、決めるべき順に質問して 一度に全部答えず、まず質問を出してください。
詰まっているとき、多くの場合要求は言えています。「速くしたい」「使いやすくしたい」「自動化したい」。 言えていないのは要件です。
「速くしたい」は要求で、「1000件の処理を、メモリを2GB以内に抑えたまま、5秒以内に」は要件です。 後者になって初めて、設計判断ができます。何を犠牲にするかが書いてあるからです。
ここは私が長く分かっていなかったところです。要件定義を、日本語の作文だと思っていました。 やりたいことを丁寧に書けば伝わるはずだ、と。
伝わりません。要求と要件は、種類が違います。
| 要求(want) | 要件(requirement) | |
|---|---|---|
| 書き手 | 使う人の言葉 | 作る人が判断できる言葉 |
| 形 | 「〜したい」 | 「〜のとき、〜を、〜以内で」 |
| 検証 | できない(主観) | できる(測れる) |
| トレードオフ | 書かれていない | 何を捨てるかが書いてある |
| AIに渡すと | もっともらしい何かが返る | 設計の選択肢が返る |
そして重要なのは、この変換には原理の理解が要るということです。 何を犠牲にできるかは、その技術の性質を知らないと書けません。 メモリと速度が交換できるのか、精度と応答時間が交換できるのか——交換レートを知らないと、要件は書けない。
詰まっているときに原理を勉強するのは、遠回りに見えます。私の場合は、そこが抜け道になりました。ほかにも道はあるのだと思います。
原理が分かる → 何を犠牲にできるか分かる → 要件が書ける → 指示が具体的になる → 開発が動く。 この順序を飛ばして「もっといい感じに」と言い続けていたとき、私は何周かして同じ場所にいました。
3つめの外部化には、予想していなかった効果がありました。
分かったことを記事にしてサイトに出すと、その件を頭から降ろせます。 「あそこに書いた」という参照だけ持てばよくなり、内容そのものを保持しなくてよくなる。
抱えているときは、こうなっていました。
書き終わるまでは、頭から落ちません。中途半端に分かっているものほど居座ります。 書き切って初めて、手放せる。だから「忘れるために書く」というのは、比喩ではありません。
説明できないところが、分かっていないところでした。書いてみるまで、自分では気づけませんでした。
読んでいるときは分かった気になります。しかし書こうとすると、私はたいてい、ある一文で手が止まります。 そこが穴です。頭の中でぐるぐる考えていても、この穴は見つかりません。外に出す形式にして初めて、輪郭が出ます。
手元のメモでも半分は効きます。ただ、公開するつもりで書くと、精度が上がります。 「これ、他人が読んで分かるか」という検査が入るからです。
そして間違っていたら誰かが教えてくれる可能性が生まれます。手元のメモは、間違ったまま何年も残ります。
git に経緯が残っているから、何が分かっていないかが見えます。 「ここで3回詰まっている」は、履歴がないと気づけません。
サイドチャットで理解したことは、説明できる形になっています。だから記事にできる。 理解していないものは、書こうとすると手が止まるので、そこで分かります。
書いて手放すと、作業記憶が空きます。空いた分で、次の作業に戻れる。 そしてその作業がまた git に残る。
止まっていたときは、3つとも頭の中でやろうとしていました。 経緯も覚えておこうとし、分からない用語も抱えたままにし、理解したことも書かずに次へ進む。
それで回るほど、作業記憶は広くありません。能力の問題ではなく、容量の問題でした。 外に出す先を3つ作っただけで、同じ頭のまま前に進めるようになりました。
~/.claude/skills/ あたりが効きます。
手順は remote は、GitHubのことではない に仕組みの側から知りたい場合は Gitの内部構造を8層で読む が、まさに①のプロンプトで作った層構造の実例になっています。
作業記憶という説明が正しいのか、単に自分に合う比喩なのか——ここが分かっていません。 そう言い換えると腑に落ちる、という以上のことは言えないままです。
サイドチャットが効いた理由も切り分けられていません。 別のチャットに分けたから効いたのか、それとも単に聞き方を変えたからなのか。 後者だとしたら、本流の中でも同じことができるはずですが、試していません。
3つの外部化という整理も、後から振り返って形にしただけです。 当時は行き当たりばったりでした。順序立ててやったように書いてしまうのは、たぶん正確ではありません。
私の経験から書いていて、誰にでも当てはまるかは分かりません。 作業記憶の話も、そう説明すると腑に落ちるという以上のことは言えません。
合わなかった、あるいは別のやり方で抜けたという話があれば聞きたいです。 掲示板に置いていってください。うまくいった話より、詰まった話のほうが役に立ちます。