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

調査:シニア開発者の3分の1が、自身のコードの半分以上がAI生成であると回答

概要

  • Fastlyの2025年7月調査 によると、AI生成コードの本番導入率に経験差が存在
  • シニア開発者 はAIコードを積極的に利用しつつ、修正にも多くの時間を割く傾向
  • ジュニア開発者 はAI利用に慎重で、信頼性や修正負担を懸念
  • AIツール は効率向上だけでなく、仕事満足度やモラール向上にも寄与
  • グリーンコーディング やAIの環境負荷への意識も経験と共に高まる傾向

Fastly調査:AI生成コードの本番導入における経験差

  • シニア開発者(経験10年以上) の約3割が、「本番コードの半分以上がAI生成」と回答
    • ジュニア開発者(0-2年) では同割合が13%、シニアの半分以下
  • AIによるコード修正・編集 の頻度もシニア層で高い傾向
    • シニアの約30%が「AI出力の修正で時短効果がほぼ相殺」と回答
    • ジュニア層では17%
  • AIツールによる納品スピードの向上 を感じる割合はシニアで59%、ジュニアで49%

シニア開発者のAI活用に対する楽観と自信

  • AIで「かなり速くなった」 と回答したシニア層は26%、ジュニア層の2倍
  • ジュニア層 は「やや速くなった」と感じる割合が高い(50%以上)
  • シニアは AIの誤りを見抜く能力や修正力 が高く、AIを積極的に本番運用
  • ジュニアは AIへの信頼や自信の不足 から、本番適用を控える傾向

AI生成コードの現実と認識ギャップ

  • 全体の28% が「AIコードの修正で時短効果が大きく相殺」と回答
  • 「ほとんど修正不要」と感じるのは14%のみ
  • それでも 半数以上 が「AIで作業全体は速くなる」と実感
  • RCT(ランダム化比較試験) では、AIツール利用で作業時間が19%増加という結果も
  • 心理的には「速く進んでいる感覚」 があるが、実際は修正・テストで時間消費

開発者の声:AIツールの光と影

  • GitHub Copilot などで「工数削減・提案力向上」を実感
  • 一方で、「複雑なアルゴリズムで微妙なバグが生じ、何時間もデバッグ」する事例も
  • ボイラープレートコード の自動生成で時短、ただし非効率部分の手直しが必要

AIツールと開発者の仕事満足度

  • 約8割 が「AIツールでコーディングが楽しくなった」と回答
  • 単純作業の省略 や「コード生成の達成感」がモチベーション向上に寄与
  • 「詰まったタスクの突破口」「必要な答えの発見」にAIが役立つとの声

グリーンコーディングとAIの環境負荷意識

  • グリーンコーディング(省エネコーディング) の実践率は経験と共に上昇
    • ジュニア層56%、ミッド・シニア層は約80%
  • AIツールのカーボンフットプリント について、全体の約2/3が認識
  • 「全く知らない」開発者は8%未満
  • サステナビリティ意識 が開発者文化に定着しつつある傾向

調査方法

  • Fastlyによる2025年7月10日~14日実施
  • 791名のプロ開発者 が対象
  • 米国内配信・品質管理済み
  • 自己申告型調査 であり、一定のバイアス可能性あり

参考記事

Hackerたちの意見

自分が年寄りだとは思わないけど、Google APIに対してPythonの自動化を書く必要があって、急にコーディングエージェントの世界にハマっちゃった。ドキュメント用に3〜4つのサイトを開いて、3つのライブラリの間でコンテキストスイッチするのが大変だったよ。かなりの情報量だったから、「AIを使ってみよう」と思ったんだ。そしたらすごく助けられた!それ以来、AIの助けを借りて少なくとも6つのプロジェクトを公開したよ。リファクタリングもしてくれるし、ボイラープレートも書いてくれる。何よりも、異なるトピック間のコンテキストスイッチが得意なんだ。自分の仕事はDevOps、オートメーション、システム統合に関わっているから、トピックはかなり幅広い。だから全然気にしてないけど、年寄りじゃないよ。一番大事な教訓は、AIを絶対に信じちゃダメってこと。どれだけAIが妄想を膨らませるか、言い切れないよ。存在しないライブラリやモジュールを作り上げたりするからね。テーマを理解しているなら、すごく良いツールだけど、自分の代わりを育ててるかもしれないって気づいたんだ。間違いを修正するたびに、データベースに「より良いAIになる方法」を教えてることになるから、最終的には自分が必要なくなるかも。ありがたいことに、もう年寄りだから、その時には引退してるだろうけど。

