世界を動かす技術を、日本語で。

AIに関する二つの物語

概要

  • AIによるプログラミング自動化 に関する2つの異なる見解の紹介
  • 一方は AIがプログラマーの仕事を急速に奪う という主張
  • もう一方は AI導入による生産性向上の懐疑的な結果 や冷静な意見
  • 実際の影響はまだ明確でなく、 過剰な楽観や悲観は禁物
  • 現時点では冷静な観察と柔軟な対応 が重要という結論

AIによるプログラミング自動化に関する2つの物語

  • Large Language Models(LLMs) は構造化されたテキストであるソースコード生成に適性
  • AIツール(Cursor、GitHub Copilotなど) の導入で作業時間が大幅短縮というCEOの発言
    • 例:Perplexity社CEO Aravind Srinivasは「3~4日かかる作業が1時間に短縮」と主張
    • 全社員にAIツール使用を義務化
  • AIによる業界変革や雇用喪失 を煽る記事の増加
    • Inc.誌:「ソフトウェアエンジニアリングの世界はAIで一変」
    • 投資系サイト:「AIによる技術職の6万4千人削減」
    • MicrosoftもAI進展を理由に人員削減との報道
  • コンピュータサイエンス分野の危機感
    • The Atlantic誌:「CSバブルの崩壊」をAIのせいと指摘
    • AIが「自分を作った人間」を置き換える存在という論調

反証的な見解と現場の声

  • AIツール導入による生産性向上の否定的な研究結果
    • METR社のランダム化比較試験:AIツール利用で作業時間が19%長くなる傾向
  • 現役エンジニアや経営者の冷静な意見
    • Simon Willison:「LLMsでプログラミングを辞めるのは、丸ノコで大工を辞めるようなもの」
    • Nick Khami:「AIで人員が激減するという話は誇張。キャリアを諦めるのは早計」
  • Microsoftの実際の人員削減理由
    • 実際はAIによる人員置き換えではなく、AI投資のための部門再編
  • CS専攻減少の本質的理由
    • パンデミック期の過剰投資の調整による業界全体の縮小
    • 就職市場の変動に応じてCS専攻者数は歴史的に上下

AIの影響に対する現時点での姿勢

  • AIの本当の影響はまだ誰にも分からない
    • 極端な楽観論・悲観論の両方を鵜呑みにしない重要性
    • AIに関する情報は幅広く収集し、信頼できる人の意見を聞く姿勢
    • 具体的な変化や実体験に注目し、冷静な判断を重視
  • AIは確かに重要な技術
    • しかし「なぜ」「どこまで」重要なのかは今後の観察が必要

Hackerたちの意見

ソフトウェア開発におけるAIの本当の恩恵を受けているのは、ボイラープレートやフレームワークの切り替え、その他の面倒な低価値タスクにうんざりしているシニア開発者たちだよ。StackOverflowを探し回って希望の光を見つけるという、昔ながらの面倒な作業を減らせるんだ。

でも、ボイラープレートコード生成を超えて見ると、LLMが経験豊富な開発者の生産性を本当に上げているわけではないことが分かるよ(彼らがそう信じていてもね):https://arxiv.org/abs/2507.09089 編集:ダウンボートした人たち、どの点が間違っていると思ったのか教えてほしいな。これがHNでの一般的なナラティブに反しているからなのか、それとも全く別の理由なのか。

AIに関する議論には、さまざまな利害関係者が絡んでいるよ。安く仕事をしたいテックCEOと、それを売りたいAI企業がいる。彼らは「AIが全ての開発者を置き換える」みたいな、すごく衝撃的な話をするんだ。それに対して、置き換えられないと思いたいテック従業員もいる。2022年以前のソフトウェアの雇用や収入に戻れることを期待して、今まで通りの働き方を続けたいのは簡単だよね。でもAIはそれを妨げていると思う。人々がいつも意図的にこうしているわけではないけど、これらのグループにはお金や社会的地位がかかっているから、AIコーディングについて中立的で無関心な視点を持つのはほとんど不可能だよ。それに、理性的で退屈な中庸の意見は、極端な意見よりも注目されにくいのが現実だね。

