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

AIコーディングのコスト

概要

  • AIによるコーディングの生産性向上と見えないコストの存在
  • AI利用の最適なバランスと「認知的負債」のリスク
  • エンジニアのスキル低下やシニア層の崩壊現象
  • AI活用の現場と経営層の期待・現実ギャップ
  • AI利用指標の形骸化とGoodhart’s lawの問題

AIコーディング時代の新たな課題

  • AIによるコーディング が一般化し、生産性は向上
  • しかし、 見えないコスト (スキル低下・理解力喪失)が発生
  • コーディング支援AI(Copilot, Cursor等)の進化と普及
    • RAGによるコードベース理解
    • IDE統合やAIチャットによる体験一体化
  • エージェント型AIの登場
    • 自律的なAIコーディングの実験
    • 小さなミス・ループ・依存関係の幻覚など新たな問題
  • プロンプトやシステム指示で開発プロセスを制御する新しい現実
  • Opus 4.5等の登場で、AI主導のワークフローが一般化しつつある

認知的負債とスキルの劣化

  • Digital Dementia 理論:タスクをAIに委ねると脳の該当回路が弱体化
  • Cognitive Debt(認知的負債) :理解を伴わない開発で知識が蓄積されず、システムがブラックボックス化
  • 2026年のShen-Tamkin研究
    • AI支援グループは 概念理解・デバッグ・読解力が17%低下
    • 特にデバッグ力の低下が顕著
  • ダークフロー 現象:AIが難易度を奪い、成長機会が失われる
  • レビュー・パラドックス :AIが書いたコードを人間がレビューするが、そのスキル自体がAI利用で失われる

シニア層の崩壊とキャリアパスの変化

  • 伝統的なキャリアパス(ジュニア→ミッド→シニア)の崩壊
    • AI利用でジュニアが一見シニア並みのPRを提出
    • しかし 本質的な判断力や設計意図の理解が不足
  • シニアもAIレビュー専任化でスキルが劣化
  • 組織としてシニア層を育成する仕組みが機能不全に陥るリスク

経営層の期待と現場の現実

  • 経営層は AIによる自動化・生産性向上 を強く期待
    • Microsoft, Anthropic, Google等のトップが「AIが大半のコードを書く」と発言
    • しかし現実には 予測通り進行していない
  • AI利用率のKPI化 や「AIファースト」方針の問題
    • 指標を目標化すると Goodhart’s law が発動し、形骸化・コンプライアンス劇場化
  • AI利用を強制された現場では「メトリクスを満たすための無意味なAI利用」が横行

AI利用の最適化と今後の課題

  • AI利用の閾値設定 は単純な指標では困難
    • トップエンジニアがAIを拒否、ジュニアがAI依存、現場の多様性
  • 本質的なスキル醸成AI活用のバランス をどう取るかが今後の課題
    • 「AI生成コードの理解を人間に義務付ける」などの対策案
  • エンジニアリング文化の再構築 が求められる時代

Hackerたちの意見

こんにちはHN、私はこの1年間ずっとClaude Codeを使いまくってきたんだ。最近、HNや/r/ExperiencedDevsで仲間たちの感情に変化があるのに気づいた。AIを使いすぎることの隠れたコストについて、まだ具体的なデータはないけど、いくつか考えをまとめてみたよ。今、多くの人が感じていることを言語化したいと思ってる。みんなの意見を聞かせてほしいな。

面白い読み物だね。観客は「私たちはAGIに向かっている!」というタイムラインでXeno's Arrowが出てくるのを見られる。これは「軌道は本物だけど、タイムラインはずれ続けている」という良いビジュアル表現だね。でも、ずっと「[リテールソフトウェア]はただのツールだ」というのは変な表現だと思ってる。過去20年間でよく聞いたけど、「ただの」ツールってどういうこと? なんでいつもそういう言い方なの? 複数ページのエッセイの真っ最中に、ツールの役割を考えすぎてるってどういうこと? たまにラックに何かを取り付けるためにドライバーを使うITの人が、他のコンピュータ作業に与える影響を気にする人はいないよね。「思考に向かっているツール」を優遇するのがこんなに一貫しているのは変だと思う。 >「私はプロンプトに依存している、これが快感なんだ」と言ったけど、この正直さはありがたい。ただ、また言うけど、「このハッシュパイプはただのツールだ」というのはこの発言の後には出てこなかったよね。それと、依存症って神経的なものじゃなくて行動的なものじゃない? 「もう君の中に火花はない」みたいな状況の行動的な影響について、フォローアップしてみたらどう? 「私はプロンプト中毒者じゃない」っていう新しいアイデンティティを見つけたら、それは何になると思う?