ここは二重人格の雰囲気があって好きだな。

クソみたいなプラットフォームに対処する時、AIは本当に最高だよ。アトラシアンのリフレッシュキーの扱いが変で、自動化を書く羽目になった不運があったけど、AIがアトラシアンがリフレッシュキーを一回使ったら無効にするっていう天才的なアイデアを指摘してくれなかったら、もっと時間を無駄にしてたと思う。この手の手作業には、AIが最高のツールだね。

LOCの観点ではそうかもしれないけど、重要性の観点ではずっと低いと思う。少なくとも、俺はLLMをそんな風に使ってる。確かに肉厚な部分も作れるかもしれないけど、実際にコードを理解してる人がいない状態でトラックファクターがほぼ0ってのは、災害のレシピだと思うし、長期的なコードベースのメンテナンス性にも影響する。どんなチームでも、非自明な問題を解決するためには、そのレベルの理解を持った人が必要だと思う。でも、LLMを使って全てのスキャフォールディングやテストフィクスチャを作るのは全然アリだよ。だって、そのエネルギーを他のことに使えるから。

同意する。トリビアルな関数のかなり包括的なユニットテストを生成するためにLLMを使うからって、それがコアの複雑なビジネスロジックと同じくらい有用だとは限らないよ。そっちの方が微妙なミスをしやすいからね。

テストフィクスチャー。気になるんだけど、AIはどうやってあなたの欲しいものを知るの?

この記事は今までの経験と全く逆だな。俺はインターンシッププログラムで教えてるけど、2023年以降のインターンたちの主な問題はAIツールへの過度な依存だよ。AIを何でも使うのをやめさせて、問題を考えるように教えなきゃいけない気がする。一方で、周りの先輩たちは自分のやり方に固執して、printf()デバッグの習慣を置き換えるためにインタラクティブデバッガーを使おうとしないし、AIツールなんて論外だよ…。

一方で、周りの先輩たちは自分のやり方に固執して、printf()デバッグの習慣を置き換えるためにインタラクティブデバッガーを使おうとしないし、AIツールなんて論外だよ…。俺が業界に入った頃は、インタラクティブデバッグをよく使ってた。経験を積むにつれて、だんだん使わなくなったけど。printf()は意外と便利なんだよね。ちょっとアップグレードしてログレベルを意識したフレームワークにすれば、デバッグ用の行をコードに残しておいて、loglevel = TRACEやINFOでオンオフできるから。

インタラクティブデバッガーとprintf()はどちらも完全に有効で、いくつかの重複はあるけど別々のユースケースがあるよね。もしどちらか一方だけを使おうとしてるなら、考えるべきことがいくつかあるよ。

ちょっと細かいことを言うけど、printfデバッグには何の問題もないよ。並行プログラムをデバッグするのにすごく役立つし、一部を止めると状態が崩れちゃったり、再現しようとしてたバグを回避できたりすることもある。ツールについて言えば、AIコーディングが本当に好きなんだ。私のワークフローは、ChatGPTにインターフェースを貼り付けて、そこからコピー&ペーストする感じ。接着コードは手で書くことが多いかな。テストケースも定義して、面倒な部分はAIに任せる。問題を解決するのが好きだし、タイピングが本当に嫌いなんだよね :)

インタラクティブデバッガーを試してみたけど、印刷よりも良い結果が出た状況にはまだ出会ってないな。インタラクティブコンソールを使って何がどう動くかテストするけど、アプリ内では印刷が一番簡単で早い解決策だった。

