
AIコーディングは小さく切る|関数1個から始めるスコープ設計
AIに「この機能、まるっと作って」と頼んで、返ってきた大量のコード。 動かしてみると、どこかで落ちる。でも直そうにも、どこがどう間違っているのか分からない。結局ぜんぶ読み直して、手を入れて、また落ちて——気づけば、自分で最初から書いた方が速かったかもしれない。そんな夜、ありますよね。
これはあなたの読み込みが甘いわけでも、AIが賢くないわけでもありません。 多くの場合、原因は「一度に頼みすぎ」です。大きなかたまりで受け取ると、正しい部分と間違った部分が混ざり合って、切り分けができなくなる。だから直しづらい。
この記事は、AIコーディングを関数1個・1ファイルくらいの小さな単位に切って、検証しながら積み上げる進め方の話です。スコープを小さくするのは、AIを信用していないからではありません。間違いを早く・小さく見つけるための、実務的な段取りです。深掘りなので少し長めですが、一度に全部やる必要はありません。まず効く所から、一緒に見ていきましょう。
結論:AIに頼む単位は、「返ってきたコードを、自分がその場で読んで正しさを判断できる大きさ」まで小さく切ります。目安は関数1個〜1ファイル、差分にして数十行。大きな機能は、いきなり全体を頼まず、①入出力の決まった小さな部品に分解 → ②1つ頼む → ③すぐ動かして確認 → ④OKなら次を頼むの順で積み上げます。こうすると、間違いが混入しても直前の小さな差分の中に閉じ込められ、原因の切り分けと手直しが一気に楽になります。逆に大きく頼むほど、正しい所と間違った所が混ざって「どこから直せばいいか分からない」状態に陥ります。速さは大きく頼むことからではなく、小さく確かめながら進むことから生まれます。
急がば回れ、ではありません。 小さく切る方が、結果的に速い。これは根性論ではなく、手戻りの総量を減らすための段取りの話です。
なぜ「大きく頼む」と遅くなるのか

AIは、大きな依頼でもそれらしいコードを一気に返してくれます。 ここが落とし穴です。返ってくる量が多いほど「たくさん進んだ」気がしますが、実際には検証していないコードが一気に積み上がっただけです。動くかどうかは、まだ分かっていません。
大きく頼むと、具体的にこういうことが起きます。
- 正しい所と間違った所が混ざる:500行のうち480行は合っているのに、20行のせいで落ちる。でもその20行がどこかを探すのに、480行ぜんぶ読む羽目になります。
- 間違いが積み重なる:前半の小さな勘違い(型の取り違え、前提のズレ)を土台にして後半が書かれると、後半ごと作り直しになります。
- 直すと別の所が壊れる:全体が絡み合っているので、1か所直すと連鎖して別の所が壊れる。もぐら叩きが始まります。
- レビューが追いつかない:一度に大量の差分を人が正確に見るのは大変です。見きれないまま「たぶん大丈夫」で通してしまう危うさもあります。
つまり、大きく頼んで遅くなるのは、書く時間ではなく「直す・確かめる時間」が膨らむからです。 AIが数秒で吐き出したコードの検証を、人間が数十分かけて追いかける。この非対称が、体感の「AIで速くなったはずなのに」の正体です。
対策はシンプルです。一度に検証できる大きさまで、頼む単位を小さくする。次から、その「小さく切る」を具体的に見ていきます。
どこまで小さくするか——「その場で判断できる大きさ」
まず、切る大きさの基準を1つ決めます。 おすすめは、「返ってきたコードを、自分がその場で読んで、正しいかどうか判断できる大きさ」です。読んで判断できないほど大きいなら、それは切りすぎではなく、まだ大きすぎるサインです。
具体的な目安を出します(あくまで目安で、言語や難しさで前後します)。
| 単位 | 目安の大きさ | 向いている場面 |
|---|---|---|
| 関数1個 | 数行〜数十行 | ロジックが1つに閉じている処理。まずここから |
| 1ファイル | 数十行〜100行台 | 関連する関数がまとまった単位。部品ができてきたら |
| 機能まるごと | それ以上 | 原則、いきなり頼まない。分解してから |
いちばん扱いやすいのは、やはり関数1個です。 「入力はこれ、出力はこれ」がはっきりしていて、単体で動かして確かめられる。間違っていても、その関数の中だけを見れば済みます。まず関数1個をAIと組んで確実に通す——これがAIコーディングの安全な最小単位です。
判断に迷ったら、こう自問します。 「返ってきたら、自分は5分でこのコードの正しさを見極められるか?」——イエスなら、その大きさでOK。ノーなら、もう一段小さく切ります。
大きな機能を「小さく切る」分け方

