メインコンテンツまでスキップ

AIエージェントはどれくらい開発に使えるか

· 約8分

この数ヶ月でGitHub Copilotだけでなく、CursorやCline、Devinなどの利用者が一気に増えてきているように感じる。弊社でも現在はClineを使っていて、かなり生産性が上がっている。(ちなみにClineの利用規約上、送信したデータがすべて抜き取られるのでは?と書いている人がいるが、こちらを見る限り問題ないと考えている)

AIを使った開発でどの程度生産性を伸ばせるかについて、B2BのSaas(eラーニングシステム、LMS)で、事業をやっている弊社の視点から感じたことをまとめてみる。実質的なコードベースは10万行弱で、サーバーサイドのPythonと、クライアントサイドのTypeScriptが半分ずつといったところ。

前提

「AIエージェントはどれくらい開発に使えるか」についてSNSでもいろいろな意見があるが、前提が違えば結論が違ってくる。

たとえば「プロトタイプ作成」や「メジャーな製品(たとえばStripeなど)のAPIを使った実装」などであれば、もう間違いなく使った方がいいし、中級レベルのプログラマであっても5倍10倍といったスピードアップが期待できる。

一方で「既存製品のコードベースが少なくとも数万行あって、その製品の背景やユーザーへの理解が必要で、かつ複雑なビジネスロジックやユースケースに沿った実装を行なう」というタスクだと、話が違ってくる。LLMに理解できるように指示を考えないといけないので、「製品の背景や用途についての理解があり、ある程度ざっくりした指示でも、おおむね正確に素早く実装ができるプログラマ」からすると、自分で書くのとエージェントにやらせるのとどちらが速いかはケースバイケースになる。

エージェントにやらせる場合は「いろいろがんばって指示出ししたけど、結局思ったような仕上がりにならず、結局自分で書いた」という結果になることもあり、そういうときはなかなかの徒労感がある。

ただ、全部をAIにやらせようとするのでなければ、論点の整理や、設計時の見落としチェックにおいて、AIを使った方が絶対に生産性は上がる。

ちなみに上記はPythonとTypeScriptを書かせる前提なので、PHPやJava、C#がメインだとまた印象が変わるかもしれない。

使用するモデルについて

今Clineと組み合わせて使っているのはClaude 3.7 Sonnet、ChatGPT o4 mini、あと最近はGemini 2.5 Proも加わった。あるLLMではイマイチだったタスクが別のモデルだといい感じになる、といったことがよくあるので、どれか1つに絞ると言うことはしない方がいいと思う。

ざっくりとした印象としては以下のような感じ。

  • Claude 3.7 Sonnet - 指示したことに対して、なるべく余計なことはせずに意図に合わせた実装をしようとする。複雑なケースはやや苦手か。あととりあえずそれっぽいUIを組み立ててくれるので、UIの検討時には便利。
  • o4 mini - 他の2つに比べると、やや遅い気がするが、複雑なケースについても割と意図した形に近い実装をしてくれることが多い。
  • Gemini 2.5 Pro - 最近使い始めたばかりだが、とにかく速い。またコンテキストウィンドウが長いためか、複雑なケースもちゃんと動くように実装してくれることが多い。生成されるコメントやコードはやや冗長かも。

この半年くらいを見ると、LLMの性能アップはかなりの速度で続いているので、新しいモデルは積極的に試すべき。

指示の出し方

Clineの場合はVSCode上で開いているタブをコンテキストに含めてくれるので、ある程度実装を頭の中でイメージしたら、参照すべきファイルを開いた状態で指示を出す。Planで実行し、計画を確認したらActという流れ。詳細な仕様を検討している段階では、Planはそんなに読まずにActしてから動かしてみる形になる。Actした結果はVSCodeのソースコントロールから差分をチェックする。

それで動かしてみて、気づいた点があれば指示を追加して、問題がなさそうだと思うところまで仕様をブラッシュアップしていく。Actした結果、途中でおかしなコードになることは頻繁にあるので、Gitのstagingやstashも多用して、行きつ戻りつでブラッシュアップを続ける。LLMは一度ハマると無能化することがあるので、そういった場合はコードをいったん少し前のバージョンに戻して、新しくチャットを始める。

最終的な仕様が決まったら、ここまで書いたところは、後で見られるように一度stashにでも入れておいた上で、一度コードを全部最初に戻した上で、改めて指示を出していく。今度はPlanについてもきちんと目を通し、意図した形になりそうかどうかも確認しつつ進める。この段階でも行きつ戻りつの進め方は同じ。

PlanとActでモデルを変えるかどうか

同じタスクでもモデルによってできたりできなかったりするので、別のモデルでの実装を試してみるのは必要。最近はPlanはo4-miniで実装はClaudeというパターンが多かったが、Geminiもよさげなので、このあたりの役割分担は変えるかもしれない。