古い連中はデバッガーが使えないからprintfに頼ってるわけじゃなくて、デバッガーはプログラム全体を止めちゃうし、一歩一歩進めなきゃいけないからなんだよね。printfだと、全体のトレースやログを一目で見れるから、全体の流れが把握しやすいんだ。

面白いね。90年代にはインタラクティブデバッガーをいつも使ってたけど、最近は全然使ってないな。ログを取って、読んで、考える方が…楽だし。

適材適所ってやつだね。もし誰かがprintf()で仕事を終わらせられるなら、それで十分だよ。インタラクティブデバッガーは時間を無駄にするだけで、全然進まないことが多い。使い道はあるけど、そんなに一般的じゃない。GDBの一番の使い道はスタックトレースを調べることかな。自分が作業してるソフトウェアの良いメンタルモデルがあれば、どこで何が間違ったかがわかることが多いし。多くの人がコードをデバッグするのに時間をかけすぎて、書く前に考えることをしないんだよね。あ、テストはデバッグよりも大事だよ。

うん、全然信じてないよ。この調査の方法論は怪しいと思う。

自分にとってはちょうどいい感じ(大手テック企業の年配の開発者)。でも、コードがAI生成だってどういうことか定義しないとね。俺の場合、コードがどうあるべきかは大体わかってて、エージェントにそれを伝えるためのプロンプトを書いてる。AIは問題を解決するわけじゃなくて、ただタイピングして文法を助けてくれるだけ。最終的に自分がもっと生産的になってるかどうかもわからない。

まだ半分も進んでないよ(うちの企業のコードベースがめちゃくちゃで、AIに向いてないから)。でも君のアプローチはなんとなく分かるな。AIを使うと、時々遅くて質が低いこともあるけど、頭の負担が少なくて済むから、時にはそれが価値あるトレードオフになるんだよね。

うん、まだあんまり生産的にはなってないかな。せいぜい10%くらい。でも、精神的なエネルギーがかなり楽になるから、40歳になった今はそれがすごくありがたい。

調査やここでのコメントではタブ補完についてあまり言及されてない気がする。私にとっては、AIがやってる究極のコーディングがそれなんだよね。最近はあまり注目されてないけど。大量のLOC(とコメント!)があって、そこでAIがすごく生産的だと感じる。

100%だね。私の指示はいつも結構具体的で、「X秒ごとにデータを取得して、新しいデータがあればYを更新するジェネレーターが欲しい」って感じ。

具体的に何を書いてほしいのか教えてもらえる?ウェブブラウザで要素を実装するのは無理だと思う。C++でWebKitやChromiumの話をしてるんだ。例えば、ブラウザが新しいデータテーブル要素を欲しがっていて、スクロールウィンドウをネイティブに実装して、要素を供給するためのイベントを登録するようなものだとする。そういうコードベースはLLMには複雑すぎる気がする(間違ってるかもしれないけど)。とにかく、もっと具体的な例があると議論が進むと思う。具体的な例を挙げると、最近ChatGPTにMP4ファイルからメタデータを直接パースするJavaScriptを頼んだんだけど(もっとエディタに統合されたものを聞けばよかった)、TypeScriptをくれて、mp4boxを見てみるべきだって言われた。15〜20分かけてmp4boxの例を設定したけど(それも聞けばよかった)、結局mp4boxでは欲しいデータが取れなかった。だからChatGPTに戻って、JavaScriptを頼んだら、jsfiddleみたいなところでハッキングしてたから、それがうまくいった!その後、タイトルとコメントのメタデータが欠けてたから、それも欲しいって言ったら、最初の試みでそれも成功したよ。

AIを使うと、入力が少なくなるから、結果的には良いことだと思う。

その調査で何人の開発者がそうなんだろう?791人の開発者に調査したみたいで(:D)「シニア開発者の3分の1」がそうだって。つまり…大体20人くらい?みんなが数字を操作するのがすごく上手だよね、何かを売ろうとすると。