この投稿を読むことを勧めるよ:https://factory.strongdm.ai ここ数週間前にフロントページに載ったけど、ほとんどの人は真剣に受け止めず、$1000/日でトークンの部分に引っかかってたと思う。私はこのアプローチがほぼすべてのソフトウェア開発の未来だと確信している。要は、十分なトークンを使う意欲があれば、現在のモデルはすでにどんなソフトウェアタスクも完了できるってこと。適切なフレームワークがあれば、コードについて考える必要は全くなく、結果だけを考えればいい。業界がこんな方向に進んでいるのは好きじゃないけど、そのアプローチを考えれば考えるほど、避けられないと思うようになってきた。

ありがとう、いいね!まとめてくれてありがとう。

今週、精神的疲労についての同じコメントを見て、これについて書きたい衝動が湧いたんだ。リサーチ段階までしか進んでないけど、楽しんでいないことが認知に与えるリスクについて調べた文献をいくつか見つけたよ。作業記憶は「ゲーティング」されていて、目標に関連する情報だけを選んで処理するんだ。例えば、車をバックさせるときにラジオを切る理由とかね。(多くの論文がこれを前提にしているけど、具体的なゲーティングモデルを発展させたものは見つからなかった)作業記憶と訓練可能性については、ここを見てみてね: https://www.nature.com/articles/nrn.2016.43 作業記憶は(潜在的に)ドーパミンに反応して、使うことで拡張されるんだ。メンタルモデルを構築することについて、何かを書くと、タイピングよりも脳を多く使う(認知オフローディング): https://www.scientificamerican.com/article/why-writing-by-ha... タイピングはただ読むよりも良いと思うし、プログラミングにはいくつかの追加要素が必要だよね。コードを再配置するためにカット&ペーストしたり、テストを実行したり、さまざまなコードの場所を空間的にナビゲートしたりするから、手書きの研究に近い結果になると思う。でも、それに関する具体的な研究は持ってないんだ。報酬(お金)を楽しみやフロー状態の代理として使うことについて、これらの2つは似たような基本デザインの実験を使っているよ: https://www.nature.com/articles/s41598-025-09949-1 「参加者は、試行の最初に報酬レベルを示す報酬キューを持つ遅延推定オリエンテーション作業記憶(WM)タスクを実行しました。結果は、動機付けのインセンティブがWMパフォーマンスを大幅に改善し、維持中の瞳孔の拡張を増加させることを示しました。これらの発見は、強化されたトップダウンの認知制御プロセスを通じて報酬によるWM維持の調整の証拠を提供します。」 https://www.jneurosci.org/content/39/43/8549 > 「タスクの間、報酬の見込みは試行ごとに異なりました。参加者は高報酬の試行でより速く、より正確な判断を下しました。重要なのは、高報酬がアクティブなタスクルールの神経コーディングを強化し、この増加の程度がタスクパフォーマンスの改善と関連していたことです。」 彼らの実験から、低報酬=あまり気を使わないということも推測できるよね。これらの論文は驚くべきものではないと思うけど、多くの人が真実だと感じているけど証明できない何かを測定しているんだ。これらの論文はAIやスキルの低下について具体的には触れていないけど、低報酬や受動的なタスク実行のときには多くの利点が得られないと言えると思う。機械にリプランプするだけのレビューコメントを残していると、相手が人間じゃないから、普通のコードレビューよりも価値が低く感じるよね。AIを使うべきタイミングは、タスクがどれだけ痛いか、低報酬かに密接に関連しているべきだと思う。10分のビルド/テストループで、制御が難しいミステリーな問題をデバッグする?AIに任せよう。複雑だけど楽しいビジネスルールを書く?まだ糖分が効いているうちに自分の頭で考えよう。「簡単な」バグを3回連続で直せなかった?少しの不快感やフラストレーションを乗り越えてみて。それでも、合理的な努力を投資して少し疲れを感じ始めたら、道具に戻るのがいいと思うよ。

