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

コパイロットの幻想

2025年5月23日原文(deplet.ing)

概要

  • 本記事は2025年5月時点のAIコーディング能力に基づく考察を展開
  • AIによるコーディング支援がもたらす功罪を、現場の視点から辛辣に描写
  • ペアプログラミングの実態やCopilotの有用性・危険性を具体例で説明
  • プログラマーとしての成長や、コードへの主体的な関与の重要性を強調
  • AI利用がプログラミング体験や人間的理解をどう変えるかを問題提起

AI時代のプログラミング現場と「Copilot」批判

第1章:同僚プログラマー、あるいはAIの化身

  • ペアプログラミング の現場で、知識や理解が浅い同僚と組まされる苦痛を描写
    • 共同作業なのに「脳」は共有できず、 生産性や品質の低下 を招くことを指摘
  • 理解不足のまま Stack Overflow からコピペしたコードを投入する同僚の例示
    • システム全体の理解不足 やチケット未読、グローバル状態の乱用などの問題提起
  • テストもプロファイリングもなく、 副作用や性能への配慮皆無 な実装を批判
  • バグを量産し、 「生産的」なふりをしてチーム全体の品質を損なう 危険性を強調
  • こうした同僚の行動が、実は GitHub CopilotやClaude CodexなどAIコーディング支援ツール そのものに酷似していると指摘
    • 「イノベーション」「進歩」 と称してAIが現場に導入される現状批判
  • 本物のコパイロット (副操縦士)はシステム全体を理解し、訓練・再認証を受けるプロであることを強調
    • Copilotはただの「過去のブログやStack Overflowの亡霊」であり、 本質的な貢献や責任感はない と断言

第2章:Copilotの功績と限界

  • Copilotの有用性 についても公平に評価
    • 未経験言語(例:C++)の 構文例やテンプレート生成 には便利と認める
    • ただし エッジケースや深い知識 には対応できず、 盲目的な信頼は危険 と警告
  • システム設計やインフラ構築時の ブレインストーミング支援 としては有効
    • 弱点やリスクの洗い出し を高速で提示できる点を評価
  • 単純作業や 疲労時の補助、複雑なコードの足場作りには役立つと認める
    • ただし 監督・検証の手間 は必須であり、 完全な信頼は禁物 と強調
  • 既存の複雑なコードベースの概要把握 には一定の助けとなるが、 全体像や詩的な説明は期待できない と指摘
  • 総括として「優秀ながら思慮の浅いインターン」 のような存在であり、 細部のニュアンスや独自性には弱い と評価

第3章:プログラマーとしての主体性とAI依存のリスク

  • プログラミングの本質的な楽しさ や創造性は、 監督者や中間管理職的なAIの監督 では得られないと主張
  • 「AIは退屈な部分だけ担当」との言い訳 に対し、
    • 本当に退屈なら 自動化やライブラリ化を自ら行うべき と提案
    • AI任せにすることで 学習・成長の機会が失われる 危険性を指摘
  • AIによるコード自動生成は、独自性や新規性の創出には向かない と断言
    • 既存知識の オートコンプリート機能 に過ぎないことを強調
  • コード品質の低下・抽象化の進行 によるパフォーマンス悪化や技術的負債の蓄積を警告
    • ハードウェアやメモリ、キャッシュミスへの意識の欠如 を問題視
  • 本物のコパイロットとの違い を再度強調
    • Copilotは訓練も責任もなく、 現場に「ロシアンルーレット」を持ち込む存在 と批判
  • 「本物のプログラマー」になるためには、機械への敬意と主体的な思考が不可欠 と結論

総括

  • AIコーディング支援ツールの導入は、進歩や効率化だけでなく、プログラマーの成長・主体性・コード品質に深刻な影響を及ぼす ことを論じる
  • AIの「便利さ」に流されず、プログラミングの本質や自分自身のスキル向上を重視すること を強く提案

Hackerたちの意見

いつもテレスコープする能力を持つことが鍵だと思う。コーディングエージェントが高いレベルを維持するのを助けてくれるけど、必要なときにはコードを理解したり修正したりする能力も常に必要だよね。

これ、身に染みるわ。毎日リーダーシップから「AIをもっと使ってない」とか「見積もりを半分にしろ、AI使うから」とか言われて、新しいAIツールを導入しなきゃいけないって言われてる。誰かが導入に関するKPIを追跡してて、うちのチームが十分にAIツールを使わなかったら解雇されて、もっとAIを使うチームに人員を回すことになるって。なんか、世の中が完全におかしくなった感じ。AIはいつも他の人の仕事を取って代わる道具として宣伝されてるけど、実際には他の人の仕事を理解してないからうまくいってるように見えるだけだよ。マネジメントはAI型のハンマーを持っていて、すべてを叩いてみてるだけ。

