AIエージェントソフトウェア開発という、つい最近勃興した分野で今、Aiderがおすすめな理由
AIエージェントソフトウェア開発という、人間とAIの協働による新しい開発スタイルが注目を集めています。今回は、この分野で特に興味深い存在感を示している「Aider」というツールについて、他のツールと比べながら特徴を解説します。私は2024年5月頃からAiderを使い始めました。
AIエージェントソフトウェア開発の本質
ここまで遡る必要はないでしょうが、いにしえのソフトウェア開発では、人間のプログラマーがコードを一行一行書き上げていくものでした。最近ではChatGPTをはじめとしたチャット形式でのコード生成、GitHub CopilotやCursorといったツールを介してAIのコード補完支援を受けなが開発するスタイルが当たり前となっています。ただ、これらはまだエンジニアが能動的に開発を推進していく必要があると思います。
ところが、AIエージェントソフトウェア開発では、人間が自然言語で大まかな指示を出し、AIがそれを解釈してコードを生成、改良、コミット、テストするという新しい形が生まれています。これはエンジニアがなんと受け身になって開発をすすめるというパラダイムシフトを起こしています。
AIエージェントの性能評価:SWE-bench
AIエージェントの能力を客観的に評価することは、この新しい開発手法の信頼性を高める上で重要です。そこで登場したのが「SWE-bench(Software Engineering Benchmark、えすだぶりゅーいーべんち)」というベンチマークです。SWE-benchは、GitHubの実際のオープンソースプロジェクトからセレクトされたIssueやPRをAIエージェントに入力して、修正コミットや機能開発コミットを開発させ、テストが通ったかどうかでその性能を評価するものです。ベンチマークの言語はPythonが主ですが、AIエージェントツール自体はどの言語でも使えます。
SWE-benchは、テスト件数で Full(2294 issues)とLite(300 issues)とVerified(500 issues)があります。Fullは規模が大きすぎてベンチマークを実行する度に生成AIのコストがかかりすぎるとのことで、早々にLiteが作られ、最近、ベンチマークとしての質を上げるため、エンジニアが一件一件IssueをセレクトしたVerifiedが誕生しました。SWE-bench Verifiedの開発にはOpenAIも協力しており、お墨付きを得ている感じがします。今後しばらくはSWE-bench Verifiedにだけアンテナを張っておけばよくなりそうです。
なお、✅マークがついていないものはSWE-benchチームがスコアの再現性を検証するのに必要なデータが提出されていないもので、スコアの信頼度が弱いことに注意しましょう。
どんなAIエージェントがある?Aiderのポジション
SWE-benchのリーダーボードがそのままツールの一覧になっています。大きく分けてまず、OSSなツールか有償の商用ツールかに分かれます。その中でも、SWE-benchのスコアは高いけれどツールが特化型であったり単純に成熟しておらず汎用な開発請負には使えないもの、汎用な開発請負をしてくれるものに分けることができると感じます。
SWE-bench Verified1位のGruは有償かつバグ修正に特化した仕組みで高いスコアを出しています。2位のHoneycombはYコンビネータの支援を受けて開発が始まったばかりでまだ試せるものはありません。
SWE-bench VerifiedにはまだAiderのスコアはありませんが、別の資料から推察すると AiderかつClaude 3.5 Sonnetを使用した時 38~9% くらいのスコアになるのではないかと思います。3位タイくらいの位置付けです。根拠は SWE-Agent のスコアです。次のOpenAIが公開したベンチマーク結果によると、おそらくGPT-4oを使用した時、Aider+GPT-4oが28.8%、SWE-Agent+GPT-4oが23.2%となっています。SWE-bench VerifiedでSWE-Agent+Claude 3.5 Sonnetが33.6%と10.4%性能向上していることから、AiderもClaude 3.5 Sonnetでベンチマークするとおよそ10%向上して 38〜9%になるのではと考えられます。
AiderはOSSながらベンチマークの性能評価でも高水準といえます。
また、AgentlessやAutoCodeRover、Moatless Toolsといったツールは、OSSかつAiderよりも高いスコアを出しており、AIエージェントの頭脳部分は優れていますが、汎用な開発用途で使えるようなツールにはなっていません。
Aiderは、性能も高水準ながらツールの使いやすさに開発の重点が置かれているのを感じられ、これによってより汎用的な開発タスクに対応できる点が今おすすめしたい理由です。
Aiderの特徴と魅力
オープンソース!
Aiderは、OSSなAIエージェントツールの中で開発が活発です。All Hands(旧OpenDevin)もコンセプトが似ていてOSSかつ開発が活発だと思います。高度な自動化能力
Aiderは、Gitリポジトリを認識し、Gitのリポジトリ情報からソースコードのソースツリー情報を把握した上で、新機能の追加や修正をある程度自動的に行います。人間の開発者が「この機能を追加して」「不具合があるのはこの辺が怪しいんじゃないか」と指示するだけで、AIが自律的に周辺コードを読み、コードを生成し、gitコミットまで行ってくれるのです。コミットメッセージのスタイルも自由度高くカスタマイズできます。高度な自動化能力かつ対話型という開発環境
Aiderの対話環境は、ChatGPTなどで親しみがあるチャットに近い感覚で使用できます。それでいて、先ほどの高度な自動化能力が備わっているのがこのツール最大の魅力です。この特徴により、Aiderからは単なる支援ツールを超えて、「開発請負ツール」と呼べるほどの主体性を感じます。Aiderとの対話型開発は、新人プログラマーとのペアプログラミングに似た体験を提供します。この開発体験は先ほども比較した SWE-Agent というSWE-benchのチームが開発しているAIエージェントツールと、コンセプトが似ていますが、Aiderはより自動化の面で実力があります。このファイルも修正必要だと思うから修正しておきましたといってくれます。対話型インターフェースのコマンド設計も扱いやすくストレスが全くありません。LLMの進化の恩恵をすぐに受けられる
OSSなAIエージェントツールに共通しますが、AiderはClaude 3.5 Sonnet、GPT-4o、Gemini 1.5 Pro、そして Llama 3.1などあらゆるLLMと繋いで使うことができます。最近コーディング性能に優れた OpenAI o1 が発表されましたが、LLMをo1に変更するだけですぐに性能アップを体験することができます。ソースコードが機密でLLMへの送信も許されない企業などでは、Llama 3などを使って完全ローカル環境で使うことも可能です。開発以外でも使える
テキストファイルであれば、記事や本を書いたりすることができます。Sakana AIの AI-Scientist というAIがアイディアから自律的に実験をして結果を学術論文としてPDFで出力するツールが公開されていますが、このツール、内部では Aider を活用して作られています。
とはいえ、完璧なツールというわけではありません。今はまだ〜200行程度のアウトプットをするとターン終了してしまうため、こまめに面倒を見なければいけません。トイレに行くぐらいしかできない。Pythonなどメジャーな言語であればコードを変更すると自動でテストを実行してエラーがあればそれを確認して修正してくれたりと守備範囲は広めに設定できますが、自信を持って提案したコードが、実際には期待通りに動作しない、適切ではないケースは頻繁にあります。
今はまだ忍耐力が必要ですが、LLMの進化はすごく早いのでこの不便さが解消されるのも時間の問題だなぁと思っています。
📣 勉強会コミュニティを立ち上げました
Aiderを日々の開発に取り入れて4ヶ月、他の人がどんな使い方をしているのか気になってきました。そこで、明日から使える便利な未来の開発スタイルを共有し合う勉強会コミュニティを立ち上げました。10月4日金曜日に初回ミートアップを渋谷で開催します。立ち上げたばかりということで配信等はせず現地参加のみで考えています。スピーカー・LTも募集中です。ご参加お待ちしております。