「小さく」と言っても、大きな機能をどう割ればいいか。ここでつまずく人が多いので、分け方の観点を挙げます。
- 入力と出力で割る:処理を「何を受け取って、何を返すか」の単位で区切る。たとえば「CSVを読む → 中身を整える → DBに保存する」なら、これで3つの関数に割れます。それぞれ入出力がはっきりして、単体で試せます。
- 依存の少ない方から並べる:他に依存しない部品(データを整形するだけの関数など)を先に作り、それを使う部品を後に回す。土台から積む順にすると、前の部品を確かめてから次に進めます。
- 判断(ロジック)と入出力(DB・API・画面)を分ける:外部とやり取りする部分と、中で計算・判断する部分を分けておくと、ロジックだけを単体で試しやすくなります。
- 一番こわい所・分からない所を最初に小さく試す:全体の成否を握る「ここが動くか不安」という核を、先に小さく作って確かめる。ダメなら早い段階で気づけます。
分解のコツは、「一つひとつが、入出力の決まった単体で試せる部品になっているか」を確認することです。 ここがはっきりしていれば、AIにも頼みやすく、返ってきたコードも検証しやすい。逆に「なんとなく前半・後半」で割ると、境界が曖昧なままで結局まとめて直す羽目になります。
分解そのものをAIに手伝ってもらうのもありです。「この機能を、単体で試せる小さな部品に分けるとしたら、どういう単位が考えられる?」と設計の壁打ちから入ると、頼む前の見取り図が作れます。壁打ちの問いの立て方はAIを設計の壁打ち相手にする問いの立て方にまとめました。
小さく積み上げる4ステップ
分け方が決まったら、あとは1つずつ回します。基本の型はこの4つの繰り返しです。
1. 1つだけ頼む 分解した部品を、1つだけAIに頼みます。このとき、その部品の入力・出力・制約をそろえて渡すと、一発目の精度が上がります。渡す前提のそろえ方はAIにコードを書かせる前に渡す前提と制約が下敷きになります。「ついでにあれも」と欲張らず、1回1部品を守ります。
2. すぐ動かして確かめる 返ってきたら、溜めずにその場で動かします。関数1個なら、簡単な入力を与えて期待どおりの出力が返るかを見る。テストを1つ書いてもいいし、手で呼んで結果を見るだけでもいい。ここで「読んで理解できる」「動かして正しい」の2つを通します。最低限の動作確認の型は生成コードをそのまま使わない|最低限の動作確認を参照してください。
3. OKになってから、次に進む 確認が通ってから、次の部品を頼みます。前の部品が緑になっていない状態で先に進まない——これが積み上げの肝です。土台がぐらついたまま上に積むと、後で全部崩れます。もしここで直しが必要なら、直すのも小さな差分の中で済みます。
4. 部品がそろったら、つなぐ所だけを小さく頼む 部品が出そろったら、それらを組み合わせる部分(呼び出し順やデータの受け渡し)を、また小さく頼みます。つなぎ目も一つの「小さな単位」として扱えば、全体を一気に組ませて崩れるのを避けられます。
この4ステップの効きどころは、間違いが混入しても、直前の小さな差分の中に閉じ込められることです。 「さっき動いていたのに、今おかしい」なら、原因は直近で足した1部品にほぼ絞れます。切り分けにかかる時間が、大きく頼んだときとは比べものになりません。
それでも大きく頼みたくなったら
正直、小さく切るのは少し面倒です。一気に頼んで一気に返ってくる快感もあります。 だからこそ、大きく頼みたくなったときの歯止めを一つ持っておくと安心です。
- 「これは実験か、本番に入れるコードか」で分ける:捨てる前提の試作(動くか触ってみたいだけ)なら、大きく頼んで感触を見るのはありです。ただし、本番に入れるなら、必ず小さく作り直す。試作のまま本番に流し込まないのが境界線です。
- 不安な所だけ先に小さく試す:全部を小さくするのがつらい日でも、一番こわい所(性能・外部連携・複雑な条件分岐)だけは小さく先に確かめる。ここだけでも事故はかなり減ります。
- 大きく返ってきたら、読める大きさに切り直して受け取る:うっかり大きく頼んでしまっても、レビューは小さく。「まずこの関数だけ見る」と自分の中で区切れば、検証は小分けにできます。
大きく頼むこと自体が悪ではありません。 検証できない量を、検証しないまま本番に積むことが危ういのです。そこさえ守れば、場面に応じて大きさは選んでかまいません。
明日からやること(小さく始める3つ)
全部を仕組み化しようとすると重いので、まずこの3つから。
- 次の依頼を、関数1個に絞ってみる:いつも機能単位で頼んでいるなら、今日は1つだけ「関数1個」に切って頼む。返ってきたコードの見やすさが変わります。
- 頼む前に、部品への分け方を1回書き出す:「この機能は、どんな小さな部品に分かれるか」を箇条書きで3つほど。迷ったらAIに割ってもらう。頼む順番の地図ができます。
- 1部品ごとに、動かしてから次へ:溜めずに、1つ通してから次を頼む癖をつける。「前が緑になってから進む」を今日だけ守ってみてください。
この3つだけでも、「どこから直せばいいか分からない」夜がぐっと減ります。 慣れてきたら、分解の観点やつなぎ目の頼み方も足していけば十分です。
スコープを切るときのチェックリスト
依頼を送る前・受け取った後に、さっと確認します。全部に○が要るわけではなく、その依頼で関係する行だけで十分です。
頼む前(切り方)
- 頼む単位は「関数1個〜1ファイル」まで小さくなっているか
- その部品の入力・出力がはっきりしているか
- 「返ってきたら5分で正しさを判断できる」大きさか
- 大きな機能なら、単体で試せる部品に分解したか
- 一番こわい所を先に小さく試す順にしたか
受け取った後(積み上げ)
- 溜めずに、その場で動かして確かめたか
- 「読んで理解できる」「動かして正しい」の両方を通したか
- 前の部品が緑になってから、次を頼んでいるか
- つなぎ目も、小さな単位として頼んでいるか
- 本番に入れるコードを、試作のまま流していないか
この記事のまとめ
小さく切るのは、AIを疑うためではありません。 間違いを、早く・小さく・直しやすい形で見つけるための段取りです。関数1個から始めて、動かして確かめて、緑になったら次へ。この地味な積み上げが、実は一番の近道になります。

一度に全部を、うまくやろうとしなくて大丈夫です。 今日ひとつ「関数1個に絞って頼む」ができたなら、それはもう「どこから直せばいいか分からない」を減らす確かな一歩です。小さく頼んで、確かめて、次へ。前提のそろえ方は渡す前提と制約の型、受け取った後の見方はAI生成コードのレビュー・検証チェックリスト。この3つがそろうと、AIコーディングはずいぶん落ち着きます。