このブログを書いてくれてありがとう。他の人たちもこの影響に気づき始めて、書いてるね。もっと多くの声が聞かれることが大事だと思う。特に「あなたの閾値を見つける」って部分が響いたな。「開発者は創造のドーパミンヒットが必要だ」っていうのも印象的だった。俺もこの現象についてブログを書いてるんだけど、リーダーが組織にコードを書くこととレビューすることの健全で持続可能なバランスを保つ手助けができるって視点でね。https://www.exploravention.com/blogs/soft_arch_agentic_ai/

速度向上なんてどうでもいいよ。毎日手でコードを書いて、自分が何をしているかを理解しているから。心配する必要もないしね。もしコードを読むのが面倒なら、ずっと前に人に外注してたかもしれない。

プログラマーの速度や効率がそんなに重要な競争要因なら、騒がしくて息苦しいオープンプランのオフィスに彼らを詰め込むなんてことはしないよね。

これらのツールを使うように管理からプレッシャーを感じてる?データはないけど、私と話すほとんどのソフトウェアエンジニアがそのプレッシャーを感じてるか、感じたことがあるよ。

そうだね。努力なしに幸せはない。たまに猫を世話したくなるときは、実際の猫を飼うことにしたよ。少なくとも、彼らはエンジニアのふりをしないからね。

ちょっと聞きたいんだけど、ページングってどうやって動くの?

この考え方はITの世界では通用しないよ。常に変化が早くて、新しいツールやアプローチに適応し続ける学びが必要なんだ。

私は80年代初頭に、LSI-11プロセッサのコードを教えてくれたシニアプログラマーの元でコーディングの見習いを始めた。オクタルプロセッサのオペコードのテーブルを全部暗記して、PDP-11でプログラムを書くためにデータと組み合わせる方法を学んだ。プログラムの中の各16ビットの単語が何をしているのかを理解できたのは素晴らしいスキルだった。でも、その同じ人がFORTRAN 83を教えてくれて、オペコードで書くことがもう面白くないって気づいた。10倍生産的になれて、苦しむことも少なくなるからね。今は何年も経って、プログラミング言語もたくさんあるけど、LSI-11のオペコードのスキルが完全に衰えても、そのスキルを失ったことを全く後悔していない。C++やJavaなどのコーディングスキルがいつか衰えることを後悔する理由はないと思う。それはもう必要なくなるってことだから。

今と昔の違いは、論理から雰囲気への大きなスキルシフトと、この技術によって自分が置き換えられることへの恐れだね。これまでの規模ではそんなことはなかった。俺たちはこの恐れを持ってないけど、多くの同僚はこの新しい技術を恐れてるし、うまくやってるように見える同僚もいる。

一つ大きな違いは、すべてのプログラミング言語、マシンコードでもPythonでも、常に望む計算やアルゴリズムを正確に表現するための言語だったことだ。AIエージェントと働くってことは、プログラムにやってほしいことを英語で指定することになるけど、それは正確じゃないよね。英語の擬似コードを書かない限り。(そう、コンパイラが裏でいろいろやってるのは知ってるけど、-Ofastを使ってない限り、アセンブリはナイーブなコンパイルと同じようなブラックボックスだよ。)

これは間違った比較だと思うし、時間が経てば認知科学がこれを証明すると思ってる。「今、何年も経ってプログラミング言語も増え、LSI-11のオペコードのスキルが完全に退化しても、そのスキルを失ったことを全く後悔していない。」でも、オペコードについて考えることで発展させた認知能力は、FORTRANやその後継を学ぶのをほぼ確実に楽にしてくれたはず。LSI-11オペコード、FORTRAN 83、C++、ラムダ計算などは、論理的に考えることができる形式的な言語だ。私たちは、実際に論理的な推論に合った結果を出すマシン(ハードウェアや仮想)を実装することもできる。これが一般的に、人々がこれらの言語を「決定論的」と呼ぶ理由だと思う。形式的な言語について考えるのは、コードの変更を促してレビューするよりも、はるかに認知的に要求されることが明らかだと思う。