あなたには[ ... ]がある。次に[ ... ]がある。 実際のLLMの使用とは別の何かで定義されたグループで、あまり面白くないね。面白いのは、コード生成のためにLLMを使ってみて全く役に立たなかった人たちがいること。逆に、LLMを使ってコードを生成してみて、非常にうまくいったと信じている人たちもいる。

「それに、代わりがいないと思いたい技術系の社員もいる。」昔のように働き続けたい気持ちは分かるし、2022年以前のソフトウェアの採用や収入に戻りたいという希望もあるよね。でも、AIがそれを妨げてる。最終的には、LLMベースの新しいツールの限界が分かるようになって、人間がどこで大きな価値を加えられるかも見えてくるはず。それが最大限の採用ブームを引き起こすと思う。人が増えれば増えるほど、作業のスピードも上がるし、今度こそコードの質が大きく下がることはないかも。LLMがさらに出力の質を向上させて、エンジニアリングのワークフローが正常化すればだけど。希望的な見方だけどね。カスタマーサービスみたいな顧客志向の仕事には本当に申し訳ない気持ちになる。2020年以降、特にAIチャットボットやAIサポートラインがこの職種を壊滅させる傾向を見てきた。これらは一般的なホワイトカラーの仕事で、私たちの業界でも多くの人がサポートラインからスタートしてるからね。

わからないけど、私はソフトウェアエンジニアじゃない。システム管理者だ。もしくは「DevOpsエンジニア」?それとも「SRE」?それともプラットフォームエンジニア?正直、わからない。知ってるのは、みんなが私の仕事を無くそうとして、結局は違う肩書きでお金をもっともらおうとするってこと。やってることや使ってるツールは同じなのに、自分たちを納得させるために「実際には以前とは物質的に違う仕事だ」って言い訳するんだよね(でも、実際はそうじゃない)。20年経ってもまだ雇われてるし。私はソフトウェアエンジニアじゃないし、テクノロジーのCEOでもない。気にしないけど、キャリアの中でずっと置き換えられようとしてる(自分自身もね。「自動化して仕事を奪われる」っていうのはシステム管理者の一般的なマントラだし)。それでも、なんだかんだでまだここにいる。

「昔のように働き続けたい気持ちは分かる」そんな「昔の働き方」なんてないよ。安定した状態なんて存在しなかった。ソフトウェア開発はずっと、シンプルな部分の進化と自動化が常に進んできたんだから。 >「2022年以前のソフトウェアの採用や収入に戻りたいという希望もある」AIがそれを妨げてるわけじゃない。生産性の向上は、影響を受ける分野の需要や収入を減らすわけじゃないからね。(厳しい金融政策や経済の減速は、特に同時に起こると影響が大きいけど、スタートアップや既存企業の新しいベンチャーに投機的な投資が多い分野では特にそう。)

労働の価値が下がったよね。契約を見積もったけど、AIがあるから今はもっと短い時間でやってほしいって言われた。これで同じ仕事に対して報酬が減るんだ。AIのCEOたちは「社会は少ない仕事をするようになる」って言ってるけど、実際には今の方がもっと多くの仕事を求められてる。技術の進歩と同じだね。

ちょっと言いにくいことかもしれないけど、もしソフトウェアエンジニアリングがもうお金が稼げる場所じゃなくなったら、その仕事がなくなっても他のことに適応できる自信があるよ。俺は頭が良いし、一生懸命働くから。俺より頭が良くない人の仕事を奪う自信がある。賢い人と良い労働倫理を持った人は必要だと思うし、みんなが仕事を失うわけじゃない限り、そうなると思う。そうなったら、俺にとってはもうシンギュラリティのイベントホライズンを超えてるし、全ての賭けは無効になる。

