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

AIコーディング

2025年9月13日原文(geohot.github.io)

概要

  • AIによるコーディング の実態を批判的に論じる内容
  • コンパイラ との比較を通じてAIの限界を指摘
  • 英語プロンプト の曖昧さや非決定性に言及
  • ツール・言語の未熟さ がAI利用を促進しているとの見解
  • 本質的な技術進化 よりも過剰な期待や投資を問題視

AIによるコーディング幻想批判

  • 高齢になり 他人を説得することを諦めた心境
  • 多くの人々 は真実よりも自分の利益拡大(bag pumping)を重視
  • 「認識こそ現実」「真実は構築物」 と信じる人々への強い反感
  • 自動運転企業への巨額投資 が無駄だった理由の指摘
  • 「真実」より「儲かる真実」 の方が市場価値が高い現実

AIとコンパイラの本質的な違い

  • 「AIがコーディングできる」 という考えへの疑問
  • AIはコンパイラと同等、もしくは現状ではそれ以下 との主張
  • プログラミングAIの最適なモデルはコンパイラ という見解
    • プロンプト(「コード」)を入力し、出力を得る工程
    • インタラクティブな利用も可能だが、元のプロンプトを修正し再実行する方が効率的
  • 英語プロンプト の問題点
    • 英語は仕様の明確化に向かない曖昧な言語
    • 汎用的なワークフローでは機能するが、新規性が増すほど詳細な指定が必要
  • AIワークフローの非決定性
    • 同じプロンプトでも結果が異なる
    • コンパイラは言語仕様に従うが、英語には仕様がない
    • プロンプトの一部変更が全体に非局所的な影響を及ぼす

AIツールがもたらす誤解と問題点

  • AIコーディングが評価される背景 は、既存のコンパイラや言語、ライブラリの未熟さ
  • AI技術が極めて優れたツールを生み出す可能性 は認める
    • ただし、それは「AIがコーディングしている」からではなく、検索・最適化・パターン抽出能力によるもの
    • 実際には人間がコーディングしており、AIは単に異なるプログラミング言語として機能
  • LLMの導入はツール・言語の劣悪さの証左
  • AIが開発者を置き換える現象 は、過去のコンパイラやスプレッドシートによる職業変化と同様

今後のあるべき姿

  • AIをワークフローやコンパイラの一部として捉える視点 の重要性
  • 本質的な技術進化 を無視し、過度な期待や投資が繰り返されている現状への批判
  • 自動運転分野でも同様の批判 を受けた過去
  • 「真実」よりも「金儲け」を優先する思考への憤り
  • AI利用で生産性が20%向上したと感じても実際は19%遅くなる という研究結果
  • 本質的な課題解決(良い言語・コンパイラ・ライブラリ開発) への投資の必要性
    • だが、それは「 hype 」にならず巨額投資を集めにくい現実

Hackerたちの意見

Claude Codeを使って本格的にコーディングを始めたんだけど、ただの雰囲気コーディングじゃなくて、AIを使ったコーディングなんだ。2年間ずっとこのコードベースを扱ってきたのに、全体の理解度がかなり下がってるのを感じる。仲間の質問に答えるのが苦労してるよ。AIを使うべきじゃないって言ってるわけじゃないけど、その影響をちゃんと測って、必要な対策を講じるべきだと思う。生産性が上がるだけじゃないからね。

これが、俺が統合機能を使わない主な理由なんだ。チャットだけ使ってるのは、自分でコードを理解して挿入したいから。そうしないと、コードが理解を超えちゃうからね。

今週、MIDI統合プロジェクトのためにいくつかのPythonスクリプトを書いたよ(異なるケーブルタイプのデバイスが3つある)。何かが失敗したときのために、すぐにデバッグできるようにね(そう、こういうツールはあるけど、学ぶのが好きなんだ)。LLMを使って手伝ってもらうこともできたけど、そうするとあんまり学べなかったと思う。でも、オプションのメニューを表示するための管理ラッパーを作るのにLLMを使ったよ(今はCLIだけど)。それで簡単に1時間は節約できたかな。これが自分にとって「ちょっと複雑」なことに対する快適なレベルだね。

claudecodeを使いたいと思うんだけど、この問題が心配なんだ。どうやって自分を補完するように使えばいいの?裏で全てを書き換えられないようにするには?最適なプロトコルは何かな?常にコミットリクエストとレビュー?

私も似たような経験してる。約15万行のバックエンドコードのコードベースがあるんだけど、一方で、実際にコードを書くときはかなり生産性が上がって、たぶん400%くらい効率的になった気がする。同じ機能を何度も繰り返し改善して、完璧にすることができる。ただ、課題はコードレビューに移ってきた。今は、コードを書くよりも読む時間が圧倒的に多い。強いコード読みのスキルを身につける必要があるよ。私のプロセスは、読む、捨てる、書き直す、再度読む… って感じで、完成するまで繰り返してる。このアプローチは私には良い結果を生んでる。ただ、AIの助けを借りているときに、みんなが同じようにしっかりしたコードを作れるわけじゃないのが問題。多くの開発者は、コードが動けば満足しちゃうからね。私はすべてを手動でレビューするから、言及されていない問題を見つけることがよくある。レビューの際は、全体のコードベースを視覚化して、システムの範囲をしっかり理解するようにしてる。

