本文へ
ハクソク

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

コーディングは解決されていない

概要

  • AIによるコード生成 は進化しているが、「コーディングは解決済み」という主張には疑問
  • 保守性・信頼性・責任 などNFRは依然としてAIでは十分に対応不可
  • AIの長所と限界 を理解し、適切な用途で活用する重要性
  • AI過剰利用による品質低下 やスキルの陳腐化リスク
  • AIは力の増幅器 であり、人的関与と知識の深さが成果に直結

AIとコーディング「解決済み」論への反論

  • 「 AIが十分なコードを書ける」という意見は、ソフトウェア開発の本質を理解していない証左
  • 本番運用や大規模展開 では、保守性・信頼性・セキュリティ・スケーラビリティといったNFR(非機能要件)がコストの大半を占める現実
  • 機能要件ですら完全解決されていない 現状
  • LLM活用者の中には ダニング=クルーガー効果 が見られる(出力を読まない人ほど自信過剰)
  • コードの中身を読まずに済むプロダクト
    • 個人向けソフトウェア(自動化やDIYパッチなど)
    • POC(技術実証・製品実現性の確認)
    • 悪意あるAI(リスクを自覚し、意図的に危険性を利用)
  • 大半の商用ソフトウェアは 低リスク許容 が前提(医療・金融・自動車・防衛・発電・航空など)

AIの責任問題と現実的限界

  • AIは責任を負えない (罰則や責任追及が不可能)
  • 制御できないものに対して 人間も責任を持てない
  • LLMは 遊びや試作には有用 だが、品質・信頼性が重視される現場では不十分
  • AnthropicのClaude Code など、実際のAIツールにも多くの欠陥・不具合が存在

コーディングとAIの本質的な違い

  • コーディングは 論理性が本質。コンパイラエラーやランタイムエラーは論理の誤りを許さない
  • LLMがコード生成で成功するのは、 エラーをフィードバックループで修正 しているから
  • LLMは 確率的・統計的なモデル であり、論理的思考や大規模文脈処理が苦手
  • ハーネスやテスト、CoTなどの補助技術 で補っても、根本課題は残る

AI活用の現状と課題

  • LLMは コード生成・保守で一定の役割 を果たせるが、万能ではない
  • モデルが高価になっても 生産性向上とコスト増加が比例しない 局面が存在
  • コード品質の見極め能力 が低い人ほどAIコードを過信しやすい
  • 「AIで十分」と主張する人の特徴
    • 長らくコードを書いていない
    • 品質やNFRを軽視
    • Sカーブ(技術進化の限界)を理解しない
    • 単にAIの方が自分より上手いと正直

サービス品質とAI過剰利用のリスク

  • サービスの品質低下(GoogleやGitHubなど)に対する懸念
  • 信頼性・責任性より速度重視 の現場に苦言
  • AI過剰利用(AI overdose) はスキルの陳腐化やサービス劣化を招く
  • マネージャーが現場に 無理なAI導入を強要する危険性
  • 顧客満足度やサービスレベル で成果を評価すべき

AI過剰利用の兆候と対策

  • 異論や議論への 耐性ゼロ
  • AIに依存しすぎ て自分で思考・判断しなくなる
  • 長文や深い内容を読まなくなる 傾向
  • 人間との交流よりAIとの時間が増加
  • スキル維持・向上のためには AIを上回る価値創出 が不可欠

AIとプログラミング言語・仕様策定の現実

  • 「 英語が新たなプログラミング言語」論の問題点
    • 人間の言語は曖昧で矛盾しやすい
    • プログラミング言語やコンパイラはその矛盾を解消するために存在
    • AIが自然言語で仕様を完全に理解・矛盾解消するのは困難
  • 「 事前に完全な仕様書を作れる」という幻想
    • 実務経験者なら不可能と知っている
  • 「 手書きコードから解放された」という主張への警鐘
    • 進捗と速度を混同しない
    • PR数やSLOCなどの虚栄指標より 実際のサービス価値 を重視

AIと「味」や「創造性」の誤解

  • 「 レバレッジは“味”に移った」という主張の限界
    • “味”は誰でも持っており、市場価値は限定的
  • AIはイコライザーではなく増幅器
    • 質の低い成果も高い成果も拡大
    • 本当に価値ある成果は 人的関与・反復・知識の深さ で決まる

まとめ・提言

  • AIの進化は目覚ましいが、万能ではない
  • 品質・信頼性・責任性 を犠牲にしてまでAIを過信しない
  • AIと人間の役割分担 を見極め、スキルの陳腐化を防ぐ
  • AI過剰利用のリスク を認識し、適切なバランスで活用することが重要

Hackerたちの意見

私が見つけたのは、AIが怠け者で無能な開発者をさらに怠けさせて、無能にしてしまうってこと。これによって、製品の品質がどんどん悪化していくんだよね。今は大量のコードが出されているから、コードレビューもほぼ機能しなくなってる。怠け者や無能な開発者がひどいコードを出すのを防ぐための手段だったのに、もう誰もそんな量のコードを現実的にレビューできないからね。中にはAIを使ってコードをレビューする会社もあるけど、AIがコードを書いて、AIがレビューするって、どう考えてもおかしいよね。もし決定的な結果を期待しているなら、その愚かさに気づいてほしい。消費者が製品の質の低下に適応するのか、それとも反発して企業に開発者の質を上げさせるのか、時間が経てばわかるだろうね。ちなみに、私は毎日AIを使っていて、怠けず無能でなければ高品質なソフトウェアを作ることは全然可能だよ。