自律的なLLMエージェントが未来の波だと言うのは早すぎるかもしれないけど、今のところそんな感じだね。AIのコード補完は素晴らしいけど、基本的にはより良いStack Overflowって感じ。Stack Overflowが開発者を失業させるって心配してた人はあんまりいなかったから、改善版が出ても心配してないよ。

LinkedInを見てると、今の求人市場ではシニアテックエグゼクティブがみんな生成AIの専門家になってるのが面白い。2020年に彼らがこんなに投稿してた時は、みんな暗号通貨の専門家だと思ってたからね。

なんでテックのCEOやCTOはAIが自分たちの仕事を「破壊」することに気づかないんだろう?誰でもコードが書けるなら、なんで君の会社にソフトウェアを作ってもらう必要があるの?非開発の仕事もAIの影響を受けると思う。今ならマーケティングコピーやHRポリシー、プロジェクトプランを同じかそれ以上のクオリティで生成できるからね。

AIはただのオートコンプリートだよ。AIが法律文書を書くとどうなるか見てみれば、なぜソフトウェア開発者を置き換えることができないのかがわかるよ。

AIの価値は個人的には簡単に見えるし、具体的でもある。でも、手元の具体的な価値と、それが大きなシステムでどう展開されるかの間には常にギャップがあるんだ。リモートで働ける能力は、直感的にはほとんど全ての知識労働を安い労働市場にアウトソーシングすることを示唆するかもしれないけど、実際にはそれはごく一部でしか起こっていない。世界は複雑で難しいから、疑いを持つことも大事だよ。

いいポイントだね。対面での仕事はリモートワークよりも帯域幅が高く、レイテンシが低いから、特定の役割ではリモートワーカーに任せたくないのもわかる。仕事の質が微妙に劣化することがあって、それが苦手な人もいるからね。人間にタスクを渡すのとLLMに渡すのでは、前もって考えるのが難しいコンテキストペナルティがあると思う。基本的には、LLMがタスクをこなすためにどんなシステムプロンプトが必要か、そして継続的なコンテキストストリームがどうなるかを最善の推測で決めることになる。でも、これらは複雑な評価パイプラインがない限り、比較的静的だと思う。だから、人間の労働者はタスクが変わったときに新しいコンテキストを見つけるのが早いと思う。カスタマーサービスがその代表例だね。多くのカスタマーサービスのタスクはLLMで処理できるけど、コンテキストを早く集められる人間が優れているエッジケースがたくさんあると思う。これが、Klarnaが今年初めにLLMに全力投球するという決定を覆した理由だと思う。

重要なのは、業界が経験している長期的な構造変化を見て、AIがその目標を助けているのか、妨げているのかを考えることだよ。一般的に、業界はランタイムからコンパイル時にエラーを押し出すために大きな努力をしている。エラーをキャッチするポイントを左から右に並べると、次のようになる:コンパイラでキャッチ -> コードレビュー -> テスト -> ランタイムチェック -> プロダクションで「キャッチ」業界はエラーを左に押し出そうとしているんだ。Rustや厳重なレビュー、安全性全般は、製造チェーンの早い段階で高価なエラーを排除することでコストを削減することに関するものだよ。どの業界でもそうで、工場で欠陥のある酸素マスクを見つけるのは、飛行機が炎上するよりもずっと安く済むんだ。また、設計段階で欠陥のある部品を見つけるのも、テスト中に見つけるよりも良い。AIはこれらのエラーを右に押し出そうとしている。エンジニアの時間を節約できる唯一の方法は、不十分なテスト、検証、レビューを通過することなんだ。プログラミングの90%の複雑さは、自分がやっていることのメンタルモデルを構築し、それが自分のやりたいことの仕様に合っているかを確認することにある。現在、その作業の多くは物理的な要素がない純粋なメンタルワークで、私たちはそれを安全な言語のコンパイラにどんどんオフロードし、スリップを最小限に抑えるためにテストやレビューを追加している。でも、安全な言語でも、全てが正しいことを確認するためには非常に高いメンタルワークが必要なんだ。テストとレビューは人間の脳の誤りをカバーするための一時的な手段なんだ。だから、確率的に正しいものを使ってその重要なメンタルワークを削減すると、後でより高価なエラーを導入することになる。短期的には問題ないかもしれないけど、長期的にはもっとお金がかかるよ。これが、私がAIが普及しないと思う主な理由なんだ。ソフトウェアを構築するのがなぜ複雑なのか、長期的に安くソフトウェアを生産するにはどうすればいいのかを理解していない人たちの短期的な考え方だと思う。それは、ボーイングが航空業界で苦境に立たされている理由と全く同じだよ。5年後に破産したいならAIを使えばいいけど、今は金持ちになれるよ。