まあ、大きなハンマーを持ってると、すべてが釘に見えるよね。抵抗するんじゃなくて、なぜみんなが話してるような結果が出てないのかをもっと考えてみたらどう?もし過去2年間、あなたの生産性に何も変化がなかったら、問題はほぼあなたにあると思うよ。多くの人がそれが人生を変えるツールだと言ってるのに、何が間違ってるのかを見つけるのはエンジニアとしての責任じゃない?それとも、みんなが嘘をついてると思って、自分が正しいことをしてると思ってたの?言いづらいけど、これはあまり人気のない意見だけど、かなり厳しい真実だと思う。

マネジメントはAI型のハンマーを持っていて、すべてを叩いてみてるだけ。マネジメントを減らして、実際に仕事をすることに戻る方法を考えないといけないと思う。

これ、身に染みるわ。毎日リーダーシップから「AIをもっと使ってない」とか「見積もりを半分にしろ、AI使うから」とか言われて、新しいAIツールを導入しなきゃいけないって言われてる。これ、すべてが私が理解していたコンピュータ/開発/デザイン/"エンジニアリング"/建築/何でも呼ばれるこの職業に対して完全に逆行してる。通常、私は有能な技術的意思決定者がツールを統合したり、言語や「サービス」、プラットフォームを使うことを選ぶと思ってた。利点が見えれば、何が正しいアプローチかを示す「ケース」を作れるはずだって。つまり、どのように製品のニーズを満たし、欠点を解決し、効率を上げるかってこと。例えば「これが私の設計書で、$THINGをキャッシングに選んだ理由は$REASONで、$DATASTOREはblah blahを提供するから」って。「フィードバックや質問をください」って。これはそのアプローチとは全く異なる。理想的には、「私たちはCoPilot/他のLLMを使うつもりだから、あなたのワークフローに役立つか教えて、1ヶ月後にレポートをくれたら、それを基に続けるか決める」って感じ。

でも、マネジメントはすぐに去ることになるよ。もう一つの靴が落ちるのは確実だから、兄弟、これを約束するよ。強くいてね。

そうだね、これはただのハイプサイクルの現在のフェーズだよ。落ち着くさ。一部のツールやテクニックは残るけど、ほとんどはそうじゃない。どれが残るかを見極めて他人に影響を与えられれば、いい感じになるよ。

AIはいつも他の人の仕事を奪う道具として持ち上げられてるけど、実際には他の人の仕事を理解してないから良い仕事をしてるように見えるだけなんだよね。これはもっと多くの人が認めるべきよく考えられたポイントだと思う。確かに多くの仕事は単純作業や繰り返し作業だけど、色んな種類の仕事には、うまくやれば失われる微妙な部分がたくさんある。だから「AIが80%やってれば十分」なんて思わないよ。エラーはシステムを通じて広がるからね(そのシステムが会社や社会であっても)、そしてその「十分」と評価する人たちが必ずしもその分野の経験者とは限らないから。

確かに、これは共感できる。コパイロットの利点と欠点の両方ね。でも、子供やハッカーが職人だったのに対して、エンジニアはずっとエンジニアだったと思う。今日の基盤技術を作るために解決しなきゃいけなかった驚くべき技術的課題は、彼らがその課題を解決しなきゃいけなかったから存在してるんだ。これだけを見て「昔はこうだった」と言うのは生存者バイアスだよ。

20年以上、苦労してきたソフトウェアエンジニアとして、こう言えることを光栄に思う。難しい問題を楽しんでいる。CRUDアプリのアップデートは、頭をひねるようなランダムな中間の課題がなければ耐えられない。珍しい再帰アルゴリズムや、大学で実際に学んだ難解な知識の応用、大きなO推定を実際にやらなきゃいけないこと。これらは私のキャリアの宝物で、私を正気に保ってくれる。次のAI駆動のソフトウェアエンジニアたちが、AIが時々正しい答えを出したり、時にはひどく間違ったりすることを考慮して、これらのことをもっと評価してくれることを願っている。AIが幻覚を見始めたり、状況の文脈がコンテキストウィンドウを超えたりしたときに、実際に何をすべきか知っている人が常に必要だ。

ペースメーカーやミサイル誘導システム、M1戦車に組み込まれるようなソフトウェアを作りたいなら、そのボットを空気ロックから捨てて学ぶべきだよ。でも、ほとんどの人はそんなことしてない…ほぼ同じユーザーのニーズに対して、少し違う統合やスキーマ、化粧を施したCRUDアプリを作ってるだけだよ。正直に言おう。ほとんどのソフトウェアには新しいものなんてない。何千回も見られてきたし、だからこそ古い知恵を思い出して使ってもいいんじゃない?私にとって、コーディングエージェントはただのコード再利用の強化版だよ。ちなみに、この記事はAI生成っぽいね。

記事に対する反論は構わないけど、この特定の文章がAI生成だって言うのはバカげてるよ。著者のスタイルは生き生きとしていて、力強いイメージやメタファーを使っていて、時には本当に面白い。質的に見ても、著者は長いエッセイ全体を通して独自のアイデンティティを取り入れている。それをLLMにやらせるのはまだ難しい。これはAI生成じゃない。ただの良い文章だよ。前提を信じるかどうかは別として。

Hacker Newsで議論の続きを見る