└

たとえあなたが有能でも、LLMの大混乱前に比べて、今は1日で5000行のコードを書くのをレビューするのは無理だよ。

└

怠け者で無能な開発者がひどいコードを出すのを防ぐための手段だったのに これを思い出させる分類があるよね。 https://en.wikipedia.org/wiki/Kurt_von_Hammerstein-Equord#Cl... 「私は4つのタイプを区別します。賢くて勤勉な者、愚かで怠け者、賢くて怠け者、愚かで勤勉な者です。通常、2つの特徴が組み合わさっています。賢くて勤勉な者は参謀本部に適しています。次に愚かで怠け者な者がいて、彼らは軍隊の90%を占め、ルーチン業務に向いています。賢くて怠け者な者は、難しい決断に必要な精神的な明晰さと神経の強さを持っているため、最高の指導職に適しています。愚かで勤勉な者には注意が必要です。彼には責任を持たせてはいけません。なぜなら、彼は常に損害を引き起こすからです。」

└

AIの限界は確かにあるけど、ひとつの修辞的なポイントが繰り返し出てきて混乱してるんだよね。> もし決定的な結果を期待しているなら、その愚かさに気づいてほしい。人間が生み出すコードに対して決定的であることを期待しているの?

└

言い換えれば、AIは倍増器なんだ。

└

AIがコードを作り、AIがコードをレビューする…ここにバカバカしさが見えると思うけど。AIコーディングエージェントが犯したエラーをどれだけ見つけるか、驚くと思うよ。でも、君が指摘したように、決定論的じゃないし、最終的な結果が100%完璧なコードになる保証はないよね。

└

注意:俺は毎日AIを使ってるけど、怠けず無能でなければ高品質なソフトウェアを作ることは全然可能だよ。一般的に俺が他の人にAIについて教えようとしていることは、素晴らしいツールになり得るけど、結果をチェックしなきゃダメってこと!特にエンジニアリングの場合は、確認してから再確認するのが大事だよ。

└

俺が見つけたのは、AIは怠け者で無能な開発者をさらに怠けさせ、無能にさせるってことだ。これが製品の質をより悪化させる、しかも早くね。そう思う。俺には、まるで「すべてに動的型付けを使う」流行のように見える。タイプ宣言は悪い、静的型付けは開発を遅くする、すべてを動的型付けにすればもっと早くコーディングできるって主張する若手や無能な開発者がたくさんいた。新しいプロジェクトの文脈では、彼らは完全に正しかった。負債が追いつくまで数年かかり、人々は自分たちが持っている巨大で型付けされていないモノリスがメンテナンス不可能だと気づいた。今では、二大動的言語(Python/JavaScript)は実質的に型付けされた言語になってる。真剣な仕事には型付けされていないバージョンは誰も使わないからね。動的型付けには素晴らしい使い道があるけど(インタラクティブなデータ探索や、クイックスクリプトの作成など)、最初に業界としてやろうとしたことは明らかにバカだったと思う。5〜10年後に、AIでやってることのいくつかを振り返って、同じように思うだろうね。Gastownのようなことがすでに起こってるし。

└

AIは怠け者で無能な開発者をさらに怠けさせ、無能にさせる。これを「LLMは怠け者で無能な開発者にもっと自由を与える」と表現するのが好き。

└

俺もそう感じてる。以前は動かないPRを出してた開発者と一緒に働いてたけど、今は一見動いてるように見えるPRを出してくる。でも、隠れた問題があるんだよね。例えば、ある人がビジュアライゼーションのために大きなPRを出してきたけど、別の開発者が言ってたように、俺たちはすでにrechartsを使ってて、それがこの人のPRの90%をカバーしてる(彼のコードは描画ロジックを全部自分でやってる)。AIがこういう混乱を片付けられるくらい良くなるかもしれないけど、近い将来にはドラゴンでいっぱいのコードベースが増えると思う。

└

俺が働いてたスタートアップには、コードが支離滅裂でバグだらけのエンジニアがいた。だから、そのエンジニアが何もしない方が実際には良かったんだ。彼らの純出力はマイナスだったからね。こういうエンジニアはLLMと組み合わさると武器化されて、マイナスの数がスケールアップするとさらに大きなマイナスになるんだ。

あなたが制御できないことに責任を持つことはできない。それを理解することが、システムの挙動を考えたり、AIが必然的に失敗したときに修正するための鍵なんだ。これは良い前提ではないよ。法律のあちこちで、制御できないことに責任を持たされる人がいるし、彼らはそれを受け入れている。子供を傷つける犬を解き放つか、逃げ出せる環境に置いてみて、何が起こるか見てみて。予測できない状況があって、その場合は責任を問われないこともある。問題が合理的なガイドラインを超えて発生することもあるからね。だから、あなたが制御できないはずのAIがすることや、AIが書いたコードに対して責任を問われることは当然なんだ。狼の群れを解き放つようなものだし、子供を傷つける可能性のある危険なおもちゃを売るようなものだよ。前例はどこにでもあるからね。

Hacker Newsで議論の続きを見る