彼らがやるもう一つのことは、元の記事が言及しているAIのネガティブな部分を便利に無視して、ポジティブな部分だけを報道することだよね。もちろん、これは一つの会社の調査に基づいた元の記事に基づく記事で、元の記事は「コンテンツマーケティングマネージャー」が書いたものだし、調査の生データは公開されてない。結果のマーケティングサマリーだけがあるだけ。信頼性高いね。

自分、使い方間違ってる気がする。Zedをエディタに使ってるんだけど、18ヶ月くらい前にシステムをアップグレードしたんだ。その時はAIのオートコンプリートが必要だと思わなかったから、設定し直すのも面倒で放置してた。でも、2週間くらい前にもう一度試してみようと思って、ZedにGitHub Copilotを設定したんだけど…最悪だった。提案のほとんどが全然的外れで、カーソルの上下にあるコードをそのまま複製するだけで、識別子の名前を何かのパターンに合わせて変更するだけなんだ。全然役に立たないし、むしろこれがない方が速くて上手くプログラミングできるよ。

それから、ollamaでローカルモデルを設定しようとしたんだけど、ランダムなトークンが挿入されて、Zedが解析できないマークアップみたいなのが出てきた。今はモバイル中だから、仕事に戻ったらサンプル出力を投稿するつもりだけど、覚えてたらね。

ユーザーデータを使ってトレーニングするためにAnthropicに高額な料金を払うのが、現代の開発者としての競争力を持つための正しい選択なのかな?追伸:Zedには自社のAIがあるのは知ってるし、実際良さそうなんだけど、最初に導入された時に試してみたら、普通のコーディングを数分しただけで無料プランのクレジットを全部使い切っちゃったんだ。提案は自動的に生成されて、受け入れなくてもアカウントのクレジットにカウントされるから、トライアルが終わる頃にはこのツールの良さをちゃんと感じられなかった。良いとしても、クレジットをすごく早く消費しちゃうんだよね。

コパイロットのオートコンプリートは、ただのオートコンプリートとして見るべきだと思うよ。確か、あれにはもっと劣るけど速いモデルを使ってるみたいだし。AIにはあまり詳しくないけど、コパイロットのチャットやエージェントモード、あとクロード・ソネット4はたまに使ってる。

提案は積極的に生成され、受け入れられなくてもアカウントのクレジットにカウントされる

それはもう違うよ。受け入れた場合にだけカウントされるんだ。個人的には彼らのモデルはあまり良くないけど、コパイロットよりはマシだと思う(コパイロットは遅すぎて使いづらいし)。それと、タブ補完のオプションは、私の知る限りでは、zed/zeta、GitHub Copilot、Supermaven、ローカルモデルがあるね。今のところ他のプロバイダーはないと思うけど、もし間違ってたら嬉しいな。

200ドルのClaude Codeアカウントを使ってみたけど、確かにすごいんだけど、「火をつけて忘れる」ってわけにはいかないね。結構違うスキルが必要になることが多い。エージェントが自動でできることと、追加の指示が必要なことを見極める感覚を養わないといけないよ。完璧な投資を求めるなら、個人的にはSupermavenをおすすめする。オートコンプリートが99%完璧だから。

その記事によると、10年以上の経験を持つシニア開発者は、ジュニアの開発者に比べてAIツールに大きく依存する可能性が2倍以上あるそうです。ただし、The Registerの記事やFastlyの元ブログには、p値や統計的有意性のテストが報告されていません。

私は30年以上の経験があり、最近Claude Opus 4.1(ブラウザとclaude.aiを通じて)を使って、コンパイラ用のECMA-335とLLVMコードジェネレーター、そしてMonoソフトデバッグプロトコル用のQtアダプターを生成しました。それぞれのタスクで2,000〜3,000行のC++コードが生成されました。Claudeの体験は混合でした。システムが反応しなかったり、すぐに「過負荷」のメッセージを表示して何もしない可能性が高いです。コードが生成されても、すぐに出力制限に引っかかり、「続ける」を手動で押さなければならず、その後、生成されたコードの順序が混乱することが多く、修正するためにもう一度Claudeを使う必要があります。このプロセスを経て、最終的に生成されたコードはすぐにコンパイルできたので、そこには感心しましたが、欠落や論理エラーが多かったです。まだテストと修正を続けています。