確率的に正しいっていうのは、ある程度の閾値までの話だよね?9がいくつか並ぶと、まあ大丈夫だし。最近はAIを使って質問を投げかけたり、問題の理解を深めたり、既存のパターンやトレンドを深く調査したりして、その結果をプランニングセッションの文脈に使ってる。アーキテクチャのための文脈も提供されるしね。だから、ツールが本質的に右寄りに進むとは思わないんだ。

「短期的には大丈夫だけど、長期的にはもっとお金がかかる」それがAIが普及しない理由の一つだと思う。ソフトウェアを作るのがどれだけ複雑か理解してない人たちの短期的な考え方だから。長期的に安くソフトウェアを生産する方法も知らないしね。ボーイングが航空業界で厳しい状況にあるのも、まさにその理由だと思う。5年後に破産したくないならAIを使うべきじゃないけど、今すぐに金持ちになりたいなら別だね。技術的な観点から見るとあなたの分析は理にかなってるけど、結論がAIが普及する理由になってる。今すぐ金持ちになりたい人たちが長い間権力を握ってきたし、私たち技術者が「これは永遠には続かない」と言っても、すぐに止まるとは思えない。

短期的な考え方をしてる人たちが、ソフトウェアの複雑さを理解してないのが皮肉だよね。AIがあれば、誰が長期的に考えてるか、誰がそうじゃないかがちょっと分かりやすくなるかも(上層部も現場も)。 > 「5年後に破産したいならAIを使え。でも今は金持ちになりたいなら、AIを使ってさっさと抜けて、他の誰かに5年後に破産させればいい」って感じかな。

もっと広い視点で見ると、左側を見てみると:構想 -> 設計 -> コンパイラ -> コードレビュー... AIツールがより良い迅速なプロトタイピングを可能にするなら、構想や設計の段階で「エラー」を見つけるのに役立つかもしれないね。でも、実際どれくらい役に立つかは分からないけど。

業界はエラーを左に押し出そうとしている。これは本当?ほとんどのソフトウェア開発者はそうしたいと思ってるけど、ビジネスはスピードにもっと興味があると思う。エラーを右に押し出す方が、ほとんどのソフトウェアでは利益が出るみたいだし。10年も前からあるものでもね。

あなたはコード生成のためにLLMを見てるけど、それだけがソフトウェアエンジニアリングの応用じゃないよ。うちの会社では、何人かが自分のコードを生成するためにLLMを使ってるけど、もっと多くの人が同僚にレビューを依頼する前に初めてのコードレビューを得るために使ってる。これで簡単なことや細かいことを先に片付けられるから、フィードバック+修正のサイクルを1回減らせることが多い。例えば、「このユニットテストを変更したけど、ユニットテストの名前を更新してない」とか、「この関数を変更したけどドキュメントの文字列を更新してない」とか、「これらのif文を並べ替えれば深いネストを避けられる」とか。特に画期的なことではないけど、いいことだよね。レビューは前と同じようにやってるけど、「どうやって」よりも「何を」ちょっとだけ集中できることが多い。この使い方では、LLMはあまり厳密でないルールのリンターみたいな感じ。最近は多くの言語が標準フォーマッターを持ってるからって、コードレビューをやめたわけじゃないしね。AIのコード生成の側面が今はすごく注目されてるけど(記事を引用すると): > あなたが気にかけている領域で、AIに本当に関連している具体的な変化に焦点を当ててください。

