はじめに
どうも。鳩胸になりたい文鳥です。
Professor Answers Coding Questions
ある日YouTubeを見ていたところ面白い動画に遭遇しました。
Professor Answers Coding Questions | Tech Support | WIRED
UCバークレーのコンピュータサイエンスの教授が視聴者からのプログラミングやAIに関する質問に答える動画で
- AI時代にもコーディングを学ぶ意味はある?
- ChatGPTは本当に革命的?
といった視聴者からの質問にベーシックな英語でわかりやすいように考えを述べているのが印象的でした。
約1ヶ月前に投稿された動画で100万回再生されている人気動画のようです。
AIを開発に取り込む最良の方法は?と言う質問に対しての第一声が「本当にそんなことしないといけないの?」でした。そして「AIのコードを正しく確認するコストが大きい。ただ使わければいいだけ」と結論付けていました。
熟練の開発者はバイブコーディングをどう考える?と言う質問に関しては「新しいことをする際はほとんど役にたたない」と答えていました。
かなり断定的に開発にAIを用いることを否定的なスタンスだったことに私は少し意外に思いました。
私はAI活用して開発にポジティブな影響を与えていると思っているからです。
経験豊富な開発者はAIを使うと24%速くなると考えているが実際には約20%遅い
動画の中で一番気になったのがこのトピックで経験豊富な開発者はAIを使うと24%速くなると考えているが実際には約20%遅いと言う研究結果があるといっていました。
私にとってこの話はとても興味深く、自分の感覚と生産性の実態にズレがある可能性はあるなと思いました。
気づいた時には元の論文を探していました。
元の論文
おそらくこの論文で間違いないと思います。
- February-June 2025
- 最近ちゃうんかー
- 5年以上関わっているオープンソースのリポジトリ
- 開発者がコードベースにコンテキストを持ってるときかー
- 被験者16人
- 少ないなー
- Cursor Pro x Claude 3.5/3.7 Sonnet
Despite widespread adoption, the impact of AI tools on software development in the wild remains understudied. We conduct a randomized controlled trial (RCT) to understand how AI tools at the February-June 2025 frontier affect the productivity of experienced open-source developers. 16 developers with moderate AI experience complete 246 tasks in mature projects on which they have an average of 5 years of prior experience. Each task is randomly assigned to allow or disallow usage of early 2025 AI tools. When AI tools are allowed, developers primarily use Cursor Pro, a popular code editor, and Claude 3.5/3.7 Sonnet. Before starting tasks, developers forecast that allowing AI will reduce completion time by 24%. After completing the study, developers estimate that allowing AI reduced completion time by 20%. Surprisingly, we find that allowing AI actually increases completion time by 19%--AI tooling slowed developers down. This slowdown also contradicts predictions from experts in economics (39% shorter) and ML (38% shorter). To understand this result, we collect and evaluate evidence for 20 properties of our setting that a priori could contribute to the observed slowdown effect--for example, the size and quality standards of projects, or prior developer experience with AI tooling. Although the influence of experimental artifacts cannot be entirely ruled out, the robustness of the slowdown effect across our analyses suggests it is unlikely to primarily be a function of our experimental design.
全文は以下にあるので気になる方はPDF読んでみることをお勧めします。
そこそこの量でよくまとまってる記事のURLはこれです。
論文の目的はLLM利用がどういった条件下での利用が効果的か調べるために行われたようで、やみくもにLLM利用に対して否定するために作られた論文と言うわけではないようです。
Cursorに熟練することで結果は変わる可能性があるといったことに言及していました。
Are the developers beginners at using Cursor/AI tools? Does this explain the result?
Developers seem to be qualitatively in-distribution for Cursor Pro users, although we can’t rule out learning effects beyond 50 hours of Cursor usage.
Do these results say that AI isn't useful in software engineering?
No—it seems plausible or likely that AI tools are useful in many other contexts different from our setting, for example, for less experienced developers, or for developers working in an unfamiliar codebase
redditで交わされている議論は以下です。
- チーム開発にLLMを利用する人が入るとレビュー時間が長くなる
- AIが書いたコードを、他の人がAIを使ってレビューするっていう、イライラするパターンがある
- コンテキストスイッチが大変になった
- 開発者が生産的でないときでも、より生産的だと感じることが問題
- 現状LLM活用はジュニア開発者が推している
- 小さい部分やテストに使うと、すごく早く終わるのでとても便利
- 16人はサンプル数が少なすぎる
- 開発者(というか人間)は、ツールが実際に自分の生産性にどう影響するかを評価するのが下手だってこと。AIの場合だと、大抵メリットを過大評価しちゃうんだよね
的なことが議論されています。
日本のソーシャルメディアではAIに肯定的な人がマジョリティな気がするのでこの議論の内容も少し以外でした。
=====================================
⇩ここからは私のコーディングエージェント活用に関する1年間の考察になるので、研究結果自体をもっと詳しく知りたい人は上記のリンクから見にいくことをお勧めします。
1年ぐらいコーディングエージェント使ってみて自身はどう感じているか?
私は2025年初頭に使い始めた。
バックエンドの方が得意なエンジニア、あまり馴染みのないリポジトリでReactの依存関係がすごいプロジェクトでステート管理が複雑だったコード、Claude 3.5が一瞬で解決したことにびっくりしたことを覚えてる。
それをきっかけに色々AI活用を試すようになり、Claude Codeが出てきた時は半年、一年後はどうなってるんだろう!と言う期待が膨らんでいった。
AIを開発組み込むために、プライベートの時間を割いた。
すごい過渡期というのか、パラダイムシフトの渦中にいる感じがした。
体感としては2025年前半に対して後半は進化というかビックリするような変化が少なかった気がする。
新しいモデルが出てくるたびに、賢くなったなぁと感心するものの初めてAIコーディングエージェントを使った時のような感動はなくなってた。
ただ、コード補完含めて、自分的には手放せなくなってる日常ツールとして定着している感覚はある。
開発へのAI活用を批判的に掘り下げてみる
実際に成果が出ているのか判断が難しい
私は実際に生産性に効果があるかどうか?よりも快適さ、楽しさみたいなものでサブスクリプションしていた側面があって、実際にAIを使ってみてどれぐらい価値があるのかは検証できていない。
印象としては
- 作業が高速化されている
- 自分のPRもずっとレビューしている感覚があってしんどい
- 指示を出している自分がボトルネックな感覚がある
- 集中力が続かない
- テスト・パフォーマンス改善・SQL・依存関係の調査などにとても役に立つ
- 開発者のAI活用がビジネス的価値創造に大きく寄与している感覚はまだない
といった感じ。
たまにテスト期間終わった時の部活みたいなイメージで、手でコードを書く感覚が一時的に鈍っている時がある。
使わされ続けるリスク
かなり悲観的に捉えた時に
コーディングスキルが鈍る
⇩
AIエージェントが高額になっても解約できなくなる
みたいなことが起きると、怖いなーと言う気がしてきた。
サブスクリプションのサービスはchurnレートを追ってるはずやし、「ユーザーの能力を退化させれば依存度が上がる」みたいなこと考えてるサービスがあるかもしれないなと思った。
依存度が上がった頃に値上げされるときついなぁと思った。
イライラしながらAI活用に固執している自分がいた
AIに指示を出してなかなかうまく行かないのに何度も何度も指示文を変えてトライしている時があったなと。
これはもはやAI活用の生産性どうこうと言うよりも、自分の問題。
ただ、ソーシャルメディアをなんとなく続けてしまうことや、クリアできなくてイライラしてるけどゲームをやめられへん時の気持ちに似ているなとも思った。
一番サクッとうまく行った時にめっちゃドーパミンが出てる感覚がある。
そしてその時の体験が強く心に残っている。
ギャンブラーが「ざっくり考えたら収支トントン」てゆうてる時みたいやな。と思った。
自分の都合のいいように認知を歪めてるのかもしれないとおもた。
ソーシャルメディアみたいにAIエージェントもドーパミンをコントロールしていて...
みたいなこと考え始めると現時点では過度に依存するのを控えた方がいいなと思った。
作業が早くなってる感は意図的に体験させられているのかもしれない
AIに指示出した後、ちゃんと考えてズンズンコードが作られていく様子を見ることは、作業が円滑に進んでいるような感を得るUXとして設計されてるのかもしれない。
とか色々考えた。
正確にWith AIとしての成果を評価することは難しいなと。
開発生産性て何?
私は
ユーザーに提供できる価値 / リソース
だと思っている
過去にコードを書いてる最中に、ユーザーにとっていい仕様、ソリューションを思いつくことがあった。
その工程をすっ飛ばしてコーディング作業を高速化はできてたとして、人間のエンジニアがレビューにまわることが果たして、生産性向上と言えるのか。言い換えると、価値創造においてそれが最適解と言えるのか。
みたいなことも考えた。
AIを使うことで動くものをテークホルダに見せて軌道修正できると言うのは間違いなくメリットではあると感じている。
作った機能数やコード量 / リソースが生産性ではないということを意識してAI活用する必要があるなと思った。
コーディングはあくまでエンジニアの仕事のごく一部でしかない
エンジニアは開発する上で
①課題認知
②ソリューション決める
③コードの方針決める
④コード書く
⑤整える、フォーマットとか
⑥テストする
⑦セルフレビュー
⑧PRレビュー&レビュー対応
⑨テスト
みたいな順序で進めることが多い。
AIを使うことで⑤以降が大きくなってるけど④が短縮しているから早い!!!みたい捉えているところがあったなぁと思った。
ただAIを使うとセルフレビューが長くてこれが結構しんどい。
レビューコメントに対応する時間も長くなる。
コンテキスト持たせるために一行の編集とかも命令したりする。
動くようになってからのリードタイムが長い。
レビューで質問があったとして意図がわかっててもなんとなくLLMに聞いてしまったりする。
ただ、それでも「トータルでは早くなってるから!!」と鼻息荒くなってる自分もいる。
評価に対するインパクト
①スキルフルで最も優秀なエンジニア
②すごく優秀なエンジニア
③優秀なエンジニア
④普通のエンジニア
⑤微妙なエンジニア
⑥ダメダメなエンジニア
を並べた時にCusorやClaudeを付与した時に、その優劣が入れ替わる感覚はあるか?
と言うことを考えてみたが、私の答えは否だった。
良くも悪くも課金金額ぐらいのインパクトしかまだないなぁと言う感じ。エンジニアの優劣に影響するようなインパクトがない。
「AIの生成するコードがチープなので基本的に使わない」といってるエンジニアが周りにいるが、こういった人たちがLLMを積極的に利用しているエンジニアと比べて評価を落としているかというと、現状私の周りでは全くない。
UCバークレーの教授もおそらくそうで、洗練されてる技術を持つ人ほど、AIの成果物を冷静に評価できて自分でコードを書く方が成果を出せるフェーズな気がした。
日に日に精度が上がって効率的にはなってるけどまだパラダイムシフトは起きてないなぁという印象を持った。
AIは責任とってくれない
めちゃくちゃ当たり前の話ではあるものの、この話題が一番AI活用において根本的に大きな変化が起きてない理由になるなと思った。
例えば非エンジニアがコーディングエージェント使った時、ほとんどの場合で「期待通り動く」ものは出てくる。
影響が出て欲しくないところに影響が出ないかの確認をできないことが結構あると思う。これは仕方ない。
コーディングという作業を移譲したところで責任は簡単には移せないと言うことだと思っている。
①意図通り動くこと
②意図しないところに影響がないこと
③非機能要件的な観点で問題がないこと
④将来の変更要求に対応できる設計であること
⑤技術的制約を考えた時により良いソリューションがあるか
こんなことを考えながらエンジニアは成果物を作るがLLMで任せた場合に②以降を犠牲にするリスクがある。
こういったPRはジュニアエンジニアのPRのように注意深く見る必要があって
- レビュワー1人増やす
- 軽い修正だけ自立エージェントにやらせよう
みたいなルールに倒れがちだけど、AIを使うことで総合的にコスパがよくなってるのかは良く分からない。
軽い修正ならエンジニアが他の作業の合間にやることで作業も一瞬でレビューのコストを抑えられるから。
LLMに食わせてる学習リソースにはコードの説明はエンジニアが書いてる。エンジニアが使う言葉で指示した方がAIの成果物に関しても精度いいのは当たり前。
使ってる言語の帯域みたいなものが違うんじゃないかなみたいなことは思うことがある。
エンジニア周辺の人にうまく自立エージェントを使ってもらうためにはエンジニアが抱えてる責任を理解してもらって責任範囲も移譲するということ以外にまだ有効な活用方法を見いだせない。(仕様確認でリポジトリに質問を投げると言う利用方法は有効である。)
もしAIが「この変更でバグが出た時の損失は〇〇円」などのコンテキストを持てるようになって、自動テストに書かれてないテストを自立実行する。そして実際に問題が起きた時にそれを補償できる世界線がくるなら、その時は革命的な変化が起きていると思う。
これはAIが責任を負う世界線である。
どういうふうにLLMを使っていくべきか
ここ数年でジェネラリストタイプの人で人とのコミュニケーションが得意な人はwith AIで担える領域を増やしていってる印象がある。
中長期的な戦略を立ててWith AIでプロジェクトに関わる人の人数を減らす。
作業だけ移譲しても対して全体に対する生産性向上は低いと言うところはあるので、責任ごと移譲することを考える。
より特定の領域で深い知識をつけるか、横に広げるかみたいなところになってくる。
専門知識へアクセスしやすくなってるので、主体的に意思決定できて境界線が曖昧な領域で突き進んでいく動力の価値が上がってると思う。
この辺は一年前に考えていたこととあまり変わらない。
AIに任せてうまく行った作業や領域に共通点を見出して、AIに任せやすい仕事定義することも大事かなと思う。
まとめ
これからどんどんLLMが賢くなっていけば状況は変わっていくと思う。
一方でモデルに食わせられるWeb上のコンテキスト?も食い尽くしつつあるんじゃないかと思っていて、ここから一気に賢くなるパラダイムシフトみたいなことは起きるのかな?と言うところに関心がある。
長期的な話でいうとみんながLLMを使うようになることでAIが学習するリソースの増加率は減るので、これがAIの発達にどう影響するのか興味がある。
どうなるか分からんので自分はエンジニアとしての実力を付けて、自分の頭でAIとの付き合い方を模索していく所存。
以上、



