AIがコードを吐き出す時代、水が引けば誰が裸で泳いでいたかが明らかになる
(evan-moon.github.io)重要ポイント
- ChatGPT登場から3年で、開発者の一日は「コードを書くこと」から「AIの出力を検証すること」へと移りつつある
- 開発者の役割は消えるのではなく、コードを書く人からレビューと承認の権限を持つ人へと重心が移っていると見るほうが近い
- AIは法的人格ではなく責任を負えず、EU AI Act などの規制も責任を人間に帰属させる方向で強化されている
- AI時代に求められる中核的な能力はプロンプト技術ではなく、長期的な変更コストの予測、抽象化の判断、暗黙知の言語化など、今でも優れた開発者に必要なものと本質的に同じである
- Fred Brooksの偶発的複雑性 vs 本質的複雑性という概念で説明すると、AIが解決するのは偶発的複雑性だけであり、ドメインの本質的複雑性には依然として人間の判断が必要である
- ツール習熟度(プロンプトエンジニアリングなど)の有効期限はツールの交代周期に縛られる一方、設計判断と暗黙知を言語化する能力は、ソフトウェアの本質的複雑性が存在する限り有効である
詳細まとめ
ChatGPT以後の3年
- 2022年末にChatGPTが登場した当時、これほどの速度で進化するとは予想していなかった
- 従来の開発者の定義: 「自然言語の要件分析 → 設計 → 自ら実装」をすべて行う人
- 現在は「AIに文脈を伝える → 生成されたコードを読んで直し、再依頼する」ことが一日のかなりの部分を占めている
- すでにAIコーディングエージェントは単純な補助の水準を超え、関数・モジュール単位では人が書いたコードと見分けがつきにくいレベルにある
書き手から意思決定者へ
- コードを生産する行為は「直接コードを書くこと」から「コードについて判断すること」へ移行している
- ここでいう「判断」とは、AIの出力が意図どおりかを確認することではなく、ビジネス上の意図が技術実装へ正しく翻訳されたかを検証すること
- 「AIが書いたコードで決済バグが起きたとき、誰が責任を負うのか?」という問いが核心である
- AIは法的人格ではないため、コードをレビューして承認した開発者と組織が責任主体となる
- 2024年施行のEU AI Act: 医療・金融・インフラなどの高リスク領域でAIシステムへの人間の監督を義務化
- 自動運転車の事故責任 → メーカー・運転者、FDA承認の医療AI → 最終判断は医師、2010年のFlash Crash → アルゴリズム運用主体が規制対象
- 自動化が高度化するほど、責任構造は曖昧になるのではなく、むしろより明確に人間側へ帰属する傾向がある
AI時代に開発者へ求められる能力
① 長期的な変更コストを予測する能力
- AIは「動くコード」を作ることに最適化されている(学習データでもっとも頻出するパターンを再現)
- 今すぐ動くコードと、6か月後も保守しやすいコードとでは基準がまったく異なる
- 悪い設計のコストは、コードを書いた時点ではなく、変更が必要になった時点で発生する
- LinkedInでは「AIで作ったが保守が難しくて開発者を雇った」「機能を追加できずに畳んだ」といった投稿が増えている
② コードを多面的に評価する能力
- 機能的な正しさ(テストで検証可能)を超えて、構造的品質、性能面の含意、セキュリティ面を同時に考慮しなければならない
- AIによるコード生成速度が上がるほど、生産速度とレビュー能力のあいだのバランスは崩れやすい
- 人が直接書いていた時代にはコード生産量に物理的な上限があったが、AIは数秒で数百行を生成する
- レビュー基準・並列レビュー体制・自動化ゲートが不十分であれば、技術的負債はさらに速く積み上がる
- 多くの会社がAI導入後に生産性向上を実感できない理由: コード生成は速くなったが、AIコードをレビューする工程がボトルネックだからである
③ 抽象化能力
- AIもインターフェース定義、クラス分離、モジュール分離ができ、形式的には上手にこなす
- 決定的な違い: AIの抽象化は統計的平均にもとづき、熟練開発者の抽象化は限られた資源と不確実な未来の中でのトレードオフ判断にもとづく
- AI出力コードの危険な点: 見た目には良く見えること。ファイルは適切に分かれ、命名も慣例に従い、パターンも見慣れたものになる
- 問題は変更が必要になった時に現れる: 「決済手段を一つ追加したいだけなのに、『きれいに見えた』構造のあちこちを同時に修正しなければならないと、その時になって初めて気づく」
- フロントエンドの例: AIは一つの巨大なコンポーネントにデータフェッチ・状態管理・UIレンダリングを詰め込んだり、逆に単純なチャート一つのためにカスタムフック3個 + コンテキストプロバイダーを作ったりもする
④ 暗黙知を明示化できる能力
- 「何かおかしい」という直感を、「この関数は2つの責務を持っている」という具体的な言葉へ変換できてこそ、AIに正確な指示を出せる
- few-shot、chain-of-thought のような形式的プロンプト技法ではなく、何を作るべきかを明確に定義し、どの文脈が重要かを判断して伝える能力のこと
- ツール習熟度の寿命: ツール交代周期に縛られる(jQuery → React、Webpack → Vite)
- 設計判断と暗黙知の言語化能力の寿命: ソフトウェアの本質的複雑性が存在する限り有効
意図的な訓練設計の必要性
- 「ツールにできないことへ集中しろ」と言われる一方で、それを育てる機会はむしろ減っているという逆説的な状況
① AIに渡してはいけない二つの地点: 設計とレビュー
- コード執筆前段階の設計: プロンプトを打つ前にインターフェースと責務の境界を先に定義すれば、AIの出力と自分の設計判断を比較できるようになる
- AIにPRレビューを任せ、特に問題がなければそのまま承認してしまう習慣 = 「体育の時間に運動場へ出て、ベンチに座っているだけで戻ってくること」
② 意図的に自分で書いてみる時間
- 設計感覚は実装の苦しさを知って初めて身につく。経験していない痛みは感覚として残らない
- ジュニア開発者: AI生成コードをレビューすることは、「まだ運転を学んでいる人に自動運転車の判断を評価させること」に近い
- 未来のコーディング能力: 毎日の業務ではなく、判断力を維持するための訓練(レビューアの免許を取る過程)
③ 「なぜ」を言語化する練習
- 「おかしい」で止まれば直感、「この関数は2つの責務を持っている」まで行けば言語になる
- AIが作ったコードが動くからといってそこで止まらず、「なぜこの構造を選んだのか」「別の構造ならトレードオフは何か」と自分に問いかける習慣
結局、本質は変わっていない
- Fred Brooks(1986): 偶発的複雑性(ツールの限界) vs 本質的複雑性(問題そのものに内在)
- AIが解決するのは偶発的複雑性 — ボイラープレート、反復パターン、文法エラー
- 本質的複雑性(ビジネス要件の曖昧さ、相反する設計目標のバランス、将来の変更に対する不確実性)は、AIが進化しても消えない
- 人間が判断と責任の主体であり続ける限り、判断に必要な能力の本質は変わらない
- コード生産が自動化されるほど、生産物を検証する判断力の比重がむしろ際立っていくだろう
14件のコメント
ご意見をいろいろといただき、ありがとうございます!
私が本文で「責任」に言及したのは、人間がAIよりあらゆる面でミスが少ないからではなく、現代社会の法的・倫理的システムが「責任を負う主体」として人間(または法人)しか想定していないためです。
gcback さんのおっしゃるとおり、統計的な安全性が証明されれば、将来的には責任の枠組み自体が変わる可能性もあるでしょう。しかし、少なくとも近い将来においては、「AIが起こした事故について、誰が刑務所に行くのか、あるいは賠償するのか」という社会的ジレンマが、技術のスピードに追いつくのは難しいと見ています..!
同じ考えです。興味深く読みました。
果たして水が引いているのでしょうか、それとも満ちてきているのでしょうか? 「AI時代に開発者に求められる能力」と言われても、さてどうでしょう……。開発者が今後も存在し続けるのであれば、ですが。
実際の業務でAIを活用する立場として、AI開発 -> AI成果物の監督という言葉には深く共感します。
そしてAIは本質的な複雑性の解消にも大きく役立っています。 [要件分析時の矛盾チェック、重複チェック、本質的な価値への問い]
AI盲信者がもっと増えるべきです。
なぜでしょうか?
これも過渡期なんだと思います。
有名なサッカー監督でも、選手出身ではない場合が多いですからね。
選出されたからではなく、理解度が高いから有名になったのだと思います。
でもサッカーの話になると、チョン・モンギュが思い浮かびますね。
選手出身でなくてもサッカー監督を務められるだけの資質を備えていて、試合結果に責任を負える人が監督をするということです。
そうですね、選手出身ではない監督もいます。
ただ、そのような監督は選手出身ではないからというよりも……選手出身でないにもかかわらず、選手以上の洞察を備えているからだと思います。その分野では、実質的に「超人」と呼んでもいいほどでしょう。
私も同意します
最近のハーネスやループ方式を見ると、人は仕様だけを渡して、レビューやQAまでAI同士で勝手に進める方向に向かっているように思います
同意します。
結局のところ、検収や確認の水準もAIが人間より高くならざるを得ないので、現時点で人間が責任を負うコストより低くならざるを得ないように思います。
人間であれAIであれ、統計的にミスが少ないほうが勝つゲームです。
監督の民主化?w 資質があるから監督をするのであって、資質がないのに監督をするわけではありません。