LLMにプログラミングをさせると、君はプログラマーじゃなくてプロダクトマネージャーだよ。

手でコードを書くことや、その実行やアーキテクチャのメンタルモデルを管理することは、良い製品を届けて人々に使ってもらうことや、役に立つこと以外で、日常の数少ない喜びの一つだよ。小さなこと、リファクタリングや最初のCRUDボイラープレートを整えるような面倒な作業も、俺にとっては大事なステップなんだ。手のひらのタコも、退屈さも、全部意味がある。こういう痛みや面倒な瞬間が、次回どうすればいいかを教えてくれる。特定のツールが押し付けられたら、そういうことを感謝できなくなるんじゃないかと心配してる。だから、いつか振り子が逆に振れることを期待して残ってるんだ。

だから、「ああ、AIがテストを全部書いてくれるから、すごく楽だよね」って言ってる人を見ると笑っちゃう。もしコードがテストしづらいなら、抽象化やインターフェースを変える必要があるよ。テストはコードの最初の再利用だから、テストで使うのが面倒なら、一般的にも使いづらいってことだ。

いいこと言ったね。フロントエンドのJavaScriptコードを書くときは、Copilotを一番よく使ってるんだ。LLMのおかげで、フロントエンドのライブラリやブラウザの標準を改善するインセンティブが消えちゃうのかな?

これには完全に共感する。少なくとも自分のオンラインのバブルの中では、同じように感じている人はあまりいないけど、君は一人じゃないよ。最終的には、出力を理解しレビューするだけでなく、自分で選択をし、知識や判断力を鋭く保つために努力してきた人たちを評価するようになると信じているし、そうなることを願っている。

君の意見、めっちゃ好きだよ <3

タコの硬さが大事なんだよね。退屈さも大事。うん、いいこと言ったね。

俺はそのすべてを続けてるけど、クラウドにタイピングさせてるんだ。分かるかな?ほぼ一行ずつ指示してるけど、もう文法の筋トレには興味がないんだよね。

ちょっと言いたいことがあって、俺の仕事では手書きでコードを書くのがデバッグにめっちゃ役立ってる。自分が書いたコードだと、何が間違えるかのメンタルモデルが作りやすいんだ。どんなにログを投げても、LLMがこういう問題を解決できるわけじゃないよ。

特にジュニアからミッドエンジニアにとっては本当にそうだね。脳は繰り返しやることを記憶して理解するから。数学の問題を解かないと、どうやって解くか分からないんだよね。どんなに似たような問題を解いてる動画を見ても。これがLLMの早期使用が最終的に導く結果で、「ああ、俺がシニアになる頃にはLLMは俺よりずっと良くなってるだろう」って言う人は、逆に俺の言ってることを証明してるだけだよ。

これは素晴らしくバランスの取れた正確な意見だね。AIを使って自分を助けるための適切な手段を探してた。実装すべき三つのパターンと避けるべきものについて、全く同感だよ。もしこの三つの良いパターンを守れば、これらのAIツールは私たちをより知識豊かで生産的にしてくれる。私たちは認知能力を維持し、難しい問題を解決する手段としてのコード開発への欲求を持ち続けられる。一方で、アンチパターンを採用すると、AIへの過度な依存や、ツールがダウンしたときの不安(これ、実際に起こるから!)、デバッグ能力の退化、即時の満足感やクイックフィックスへの渇望につながる可能性がある。最も厄介なのは、コードが本来開発者が考慮すべきケースで失敗したとき、AIツールに投げ返すしかなくなってしまい、不安、無力感、認知の衰退の悪循環を生むことだ。

ボイラープレートとスキャフォールディング これらのことを信頼性高く自動化する限界に本当に達したのだろうか?古き良きメタプログラミングやジェネレーターのスクリプトを使わずに、不正確な自然言語を通じて信頼できない高価な統計モデルを使うことに頼ることなく。 > 原則からAIを使わないのは、流行に乗って採用するのと同じくらい非合理的だと思う。これはちょっと分からないな。ある人にとっては、一貫して原則を守ることが、記事で言及されている創造のドーパミンヒットと同じくらい満足感があるか、あるいは必要なことかもしれない。

