AIにコードを書かせるほど、仕様の曖昧さが表に出る理由
「とりあえずAIに書かせたら?」で、少し手が止まる
「形はすぐ出せそう。でも、これって何を作れば正解なんだろう…」
AIにコードを書かせる場面が増えるほど、こんな引っかかりが出てきませんか? 画面のたたき台、APIの処理、テストケース、エラーハンドリング。以前なら時間がかかっていたものも、今はかなり速く形になります。
でも、速く形になるからこそ怖いことがあります。仕様が曖昧なままでも、AIはそれっぽく埋めてくれるんですよね。未決の項目があっても、空欄のまま止まるのではなく、自然そうな前提を置いてコードにしてしまう。ぱっと見は進んでいるのに、あとから「その前提じゃなかった」が出る。
Stack Overflow の 2025 Developer Survey では、回答者の84%が開発プロセスでAIツールを使っている、または近く使う予定だとされています。一方で、AI出力の正確性については、信頼する回答より不信を持つ回答の方が多い結果でした。つまり、AIは現場にかなり入ってきているのに、出てきたものをそのまま任せてよいとは見られていません。
ここで役割価値になるのは、AIを使えることだけではありません。AIに渡す前に、何が決まっていて、何が未決で、何を仮置きするのかを分けられること です。この記事では、AIで実装が速くなるほどなぜ仕様の曖昧さが表に出るのか、そしてエンジニアがどこを整理すると仕事の価値として伝わりやすいのかを見ていきます。
AIは止まらずに、空白をそれっぽく埋める
人間同士なら、仕様が曖昧な時に会話が止まります。「ここはどうしますか」「このケースは対象ですか」「管理者だけですか、一般ユーザーも見ますか」と確認が入る。もちろん、質問が多すぎると前に進みにくいですが、少なくとも曖昧さが表に出ます。
AIの場合は、ここが少し違います。プロンプトに十分な前提がなくても、文脈から自然そうな答えを作ります。だから便利です。初稿や比較案を出すにはとても強い。ただし、仕様の空白まで自然に補ってしまうため、未決事項が「決まったように見えるコード」へ変わりやすいです。
未決事項が、コードの中で固定される
たとえば、請求一覧の検索機能を作るとします。仕様には「ステータスで絞り込めること」とだけ書いてある。AIに実装を頼むと、pending、paid、failed のような状態を仮に置き、URLパラメータやUIまで作ってくれるかもしれません。
でも、本当は「入金確認中」「再請求済み」「キャンセル済み」など、業務上の状態が別にあるかもしれない。権限によって見せる状態が違うかもしれない。会計側の確定タイミングと、画面上の表示タイミングがズレるかもしれない。
この時、AIが悪いわけではありません。渡した前提が足りなかっただけです。ただ、コードとして出てしまうと、周囲からは「もうだいたいできている」に見えます。そこから仕様の前提を戻すのは、意外と気まずいです。
それっぽい命名ほど、確認漏れに気づきにくい
AIの出力は、名前や構造が整って見えることがあります。関数名も自然で、コンポーネントも分かれていて、テスト名もそれっぽい。だからレビューする側も、つい「細かい修正だけでいけそう」と感じます。
でも、整ったコードと、正しい仕様は別です。変数名が自然でも、対象ユーザーが違うかもしれません。テストが通っても、業務上の境界条件が入っていないかもしれません。UIがきれいでも、承認者が見るべき情報が足りないかもしれません。
NIST の AI RMF Generative AI Profile は、生成AIのリスクを設計、開発、運用などの段階で管理するための資料です。開発現場でも同じで、生成物を「出力されたもの」として見るだけでなく、どの前提から出てきたのか、どのリスクが残っているのかまで扱う必要があります。AI出力のレビューは、コードの見た目より前に、前提のレビューから始まります。
曖昧さを責めるより、先に種類を分ける
仕様が曖昧な時に、いきなり「これでは実装できません」と返すと、相手にはブレーキに聞こえやすいです。逆に、曖昧なままAIで進めると、あとで手戻りが大きくなります。ここで必要なのは、曖昧さを責めることではなく、扱える形に分けることです。
実務でよく効くのは、曖昧さを3つに分ける見方です。今決めないと土台が変わるもの。仮置きして進められるもの。実際に触ってから判断した方がよいもの。この3つが混ざっていると、確認も実装も重くなります。
今決めるもの、仮置きするもの、試して見るもの
今決めるものは、後から変えると設計やデータ構造に響く項目です。権限、料金計算、ステータス定義、データの保持期間、外部連携の責任範囲などです。ここはAIでたたき台を出す前に、最低限の線を引いた方が安全です。
仮置きできるものは、後で差し替えても大きな手戻りになりにくい項目です。ラベル文言、並び順、初期表示の細部、空状態の表現などです。ここは「仮にこの前提で作ります」と明記して進めると、スピードを落としすぎずに済みます。
試して見るものは、実際に触ってみないと判断しにくい項目です。入力導線の分かりやすさ、一覧の情報量、通知の頻度、レビュー時の見落としやすさなどです。ここは、AIでプロトタイプを作って、触った結果で決める方が向いています。
質問を増やすより、重さを添える
AI時代の仕様確認では、質問の数よりも重さの説明が大事になります。質問を10個並べるだけだと、相手はどれから答えればいいか分かりません。「全部決まらないと進まないのかな」と受け取られることもあります。
たとえば、こう分けると伝わり方が変わります。
- 先に決めたい: 権限ごとの表示範囲。ここが変わるとAPIとテストが変わります。
- 仮置きしたい: 初期表示は直近30日。後からUI調整で変更できます。
- 試して判断したい: 一覧に表示する列数。プロトタイプで見てから絞りたいです。
この形なら、相手は全部を一度に決める必要がありません。自分も、どこまでAIに任せてよいかを判断しやすくなります。曖昧さを全部止める材料にするのではなく、進め方を選ぶ材料に変える という感覚です。
AIに任せるほど、人間の役割は前工程へ寄る
AIがコードを書くようになると、「エンジニアの価値は下がるのでは」と感じる人もいます。でも実際には、価値の場所が少し前へ移動していると見た方が近いです。書くことそのものだけでなく、何を書くべきか、どこまで書いてよいか、何を確認してから進めるかに寄っていく。
DORA の 2025年レポートは、AIをツール単体の効果ではなく、組織の強みや弱みを増幅するものとして整理しています。これは個人の仕事にも当てはまります。仕様整理やレビューの型がある人は、AIで速く進めやすい。逆に、曖昧なまま進める癖があると、その曖昧さも速く増幅されます。
「何を作るか」を先に言語化できる人が強くなる
AIに任せるほど、プロンプトの上手さだけが価値になるように見えるかもしれません。でも、実務で効くのはプロンプト文そのものより、作る前提の整理です。
「この画面を作って」ではなく、「管理者が月末に未処理の請求を確認する画面。一般ユーザーは見ない。ステータスは既存DBの4種類に合わせる。初期表示は直近30日。今回はCSV出力は対象外」。ここまで言えると、AIの出力もレビューもしやすくなります。
以前、仕様が曖昧なまま実装へ入って詰まる案件で、最初に効いたのは技術選定ではなく「対象外」を書くことでした。やらないことが見えると、AIに出させるコードも狭くなります。レビューする側も、何を見ればいいか分かります。
Definition of Done は、AI時代ほど効いてくる
Scrum Guide では、透明性が低い成果物は価値を下げたりリスクを増やしたりする判断につながると説明されています。また、Product Backlog Item が Definition of Done を満たさなければ、リリースやレビューに出せる状態ではないとも整理されています。
これは、AIを使う開発でもかなり実務的です。AIがコードを書いたかどうかではなく、何を満たしたら「完了」と言えるのか。既存仕様と照合したか。権限を確認したか。境界条件をテストしたか。ログやエラー時の動きは見たか。ここが曖昧だと、生成物の量だけ増えて、完了判断ができません。
AI時代のレビューでは、「動いたか」より「完了と言える条件を満たしたか」を先に見る。 ここを持てる人は、単なる実装者ではなく、品質と合意を支える人として見られやすくなります。
仕様整理を、価値として見える形にする
仕様の曖昧さを切り分ける仕事は、放っておくと見えにくいです。コードを書いた量に比べると、成果物として目立ちません。でも、AIを使うほど、この前工程はむしろ重要になります。見えないままにしておくと、ただ「AIで早く作った人」で終わってしまいます。
だから、仕様整理は作業前後のコミュニケーションに残した方がいいです。週報、レビューコメント、提案メモ、見積り、チケットのコメント。完璧なドキュメントでなくて構いません。判断の跡が少し見えるだけで、相手の安心感はかなり変わります。
チケットに「AIへ渡す前提」を残す
一番始めやすいのは、チケットにAIへ渡す前提を残すことです。長い仕様書ではなく、短い箇条書きで十分です。
- 対象ユーザー
- 今回含める範囲
- 今回含めない範囲
- 仮置きする仕様
- 人に確認してから確定する仕様
この5つがあるだけで、AIに出させるコードの前提が揃いやすくなります。あとからレビューする人も、「この前提なら妥当」「ここは未確認だから止めよう」と判断できます。
METR は2025年の実験で、経験あるオープンソース開発者がAIを使った時に、体感と実測の差が出たことを報告しました。ここから読みたいのは、AIの効果を雑に一般化しないことです。自分の現場でも、速くなった感覚だけでなく、何が速くなり、どこに確認コストが残るのかを見える形にした方がいいです。
週報では、実装量より「手戻りを減らした材料」を書く
週報や定例でも、仕様整理の価値は出せます。「AIで実装しました」だけだと、時短の話に寄ります。代わりに、「実装前に未決事項を3つに分け、権限まわりだけ先に確認したため、後戻りしやすい箇所を減らしました」と書く。
こうすると、相手はコードの量ではなく、進め方の安定性を見られます。特に業務委託やフリーランスの場合、ここは大事です。相手が欲しいのは、ただ速い人だけではありません。速く進めながら、あとで揉める前提を拾ってくれる人です。
仕様整理は、地味です。ですが、AIで実装が速くなるほど、地味な前工程の差が後から大きく出ます。AIに書かせる前に曖昧さを分けた事実は、ちゃんと価値として言葉にしていい。 ここを遠慮しない方が、役割も単価も広げやすくなります。
最後に
AIにコードを書かせること自体は、もう特別なことではなくなってきました。だからこそ、これから差が出るのは、AIを使う前に何を整え、出力されたあとに何を疑うかです。
仕様が曖昧なままでも、AIは止まらずに形を出してくれます。その速さは便利です。でも、未決事項まで勝手に確定したように見せてしまうことがあります。そこで必要なのは、AIを遠ざけることではありません。AIに渡す前に、決めること、仮置きすること、試して見ることを分けることです。
まずは次のチケットで、実装前に1つだけ書いてみてください。「ここは先に決めたい」「ここは仮置きで進める」「ここは触って判断する」。この3行だけでも、AIの出力は扱いやすくなります。
速く書ける時代ほど、先に立ち止まる人が効きます。止めるためではなく、手戻りなく前へ進めるために。そこに、AI時代のエンジニアの役割価値があります✨
参考にした情報
- Stack Overflow「2025 Developer Survey: Artificial intelligence」(2025年版、2026年7月5日確認)
- Google Cloud / DORA「State of AI-assisted Software Development 2025」(2025年版、2026年7月5日確認)
- NIST「AI Risk Management Framework」(2023年1月26日公開、2026年7月5日確認)
- NIST「AI RMF Generative AI Profile」(2024年7月26日公開、2026年7月5日確認)
- Scrum Guides「The 2020 Scrum Guide」(2020年11月版、2026年7月5日確認)
- METR「Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity」(2025年7月10日公開、2026年2月24日更新、2026年7月5日確認)