総じて言うと、現時点ではClaudeが私の作業を本当に軽減しているとは言えません。コードを理解し、中間結果の正確性を評価するためには、自分で問題をどのように実装するかを正確に知っておく必要があります。すべてを詳細にテストし、多くの再設計や修正を行わなければなりません。一部の実装はただのスタブで、何度試みても実装ができないこともありました。私の意見では、現在利用可能なもの(私の20ドルのサブスクリプションを通じて)は印象的ですが、経験を置き換えるものでもなく、本当に時間を節約するものでもありません。ですので、今はAIツールを使った30%のシニアの一人になりましたが、これらの特定のタスクでは本当に恩恵を受けていません。

驚くことではありませんが、元のブログにも「シニア開発者のほぼ30%が『AI出力を編集してほとんどの時間の節約を相殺している』と報告している」と書かれています。つまり、今のところはあまり成功とは言えません。しかし、全体としてはまだ感心しています。

やあ!代わりに私たちのClaudeコードを試してみることをおすすめするよ。これも君のサブスクリプションに含まれてるからね。これはCLIで、君が遭遇した多くの問題を解決してくれるんだ。ディレクトリ内のコードファイルに直接アクセスするから、もうコピー&ペーストや結果を解読する必要がないよ。それに、自分でコマンドを実行して、例えばコードをコンパイルしたりテストしたりもできるんだ。

「あなたがそれを間違って持っている」と言いたくはないけど、私も最初は似たような経験をしたよ。最終的には、より良い結果を得るために、どうやって話しかけるかを学んでいくんだ。私がClaude Codeで役立つと思ったのは、大きなことを一気に投げるんじゃなくて、いくつかの小さなタスクを与えると、ずっと良い結果が出るってこと。インタラクティブに(プロンプト、出力、プロンプト、出力…)やってもいいし、ステップをまとめた大きなマークダウンファイルを書くのもアリだよ。

あなたの投稿は、HNで見るAIコーディングに関する投稿の90%を要約していると思うよ。ツールを理解していないし、強みや弱みも分かってない。プロンプトやコンテキスト管理も上手くないのに、強い意見を持っている感じだね。何が得意で、どう使えばいいのか分からなければ、当然混乱した結果になるし、時間を無駄にすることもあるよね。これはAIに夢中な人たちへの批判でもあるんだ(特に「バイブコーダー」と呼ばれる人たちには多いけど、ここではあまり見かけないね)。彼らは、LLMが80%の解決策を一発で出せることと、LLMが80%完成しているという考えを混同しがちなんだよね。実際、パレートの法則はソフトウェア開発にも当てはまるから、難しいのはその20%なんだよ。

俺は30年の経験にちょっと足りないくらいだ。これらのツールを使うことに費やした時間は、他の技術を学ぶよりも多いと思うし、まだ最適な使い方が分からない。最初は時間を節約できなかったけど、しばらく本気で使ってみたら、時間を節約できるようになった。小さなプロジェクトで自分の限界とツールの限界を試して、プロジェクト全体をどうやって進めるか、いつから動かなくなるのか、その理由、どの技術と相性が良いのか、どのくらいのサイズの問題を与えるのが適切か、彼らにできないことを頼んでしまったときにどう認識するか、などを考えた。去年の12月にCursorのエージェントモードを始めて、3月か4月からはClaude Codeを使ってる。サイドプロジェクトにはずっと大きな助けになってるけど、大きなコードベースで成功を収められるようになったのはここ数ヶ月のことだ。これだけの経験があっても、チャットインターフェースから本当に価値を引き出せるかは分からない。彼らには、俺がそのまま受け入れるか拒否するかできる変更を提案してもらう必要がある(ちなみに、これがClaude CodeとCursorの動作方法だよ。書き込みたくないファイルに書き込ませたり、実行したくないコマンドを実行させたりする必要はない)。