今、いくつかの並行したAI作成のサイドプロジェクトを進めていて、それぞれに対して感じることが全然違うんだ。1つ目はサバイバルホードゲーム(バンパイアサバイバーズやブロテートみたいな)。今のところ、すごく原始的で、非常に派生的(新しいアイデアがない)で、あまり楽しくない。誇りは全然感じないけど、ゼロから書いていたらここまで進んでいなかったと思う。楽しさの部分(ゲームプレイの革新やグラフィック)に投資したら、もっと愛着を感じると思うし、アートアセットは全部自分で作るつもり。2つ目は、開発環境のプロセスを管理するためのMacOSのWebアプリ。動くけど、見た目はイマイチ。AIにリモートで見栄えの良いUIを作らせる自信がないから、その部分は自分でやるつもり。3つ目は、便利なユーティリティライブラリ。LLM以前なら、自分の専門外すぎて作ろうと思うこともなかったもの。デザインにはかなり影響を与えているけど、まだコードは書いてない。すでに非常に役立つことができるみたいで、妙に誇りを感じている。でも、良いと思っているけど、実際に良いかどうかは分からないという変な不安があるんだ。AIの助けを借りて何を作るにしても、自分の何かを必ず入れることが大事だと思う。特に達成感を感じたいならね。コード自体に手を出さないつもりなら、良いテスト哲学を持つことも大事だよ。

最近、かなりAI先進的な会社でポジションを受け入れたような感じだ。手動プログラミングはほとんど discouraged されている。過去に理解できない数学や意味不明なエラーのためにAIツールを使ったことはあるけど、大部分は自分で書いていた。でも今は、言及された通り、opus/sonnet 4.5があって、すごく良く動く。これに伴って、2つの新しいAPIを統合する必要があったんだけど、普通ならAPIラッパーを書くと、そのAPIの感触や何がどう繋がっているかをたくさん学ぶんだ。今回は?Claudeにドキュメントを読んでもらって、どうレイアウトしたいかを提案しただけ。結果?これらのAPIの感触やモデルについて全く分からない。もしそれらとやり取りしたいなら、Claudeにそのライブラリでどうやるかを聞くしかない。ちなみに、そのライブラリは良いよ。全部見たけど、かなり薄くて、提案した通りに書かれている。だけど、深い理解は全くないし、どう統合されたのかも分からない。普通なら何かを統合する時には、統合先のコードベースについて少し学ぶんだけど、今回は全くなし。すごく不安だよ、こんなに知らないのに、こんなに多くのことができるなんて。説明させても意味がない、それは次のことに移るときに流れてしまう情報だから。反射的な記憶が構築されていない。この記事に同意するということだね。

他のエンジニアリング分野では、飛行機やダムを作るための計算を手でやる人はいなくなったよね。設計やシミュレーションなど、開発サイクル全体でソフトウェアに大きく依存してる。それでも大学から、そういう計算を手でやることを学ぶことで、基本的な原理を理解するんだ。俺はそれがソフトウェアエンジニアとしてやるべきことだと思う。AIに「考えさせる」ってのは悪いアイデアだよ。確かに、簡単にソート関数を書いてくれるけど、それを理解する必要がある。ツールが基本を理解する代わりになるなら、Catiaとかにアクセスできる人なら誰でも飛行機を設計できるはずだよ。

君の書いた内容は、AIコーディングツールを使うことに対する俺の大きな懸念を正確に捉えてる。もう一つ気づいたことがあって、運転と自動運転についても似たような気持ちがあるんだ。運転が本当に好きだけど、生活をうまく整えられて通勤ドライバーじゃなくなったから、日常的に練習する機会が減って、たまに長距離運転するとスキルが落ちてるのを感じる。AIコーディングツールも同じで、時々は使うのをやめて、頭を使ってスキルを維持しないと、シニアエンジニアとしての能力を失っちゃうんだ。