これは本当にイライラするんだけど、面白いことに、時間をかけて人間を助けるためのツールがたくさん作られてきたのに、AIのコーディングツールはそれを無視してるんだよね。最高のAIコーディングツールは、ドキュメントのウェブサイトやターミナルのエラーメッセージを読み取ったり、テストを書いたり実行したりするけど、実際には使われてないもっといいツールがたくさんあるんだ。* プロファイラー * デバッガー * リンター * 静的解析ツール * ランゲージサーバープロトコル * ワイヤープロトコルアナライザー * デコンパイラー * コールグラフアナライザー * データベース構造クローラー もし完璧なワンショットソフトウェアエンジニアリングができるモデルがないなら、しっかり統合されたツールの使い方に頼るしかないけど、まだ誰もそれをうまくやってないみたい。

でも、PythonやJSでエクサバイト単位のコードが書かれてるよね… それって、すべてがコンパイル時に押し込まれてるっていう君の話には合わないと思う。C#、Java、Goは確かに人気だけど、他の言語に対してそんなに成長してるのかな?もし間違ってなければ、Rustは主にCやC++で使われてたプロジェクトで採用されてるみたいだよ。

これは最近聞いた中で一番いい意見だね。LLMのハイプに乗ってる友達や同僚に、蓄積されたエラーやエントロピーの厄介さ、コードに関わる必要があるときに人間のボトルネックが不均衡になることについて、少し違った形で説明してきたんだけど、君の言い回しはこれらをうまくまとめてる。ありがとう!

この議論で言うべきことをうまく表現してくれてありがとう。エラーを左に押しやるか右に押しやるかっていうのはすごくいいメタファーだし、メンタルモデルについてのメタファーも素晴らしいね。それに、自然言語が問題を適切に説明できない理由についての君のコメントも良かった。時には制約が解決プロセス中に発見されることがあるし、問題が適切に説明できるなら、それがプログラミング言語だっていうのもいいね。自然言語が問題を適切に説明できるなら、それは形式言語になる。失敗したプロジェクトを経験したエンジニアだけが君の言ってることを理解できるだろうし、AIマニアに取りつかれている人たちもすぐにそれを理解するようになるよ。

Recurse Centerは良い観察をしたね:

「未来の開発がどうなるかについて、かなり異なる見解があると思っていたけど、実際には私たちの卒業生たちが現在の状況をどう評価しているかに驚いた。」 「この不一致を説明するための要因が少なくとも3つ見つかった。まずは、LLMに対する経験の期間、深さ、最近性だ。LLMを使った経験が少ない人や、昔にしか使ったことがない人ほど、あまり価値を見出さない傾向があった(ここでの「昔」は数ヶ月前のことを指すかもしれない)。でも、これだけでは全ての不一致を説明するわけではなかった。2つ目の要因は、人々が気にしているプログラミングの仕事の種類だ。ここで言うのは、言語の使いやすさ、やっているタスクがモデルのトレーニングデータに含まれているかどうか、ボイラープレートの量などだ。ウェブアプリやデータビジュアライゼーション、Python、TypeScript、Goのスクリプトに取り組んでいるプログラマーは、LLMに大きな価値を見出す可能性が高い一方で、Cでシステムプログラミングをしている人や、カーボンキャプチャに取り組んでいる人、新しいML研究をしている人は、あまり役に立つとは思わない傾向があった。3つ目の要因は、人々が小規模な新規プロジェクト(単独または小さなチームで)に取り組んでいるのか、大規模な既存のコードベース(特に大企業で)に取り組んでいるのかだ。前者に対しては、今日のモデルの有用性を見出す可能性が高かった。」 — https://www.recurse.com/blog/191-developing-our-position-on-...

「カーボンキャプチャ」って、なんか特定すぎない?