もうすぐ50歳で、90年代後半からプロとしてコーディングしてる。頭の中でプロジェクトが見えるし、何を作るべきかもわかってる。やってることに対して結構いい報酬ももらってるし、AI反対派のプロトタイプみたいに思われるかもしれないけど、実はそうじゃない。何でも作れるけど、基本的な作業に時間を取られることが多いんだ。AIが退屈な作業をサクッと終わらせて、いい部分にたどり着くのが好き。AIの開発は、ジュニアとミッドレベルの間の開発者に似てると思う。考え抜いた指示を1、2段落渡せば、1時間の作業をこなしてくれる感じ。実際のジュニアが明日のシニア開発者に成長するのを妨げる可能性があるのは深刻な問題だけど、別の問題だね。

AIの助けを借りて作ったプロジェクトを見てみたいな。リンクをシェアしてくれない?

AIが退屈な作業をサクサク終わらせて、いい部分にたどり着くのが好き。特に、うちの組織のシニア開発者たちの中には、いい部分を恐れてAIに反対する人もいる。開発者はしばらくの間、退屈で簡単な作業の安全さを求めることが多いから。AIは仕事を常に難しい問題との闘いに変えてしまう。それが必ずしも良いこととは限らない。もし実際にスキルよりも時間でシニアだとしたら、挑戦的なことを限られた数だけ連続してこなすのは疲れるよね。企業は、AIを使って速くなるのは素晴らしいけど、人々には認知的な影響があることを理解する必要がある。ハードな作業から少し休むのは、時には本当に役立つこともある。全部を取り去っちゃうのは人にとって悪いことだと思う。それに、退屈で簡単な部分が嫌いで、逆に活躍できる開発者もいるから、個々の管理が大事だね。

その通りだね。Hotzは好きなんだけど、彼の説明によれば、すべての開発者は「コンパイラ」でもあるから、無意味な議論だよ。スタートアップの共同創業者として、いろんな役割をこなしている私の生活の質は、Cursorのようなツールが奪われたらかなり落ちると思う。退屈な作業を自分でやるのはすごく精神的な労力がいるから、先延ばしになって、遅れが出て、フラストレーションが溜まるんだ。そういう作業をAIに任せられるのは本当に価値があるし、私は「初日」からこの分野にいるから、どんなタスクを信頼してやらせられるかをよく理解していると思う。例えばこんな感じ: - コード全体にログを追加する - 深すぎる関数呼び出しをきれいなインターフェースのクラスにまとめる - データベースのテーブルから基本的な統計を表示するStreamlitダッシュボードを作る - このLLMプロンプトを修正して、誤字や不一致を直す - そう、英語の指示を英語のコードに「コンパイル」するのもすごくうまくいく! - このSQLテーブルの「create index」行をすべて書いて、パフォーマンスを良くする。実際、今はCopilot Chatに戻ってるけど、あんまり関係ないかな。

そうだね、残念ながら退屈な部分はジュニア開発者がやっていたから、シニア開発者が良い仕事に集中できたんだ。今やAIが退屈な作業をやっているから、あの厄介なジュニア開発者を雇う必要がなくなった。やったね?問題は、ジュニア開発者がシニア開発者を育てる存在だってこと。だから15年後、これはアメリカが得意だったけど、もうできなくなっていることの一つになるだろうね。製造業の重要な職業も同じように。製造業者は自分たちの即時的な利益しか考えていなくて、労働力の基本的な持続可能性や、彼らの業界を支える職業の健康を他の誰かに任せてしまった。まあ、他の人たちも同じことをしていたけど。

AIの力でつまらない部分をサクサク進めて、いいところにたどり着くのが好きなんだけど、問題はそのスピードランが時々すごく時間がかかって、効率が悪くなること。少しずつ改善してるけど(gpt5はすごいよね)、時々すごく地味な問題でつまずいて、介入しない限り無限に戻っちゃうことがあるんだ。しかも、単純な機能的なコードの話をしてる。

AIについては似たような考えを持ってる。私は「パーソナルアシスタント」として使うのが一番だと思ってる。必要な情報を瞬時に、時には非常に焦点を絞って提供してくれるから。 > 実際のジュニアを明日のシニア開発者に育てる成長を妨げる可能性があるのは、深刻な懸念だと思う。これは本当に現実的な問題だと思う。若い人たちがキャリアの初めに業界から締め出されているのを見ていて、すごく悲しい。経営者たちは、AIがまだシニアレベルを置き換える準備ができていないことを知っていると思うけど、すぐにできると自信を持っているから、若者からシニアが育たないことを心配していないんじゃないかな。もし彼らが間違った賭けをしたら、最悪だよね…

Hacker Newsで議論の続きを見る