[{"data":1,"prerenderedAt":15},["Reactive",2],{"NsLjeXIEea":3,"O5nUWTfm9P":14},{"post_id":4,"slug":5,"title":6,"content":7,"date":8,"modified":8,"category_name":9,"category_slug":10,"meta_description":11,"meta_keywords":11,"thumbnail_url":12,"show_thumbnail_on_frontend":13},"22962","agentic-coding","AIはプログラミングにどのくらいの影響を与えているのか？","\u003Cp>この記事は\u003Cspan> \u003C/span>\u003Ca href=\"https://uandc.forum8.co.jp/magazine/uc/issue/uc153/\">Up&amp;Coming\u003C/a>\u003Cspan> \u003C/span>という雑誌へ寄稿している内容とほぼ同一のものです。Up&amp;Coming はフォーラムエイトさんという会社が発行している広報誌で、縁あって僕も記事を書かせていただけることとなりました。\u003C/p>\r\n\u003Cp>「IT ならなんでも！」というご依頼だったのでネタチョイス的にこのブログとも相性がよく、寄稿した内容もブログに投稿することにしました。よければ本誌のほうもぜひお読みください（ネットで無料で読めます！）。\u003C/p>\r\n\u003Cp>&nbsp;\u003C/p>\r\n\u003Cp>＝＝＝＝＝\u003C/p>\r\n\u003Cp>LLM を中心とした AI が普及しはじめてから数年が経ちましたが、その中でもコンピューターサイエンス、とりわけプログラムのコードを書くこと自体への影響は他の分野に比べて極めて大きいです。後ほど紹介しますがこの理由には一定の説明力があり、実際に直近 1 年程度のソフトウェア開発速度は人類がこれまで到達できなかった水準に達しています。\u003C/p>\r\n\u003Cp>筆者は「自分たちを外側から見ている人はここ最近のプログラミング事情について一体どのように思っているのだろうか」とずっと気になっていました。なので、今回はシンプルに「プログラミングを日常的に行なっている人とそうでない人にいまどれだけ認識の差がありそうなのか」という切り口で AI プログラミングの現在地について書いてみます。\u003C/p>\r\n\u003Cins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-2873410957106428\" data-ad-slot=\"5220077443\" data-ad-format=\"auto\" data-full-width-responsive=\"true\">\u003C/ins>\n  \u003Cdiv id=\"toc\" class=\"toc tnt-none toc-center tnt-none border-element\">\u003Cinput type=\"checkbox\" class=\"toc-checkbox\" id=\"toc-checkbox-1\" checked>\u003Clabel class=\"toc-title\" for=\"toc-checkbox-1\">もくじ\u003C/label>\n    \u003Cdiv class=\"toc-content\">\n    \u003Cul class=\"toc-list open\">\u003Cli>\u003Ca href=\"#toc1\" tabindex=\"0\">AI の進化がプログラミングへ特に大きな影響を与えている？\u003C/a>\u003Cul>\u003Cli>\u003Ca href=\"#toc2\" tabindex=\"0\">LLM の性質上、プログラムのソースコードは非常に相性がよい\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"#toc3\" tabindex=\"0\">AI によるプログラミング能力のブースト効果は半無制限に活用できる\u003C/a>\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Ca href=\"#toc4\" tabindex=\"0\">LLM が登場してからプログラミングはどう変わってきた？\u003C/a>\u003Cul>\u003Cli>\u003Ca href=\"#toc5\" tabindex=\"0\">ChatGPT 登場時：コピペと質問の繰り返し。それでも多くのハマりポイントは解決できるようになった\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"#toc6\" tabindex=\"0\">自律型コーディングエージェントの登場：ソフトウェア開発の加速度が急激に上昇する\u003C/a>\u003C/li>\u003Cli>\u003Ca href=\"#toc7\" tabindex=\"0\">コードレビューや周辺ツールすらもオーケストレーションするフェーズ：人間はマネジメントへ\u003C/a>\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Ca href=\"#toc8\" tabindex=\"0\">今後はどうなる？\u003C/a>\u003C/li>\u003C/ul>\n    \u003C/div>\n  \u003C/div>\n\n\u003Ch2>\u003Cspan id=\"toc1\">AI の進化がプログラミングへ特に大きな影響を与えている？\u003C/span>\u003C/h2>\r\n\u003Cp>現在の大規模言語モデル（LLM）は、基本的にはインターネット上のテキスト情報を主たる学習ソースとしていて、だからこそどの分野でも専門家レベルの回答能力が備わっています。しかしそうだとするなら、AI がプログラミングにだけ秀でているというのは正しくないことのように思えます。実際これはそうであり、AI がプログラミングにだけ高い能力を発揮するのではなく、AI の高い能力がプログラミングに適用しやすく、かつその結果人類に与えられる効果が他の分野に比べて特に大きい、というほうが正しい表現になるでしょう。この話の根拠が主に 2 つあるので順番に見ていきます。\u003C/p>\r\n\u003Ch3>\u003Cspan id=\"toc2\">LLM の性質上、プログラムのソースコードは非常に相性がよい\u003C/span>\u003C/h3>\r\n\u003Cp>以前の連載 (1) でも紹介したように、LLM は言語構造に着目したAIです。そしてその動作理念は「次に来るべき最もふさわしい単語を選び続けるシステム」と捉えるとわかりやすいのでした。\u003C/p>\r\n\u003Cp>この考え方はプログラムにもそのまま当てはまりそうですね。ソースコードを書くために人間が定義したルールもプログラミング \"言語\" というくらいですし、自然言語よりさらに厳格な文法で書かれていることを考えれば LLM にとってはより扱いやすい概念であるだろうということもわかります。しかもソースコードはインターネット上から得られる情報源として山のように存在しており、学習量の観点でも困りません。\u003C/p>\r\n\u003Cp>実際、ChatGPT をはじめとする LLM が世に登場する以前か らGitHub Copilot という製品では「次のコードを予測し補完してくれる機能」というものが提供されていました (2)。これも GitHubに ホスティングされている大量のコードをもとに訓練されたもので、プログラマにとっては「コードを AI に書かせる」という発想はもともと予想された方向性として捉えられていました。\u003C/p>\r\n\u003Ch3>\u003Cspan id=\"toc3\">AI によるプログラミング能力のブースト効果は半無制限に活用できる\u003C/span>\u003C/h3>\r\n\u003Cp>ふたつめは、AI から受け取れる結果の活用方法についてプログラミングと他分野ではどのような性質差があるのかについてです。前述したように、LLM にとってはプログラムのコードを生成するというのは、日本語で質問されて日本語で回答していることと実質的に同じです。単なる質問への回答自体が「プログラミングという作業」の結果を包含していることにまず注目してください。\u003C/p>\r\n\u003Cp>つまり「現実世界へ AI の成果を適用する」のは、ことプログラミングにおいては単にファイルへコードを書き込むことでしかないのです。言い換えれば、素晴らしい建築技術を持った大工 AI がいても私たちの物理世界に急に新しい構造物を発生させることはできないし、すべての判例記録を持っている弁護士 AI も実際の裁判には出席できません。多くの分野では AI の優れた回答結果をどこかで人間が扱う必要があり結局それがボトルネックになってしまいますが、プログラミングにおいては LLM が回答する時点でその目的がほとんど達成されているのです。\u003C/p>\r\n\u003Cp>さらに、AI が動作した結果をコンピューターの中で適用できるということはそのスケーリング性にもアドバンテージがあることになります。人間の手作業から解放されているだけでなく、IC チップなどのハードウェアの進化、ソフトウェアとしての機能の進化などを素直にすべて享受できるので、これからも彼らの能力が行使される速度はどんどん上がっていくのですね。\u003C/p>\r\n\u003Cp>最後に、プログラミングされた結果としてのアウトプットは、私たち人類がこれまで積み上げてきたソフトウェアの仕組みに最大限「乗っかる」形で利用されます。大半のものが電子化された情報化社会においては、その表層に置けるものを素早く大量につくることで非常に効率的な設計、製造が可能です。これが「プログラミングが他の分野に比べて人類に与えられる影響の大きさが特に大きい」と言われるゆえんでもあります。\u003C/p>\r\n\u003Cins class=\"adsbygoogle\" style=\"display:block\" data-ad-client=\"ca-pub-2873410957106428\" data-ad-slot=\"2068327194\" data-ad-format=\"auto\" data-full-width-responsive=\"true\">\u003C/ins>\u003Ch2>\u003Cspan id=\"toc4\">LLM が登場してからプログラミングはどう変わってきた？\u003C/span>\u003C/h2>\r\n\u003Cp>では、LLM が登場してから実際に現場ではどのような使われ方をしているのでしょうか。今回は大きな流れがわかるように 3 つのフェーズに区分けして紹介します。\u003C/p>\r\n\u003Ch3>\u003Cspan id=\"toc5\">ChatGPT 登場時：コピペと質問の繰り返し。それでも多くのハマりポイントは解決できるようになった\u003C/span>\u003C/h3>\r\n\u003Cp>いま思えばですが、ChatGPT が登場したばかりのころはハルシネーション（もっともらしい誤り）や議論の堂々巡りなども多く、複雑なやりとりを長く継続するのは難しいことがありました。とはいえ、これまで頑張って検索していたエラーの修正方法などを調べる工数は格段に省力化しましたし、状況に応じた回答をコードつきで返答してくれるというのはやはり革新的でした。それを裏付けるべく、例えばプログラミング中に困ったことを相談しあうプラットフォームとして世界的に有名な「Stack Overflow」は ChatGPT 登場以降にアクセス数が激減したとして話題になったりもしました (3)。\u003C/p>\r\n\u003Cp>筆者自身、それまで難解に感じて学習が進まなかったとある技術の習得が ChatGPT により急速に進んだ経験があり、「世界中で同じようなことが起こっているのだろうな」と感じていました。この時点でプログラミングに関して個人が直面する多くの問題が解決に向かうようになり、時を待たずしてこれはすぐに「どう効率化してスピードを速めていくか」という路線へシフトすることとなります。\u003C/p>\r\n\u003Ch3>\u003Cspan id=\"toc6\">自律型コーディングエージェントの登場：ソフトウェア開発の加速度が急激に上昇する\u003C/span>\u003C/h3>\r\n\u003Cp>ほどなくして、開発者がコーディングを行うプログラミングエディタ内で自律的に動作する AI、通称「コーディングエージェント」が生まれました。彼らはユーザーが送った質問や実装命令などをもとに必要な情報を自分で集め、適切なファイルを探し出し、コードの書き込み、すなわちプログラミング作業そのものを実行します。前述した GitHub Copilot がすでに存在していたこともあり「開発者の手元でそのまま動く AI」という発想が具現化するのは当然の流れとも言えましたが、勝手に考えて自分で作業を進めていく様を初めて見たときは呆気にとられたものです。\u003C/p>\r\n\u003Cp>そしてこの頃から、前述した「プログラミングにかかわるほとんどの作業に物理的作用が必要ない」という事実が活きはじめます。例えば既存のプログラムに新機能を追加したいというシナリオを考えると、コードの読み取りや書き込み、実際にテストしたり起動したりするといった操作はすべてコンピューターのターミナル（CLI）操作で可能です。しかもこれらのコマンドは長年ソフトウェア開発の歴史で積み上げられてきたごく一般的な概念なので、LLM は追加の学習や専用のツールなどなくともすでに使いこなせる状態だったのです。\u003C/p>\r\n\u003Cp>開発者自身の作業効率も単純に向上しました。初期の ChatGPT では、ウェブ検索機能が存在しないので最新情報がわからないという弱点が如実に露呈していましたし、関連するファイルやコンテキスト情報を自動で参照してもらうこともできなかったのでいちいちすべてを貼り付けて説明する必要がありました。いままでやっていた本来の開発作業が「泥臭いチャットコピペ作業」になっただけという感じでしたが、コーディングエージェントはそんなことをせずとも私たちが必要と考える情報は勝手に参照してくれます。まさにコンテキストの共有ですね。\u003C/p>\r\n\u003Cp>この頃から周辺エコシステムのツールも乱立しはじめ、AI を提供する各社もコーディング用モデルの進化に中心的にリソースを割き始めるようになります。前半で話したように、プログラミング作業のためのさらなる効率化や性能向上の余地はどんどん見えてくることに対して、他の分野におけるモデル性能アップの費用対効果は鈍化しはじめていたからです。\u003C/p>\r\n\u003Ch3>\u003Cspan id=\"toc7\">コードレビューや周辺ツールすらもオーケストレーションするフェーズ：人間はマネジメントへ\u003C/span>\u003C/h3>\r\n\u003Cp>ひとつ前のフェーズの時点で、すでに大半の作業はコーディングエージェントに任せられるようになっています。例えば筆者自身、新機能の追加、バグ調査や修正、仕様の確認などにはほぼ必ずエージェントを使用しています (4)。\u003C/p>\r\n\u003Cp>反対に、現時点でエージェントにやらせていない主な作業は以下です。\u003C/p>\r\n\u003Cp>・要件や仕様の定義\u003Cbr />\r\n・ソフトウェアの設計\u003Cbr />\r\n・長期的なプランの検討（どこになにをつくる、組織課題とどう紐づけていくか、チームメンバーに何をやってもらうか…など）\u003C/p>\r\n\u003Cp>そうです、これはいままで「管理職」や「上流工程」などといった言葉で表現されていた仕事ですね。プログラマは単にコードを書いていればいいのではなく、もっと広い視点を持った上位概念の業務にもあたらなければならなくなっています（筆者はもともとそれはそうだと思っていましたが）。もし仮にプログラマという言葉が「与えられた仕様をもとにコーディングのみをする人」を指す言葉だったとしたら、この職種は絶滅に瀕しているといっても言い過ぎではないかもしれません。それくらい、ソフトウェア業界では仕事のあり方が変わっています。\u003C/p>\r\n\u003Cp>さらに本記事執筆時点では、コーディングエージェントを複数同時に動かして効率化を図ったり、互いを協調させてより成果物の品質を上げるような使われ方も広まりはじめています。人間が行う AI のマネジメント作業ですら全体においてはボトルネックになってしまうので、そこもなるべく AI に任せてしまおうという考え方ですね。なにやら危険な感じもしますが、うまく活用できている組織では歴史上類を見ないレベルでの開発速度を達成していたりする事例もあります (5)。\u003C/p>\r\n\u003Ch2>\u003Cspan id=\"toc8\">今後はどうなる？\u003C/span>\u003C/h2>\r\n\u003Cp>今後については「わからない」以外に言えそうなことがないのですが、大まかな予測としては以下のようなことを考えています。\u003C/p>\r\n\u003Cp>・プログラムを書くという行為は人間が行うものではなくなっていくのでは\u003Cbr />\r\n・いっぽうで、ソフトウェアエンジニアという職種がなくなることはしばらくはないだろう\u003Cbr />\r\n・残る仕事のメインはトレードオフの判断、設計や運用方法の定義、ソフトウェアのテストなどではないか\u003C/p>\r\n\u003Cp>ふたつめについては今回の記事で話してきたことと相反するようですが、これは「プログラムのコードを書くこと」以外ではまだまだ大きな専門領域として存在意義があるだろう、という意味です。結局のところプログラムを書く超便利なツールが現れただけであり、本質的にやっていることは変わらないという考え方ですね。例えば黎明期のコンピューター (6) では人間が大量のケーブルやスイッチを手動でつけかえるという作業をしていたわけですが、彼らから見た現代のコンピューターやプログラミング言語は「革命的ではあるが自分たちのやっていることと方向性は同じだ」と感じるかもしれません。\u003C/p>\r\n\u003Cp>たしかに仕事の内容は確実に変わってきていますし、より別種の知識を求められるようにもなってきています。しかしそれは本来「常に勉強あるべし」ということだったのと何も変わりはないし、過去何度も繰り返されてきたことであるというだけなのかもしれません。多少なりとも身の危険は感じますが、それでもこの体験をリアルタイムでできていることに筆者は最近ずっと感動しています。この先の行く末はわかりませんが、楽しみながら生き残れるように改めて気を引き締めていきたいところです。\u003C/p>\r\n\u003Cp>&nbsp;\u003C/p>\r\n\u003Cp>[注釈]：\u003Cbr />\r\n1. Vol.6（No.147 '24 秋の号）をご参照ください。\u003Cbr />\r\n2. \u003Ca href=\"https://www.itmedia.co.jp/news/articles/2106/30/news063.html\">https://www.itmedia.co.jp/news/articles/2106/30/news063.html\u003C/a>\u003Cbr />\r\n3. \u003Ca href=\"https://gigazine.net/news/20230727-stack-overflow-traffic-fall/\">https://gigazine.net/news/20230727-stack-overflow-traffic-fall/\u003C/a>\u003Cbr />\r\n4. 「生成されたコードに一切手をつけずそのまま使っているか？」というよくある質問に対しては「ケースバイケースです」という回答になります。生成規模が十分に小さければもちろん手直し不要なこともよくありますし、事前にエージェントに伝えておく「ルール」（システムプロンプトと近い概念）の精度が高ければ高いほど、自分が意図しているコードは一発で出やすいです。\u003Cbr />\r\n5. 例えば、コーディングエージェントのトップシェアを争う「Claude Code」というアプリケーションのそのもの自体が凄まじいスピードで開発されています。Claude 社は早くから Claude という AI を複数動作させてほとんどの作業を委任する仕組みを確立しており、この知見が現在業界にも広まりつつあるという状況です。\u003Cbr />\r\n6. ENIAC（エニアック）。参考：\u003Ca href=\"https://ja.wikipedia.org/wiki/ENIAC\">https://ja.wikipedia.org/wiki/ENIAC\u003C/a>\u003C/p>","2026-05-30 12:50:46","Up&amp;Coming","up-and-coming","","https://mirumi.media/agentic-coding.png",false,[],1780113125746]