シニア開発者は、AIが生成したコードを修正するために時間を投資する傾向が強い。これが重要なポイントだね。たとえシニア開発者の1/3が主にAI駆動のコードを推進していても、まずはそれをチェックしているわけだ。調査には含まれていなかったけど、彼らは自分の経験を使って、どの部分のコードベースがAIに任せられるほど一般的で、どの部分がユニークでAIなしでコーディングする必要があるかを判断していると思う。人々は、AIを便利なツールとして使うタイミングを学んでいるんだ。

俺はプロとしてほぼ30年コーディングしてる。大きな機能でも、Claude Codeをかなり使ってるよ。これをそこそこ機能させるには、PMやテックリードの役割を担わなきゃいけないから、もはやシニアエンジニアじゃなくなる。大きな作業のときは、CCと一緒に機能仕様を生成するために反復作業をするんだ。最初の段階でかなり良い感じに進めてくれるし、その後は微調整したり手動でやったりする。実装では、まずCCに計画を生成させて、その計画に沿って反復する感じ。ちょっとジュニアを指導するみたいだけど、CCは少し経つと何も覚えてないからね。計画ができたら、CCはコードやテストを進めるのが得意だよ。みんなが言ってる理由で、後でレビューは必要だけど、俺の経験では、自分一人でやるよりずっと早く進む。作業を並行して進めるために、Visual Studio Codeを開いて、CCが作業している間の状況を監視して、必要なら早めに方向転換できるようにしてる。それに、コードレビューの準備も早めにできるしね。自分のやり方を確立するのにかなりの時間をかけたけど、まだまだ終わったとは思ってない(CCには、まだ完全に探求していない一般的なタスクを助けるワークフローやサブエージェントがある)。CCのようなツールが新しい働き方を可能にしてくれるけど、私たちも考え方を変えて、これらのツールの使い方を学ぶために時間を投資する必要があると思う。

これをそこそこ機能させるには、PMやテックリードの役割を担わなきゃいけないから、もはやシニアエンジニアじゃなくなる。でも、半分は機能するって言ってるの?問題は、HNのコメント者の約75%が、自分のアイデンティティを(お辞儀)シニアエンジニアであることに強く結びつけていて、PMやテックリード的な役割を見下していることだ。彼らはそのアイデンティティを失うのを避けるために、AIコードがどれだけ悪いかを延々と書くこともいとわない。状況にぴったりのアップトン・シンクレアの名言があるよ。

似たようなことにたどり着いたよ:* すべてのアイデアをブレインストーミングして、Claudeにそれらのためのドキュメントとコードを書かせる、そしてコードは捨てる * そのドキュメントの内容に基づいて、アーキテクチャとデザイン原則を開発するように頼む * すべての機能を取り入れ、適切にアーキテクチャとデザインを尊重した簡潔な設定仕様書を作成させる * それをしばらく反復して、気に入る状態に持っていく * 設定仕様書の実装計画を書かせる * 設定仕様書に従って実装計画の各フェーズを実装するように頼みながら見守る もともと期待していたよりは少し遅いけど、最終結果の面ではずっと良くなって、テストの確認や実装の微調整、ちょっとした脱線や改善の探求の機会が増えたよ。

驚かないよ。AIツールは本当に時間を節約してくれるからね。俺もたくさん使ってるけど、品質を保つためにすべてをダブルチェックしてる。最近「銀行におけるAIの台頭:友か敵か」という金融のゴシップ記事を読んで、これがすごく分かりやすかった。金融におけるAIの成長は、業界がどれだけ早く変わっているかを示しているから、開発者がコードの半分をAIに頼るのも納得できるよ。銀行業界と同じで、人間を置き換えることが目的じゃなくて、よりスマートなシステムを作ることなんだ。信頼、倫理、透明性を管理できれば、私たちをレベルアップさせるツールになるし、排除するものではないよ。