AIを使っても、十分に優れたソフトウェア開発者にはなれないと思う。Googleマップのおかげで、地図を見ずにナビゲートする能力を失ってしまったし、AIでも同じことが起こるんじゃないかな。ちょっとした助けにはなるけど、誰かに手を引いてもらわないと目的地にたどり着けなくなるリスクがある。そうなると、行ったことのない場所にはどうやって行けるんだろう?

AIがみんなを置き換えるって言ってる人たちは、もうコードを実際にデプロイしてない人たちだよ。CEOやVPみたいな人たち。実際にコードをデプロイしてる人たちは、AIの限界をよく理解してる。良いプロンプトにカスタムコンテキストを加えれば、80%くらいまでは行ける。でも、AIと繰り返しやり取りすることで90%くらいにはなるけど、ちゃんとした経験があるシニアエンジニアじゃないと、何を聞くべきか分からないこともある。結局、最後の仕上げは自分でやらなきゃいけないし、結果的に動くコードはできるけど、最適ではないってことになる。

フレッド・ブルックスは「1つのバージョンは捨てるつもりで計画しろ、そうすることになるから」と言ったけど、彼が見落としたのは、捨てない1つのバージョンはほぼ永遠にメンテナンスしなきゃならないってことだよね。(SaaSの登場を見抜けなかったのは責められないかな?)もしAIの本当の価値がこの両側にあったらどうなる? * デモ中に使う捨てバージョンをすぐに作って、潜在顧客からフィードバックを集めて、どこが壊れるかを見る。これで10倍、100倍のスピードアップができて、役に立たない「フル」バージョンを作らずに済めば素晴らしいROIになるかも。 * その後、「ちゃんとした」システムを「古い」方法で作る。AIを強化版のオートコンプリートとして使って、1.5倍、2倍のスピードアップを狙う。 * それから、時間がないからやらないこと(テストやドキュメントなど)をLLMを使ってやる。ここでは、やらなかったら無限のスピードアップがあるし、価値があったらね。でも、権力者は次の機能に取り掛かるように君に求めるだろうね。 * LLMがバグを直すのにどう役立つかは分からないけど。要するに、2つのコードベースの「レーン」が並行して進化してる感じかな。1つはAI/人間比率が90/10、もう1つは30/70くらい?AIは早く積み上げるために、人間は耐えるために使う?

記事は二つのアジェンダを捉えてるね。現実は状況によって少し変わる。もしAIをエンジニアリングでどう使うべきか理解していれば、AIは君をスピードアップさせることができる。何を作ろうとしているのかを知っていて、基本を理解しているから、細かいタスクを委任するパイロットになれるんだ。バグが出たり要件が変わったりしたとき、AIを正しく導くための知識があるから、目標を達成できるし、ちゃんと達成できる。AIが行き詰まったときには、すぐに問題に取り組むことができる。君の経験は仕事やコードに接続されているから、時間とともに進化して改善され続けるよ。将来のプロジェクトでは、予想外の方法で君の経験を活かすことができるし、コミュニケーションスキルも向上するかもしれない。一方で、AIが不適切に使われると、速度の幻想を提供するかもしれない。知識や関与が不足していると、AIが進展できないことに気づくまでそうなる。単純な実装を超えたいのに、修正できないバグが出たり、新しい要件が満たせなかったりする。自分で深く関わることができないのは、仕事に注意を払っていなかったり、自分の専門外で動いていたりするから。どちらにしても、思っていた進展が実は無駄な時間や技術的負債の山かもしれないね。

金銭的なインセンティブがある人たちが主張をして、それに対して実際にシステムを扱っている専門家や研究者が反論したんだよね。それは「二つの物語」ってわけじゃないし、「無視しろ」って言うのは批判的思考に反するよ。

AIのコーディングアシスタントは、繰り返しの作業をかなり早く進めてくれるけど、真の文脈理解や長期的な設計の洞察、責任感が欠けてるんだ。人間の開発者は、重要な問題解決やデザインにはまだ欠かせない存在だよ。