概要
まず、本記事の背景ですが、本記事を書く数日前に、「Devin AI|話題の世界初 "完全自律型" AIエンジニア「Devin」の公開内容の全訳」 という記事を書きました。
ありがたいことに、フォロワーも少ないのに記事公開後のたった3日間程で 1万超の閲覧(View) をいただけました(YouTube の解説動画も公開3日目で1万回再生を突破しました)。
「AI の進化もすごいし、みんなのアンテナもすごいなぁ」という思いに浸りながら、ふと海外の AI 界隈の記事を漁ってたら、なんと 「Microsoft が自律型 AI ソフトウェア開発ツールを作ってるらしい」 という記事を発見しました。「ツール」と呼ぶよりは、「ソリューション」の方が近いのでしょうか。
しかしコレ、本記事執筆の現時点で ほぼ日本語記事が存在しておりません でした。
なので、本記事では、現状わかっている内容をまとめて、アンテナを貼っているエンジニアの皆様に "刺激的な" 最新技術情報を届けたいと思います。
注意
本記事は、公式の論文に加え、他のネット記事も加味した個人的な意見を含む内容であることに注意してください。
事の発端は arXiv の学術論文
事の発端は、2024年3月13日(AIエンジニア「Devin」発表の翌日)に、"arXiv" にマイクロソフト(Microsoft)がアップロードしたとある論文です。
そのタイトルは 「AutoDev: Automated AI-Driven Development」(AutoDev:AI 駆動の自動開発)。
まず、実際の論文をこちらに貼っておきます。
冒頭に投稿者が記載されていますが、各投稿者の名前の下に 「Microsoft Redmond USA」 と記載されています。つまり、「マイクロソフト本社」 です。
ちなみに、マイクロソフト本社の所在地は、アメリカのワシントン州レドモンドです。
Microsoft Corporation, One Microsoft Way, Redmond, WA 98052-7329. USA
そもそも arXiv(アーカイヴ)とは
「arXiv(アーカイヴ)」 は、物理学、数学、経済学、コンピュータサイエンス、生物学、ファイナンス、電子工学・システム科学、などの各分野の、プレプリント(査読前の論文) を含む学術論文を 無料で公開・閲覧できる Web サイトです。
論文のアップロード・ダウンロードが共に無料で、ファイル形式は PDF です。
学術論文のリポジトリをホストする 「プレプリントサーバ」 の先駆けとなったサイトです。
前身は "LANL preprint archive" で、1991年にロスアラモス国立研究所の研究員だったポール・ギンスパーグ氏により、物理学分野のプレプリントを保存しておくためのサーバとして開発されました。
1999年に "arXiv.org" と改名し、現在は コーネル大学図書館 が運営しています。
投稿論文の識別子
arXiv の論文には全て 識別子(つまり、ID)がつけられており、2007年4月1日以降は、以下の形式で管理されています。
arXiv:<投稿年月>.<投稿数番号><バージョン>
更に、後ろに [登録分野]
や日付などが付与されます。
今回の件のマイクロソフトが発表した論文を挙げると、以下の通りです。
-
arXiv:2403.08299v1 [cs.SE] 13 Mar 2024
-
2403
: 2024年3月の投稿 -
08299v1
: 8299番目の論文 -
v1
: 第1版 -
[cs.SE]
: コンピュータサイエンス・ソフトウェアエンジニアリングの分野 -
13 Mar 2024
: 実際には、2024年3月13日に投稿された
-
「プレプリント」とは
「プレプリント」とは 「査読前の論文」 のことです。
そもそも学術論文は、論文の原稿を発表すると、次に 「査読」 というプロセスで専門家などによって中身を評価されます。
例えば、出版物ならば査読プロセスを無事に通過すると出版とかができる訳です(審査に近いイメージ)。
ただし、この「査読」は非常に時間がかかり、平均して数ヶ月、長いと一年以上かかります。arXiv は素早い情報交換を目的として設置されているため、プレプリントである論文を共有するサーバなので、公開前に中身を完全に精査しているわけではありません。
とはいえ、完全なフリーパスにはなっておらず、あまりにひどい論文はリジェクト(削除)されたり、登録分野を移動させられたり、更にひどい場合には投稿者のアカウント停止(いわゆる「垢BAN」)もされる様です。
論文の概要
一言で要約すると、「自律型 AI エージェントを活用した、完全に自動化された開発フレームワーク」 のお話です。
元ネタの記事の中では、「AudoDev」 と呼称しており、ネット上では 「Microsoft AutoDev」 などと呼ばれています。
そこには、AI-Driven(AI ドリヴン) な開発手法、つまり「AI駆動開発」という、ワクワクと恐怖が同時にくるような単語が載っておりました。
論文の中では、「ツール」や「ソリューション」ではなく 「フレームワーク」 と呼称してますが、これはもう、中でそのフレームワークを実現する 具体的なプロダクトを既に開発している に等しい状況だと思います。
論文の中でも、なんか実際にテストをして具体的な比較・評価値をチョイチョイ記載してます。
なので、本記事では、「AutoDev」 を、フレームワークではなく、動作する1つの ツールとして 扱い、他のネット記事も含めて内容を要約し、個人的な解釈や考察も加味した情報として紹介します。
(純粋な情報だけが知りたい場合は、ぜひ論文をご覧くださいませ🙏)
「AI駆動開発」とは
「AI-Driven Development(AI 駆動開発)」 なる新単語が生まれていました。
標準化された明確な定義はもちろんまだありませんが、「AI の利活用を基軸にプロダクトやソリューションの開発」みたいな理解で良いと思います。
「AI工藤開発」 「AI駆動開発」…、なんか未来が未来じゃなくなってきましたね。。。
せやかて駆動
あくまで駆動(トリガー)が AI ということなので、AI で完結させても良いし、それをベースに人間が微調整をしたりすることも含むと思います。
Microsoft AutoDev とは
「Microsoft AutoDev(以降、AutoDev)」は、AI 技術を活用した自律型ソフトウェア開発ツールです。
従来の開発ツールとは異なり、「コード生成」や「テスト自動化」などの単一タスクを自動化するのではなく、開発プロセス全体を自動化 する包括的な開発プラットフォームです。
AutoDev は、ソフトウェア開発の効率化、コスト削減、開発者の負担軽減を実現する可能性を秘めています。
AutoDev の仕組み
AutoDevは、以下の4つの主要なコンポーネントで構成されている様です。
-
Multi-Agent(複数の AI エージェント)
- 開発プロセスを自動化する AIモデル群
- エージェント・スケジューラ を備えており、ここで複数の AI エージェントを管理・配置する
- ここで役割毎の専門家を複数用意するようなイメージ
-
Conversation Manager(会話マネージャ)
- 「AI エージェント」の活動を管理し、開発プロセス全体 を統括・管理するコンポーネント
- 目的や定義の設定、アクションに関するルールや権限の制御を行う(たぶん)
-
Tools Library(ツール・ライブラリ)
- AI がアクセス可能な、ファイル操作、検索、ビルド・実行、テスト、Git 操作を提供するツール群(実際には、AI に対してコマンドを提供する)
-
Eval Environment(評価環境)
- Docker コンテナを利用したセキュアな実行環境
- 実際に、ビルド・実行・テストなどを行う場所
AutoDevの特徴
AutoDevは、以下の特徴を備えています。
- 自律性:人間による介入なしに、開発プロセス全体を自動化できる
- 汎用性:様々な種類のソフトウェア開発プロジェクトに適用できる
- 拡張性:新しい AIエージェントやドメイン知識を追加することで、機能を微調整・拡張できる
以下、提唱しているコンセプトと(おそらく、そのように実装される)機能です。
尚、権利的な心配上、論文の画像はここでは引用しませんのでご了承ください🙏
AI 同士が会話するコンセプト
- AutoDev の核心は、協調型AIエージェント であること
- 複数の自律型 AI が、複雑なソフトウェア開発の目的を達成するために協力し合う設計
- 環境内で、ファイル編集、検索、ビルド・コンパイル、コードの実行、テスト、Git操作など、様々なリソースに直接アクセスし操作できるように作られる
- 開発ライフサイクル全体を通して、ユーザのプロジェクトをサポートしてくれる「AI 開発チーム」が完成する
「会話」と表現すると近未来に聞こえるが、要するに AI エージェントが互いにステータスを共有し、それらによって処理をトリガーするという事だと思います。
だけど、AI が人間に意見を求めてくる
- AutoDev は、AI エージェントに
talk
コマンドとask
コマンドを提供する - AI エージェントは、
talk
コマンドとask
コマンドを使って、タスクの進捗状況を伝えたり、人間の管理者にフィードバックを求めたりする - つまり、質問に回答できる知見を有した人間が必要になる
-
「
ask
コマンドの追加」 は、AutoDev 開発中に、「AI エージェントが次のアクションについて確信が持てないような場合に、フィードバックを提供する機能が欲しい」という 開発者の要望に直接応えた結果、搭載された もの、とのこと
共有可能なプロンプト
- まず、人間のユーザーが特定の要件やトリガーとなるプロンプトを与える
- ルール・アクション・目標設定などを Yaml ファイルで定義し、そこからプロンプト化する
- このプロンプトは「テンプレート」または「ボイラープレート」から作成できる様になっている
- すると、ツール環境内で AI エージェントが会話を始める模様
- チーム内でこのプロンプトを共有・配布できるため、プロジェクトの一貫性が保たれる
- 最初のデフォルトのプロンプトは編集・上書きが可能で、AutoDev の動作を微調整できる
自動テスト
- AutoDev は、テストケースの生成を自動化する機能を持っている
- コードを分析し、コンテキスト(背景)を理解することで、適切なテストシナリオを提案する
- これにより、テスト・プロセスが合理化され、コード品質が向上する
多言語サポート(プログラミングに関する言語)
- JavaScript/TypeScript はもちろん、Java, Kotlin, Python, Rust, Go, C/C++ など幅広い言語をサポートする
- AutoDev ユーザは、プロジェクトで言語切り替えを活用することで、シームレスに言語を切り替えることができる
セキュリティとプライバシー
- AutoDev は、セキュリティとプライバシーを保証するように設計される
- 全ての操作は Docker などのコンテナ内で行われ、ホストシステムから隔離されて実行される
- 不正アクセスを防ぐガードシステムを持ち、機密ファイルを保護する
- ユーザは、環境内で実行できるコマンドや権限を定義・制限することで、開発環境内の制御秩序を維持することができる
AutoDev のパフォーマンス
それでは、肝心のパフォーマンスです。
正直、AI が出てくる度に聞きなれない試験や指標が出てきて毎回大変ですが、今回は 「HumanEval」 のデータセットで評価された結果です。
HumanEval とは
「HumanEval(ヒューマン・イーヴァル)」 とは、HumanEval は OpenAI 社が2021年に公開した、プログラミング能力を評価するためのベンチマークで、複雑で多様な問題を含んだ Python のプログラミング問題集です。
こちらも、arXiv に論文があります。
HumanEval データセットは、「コード生成」「テスト生成」に関する、164個の Python プログラミング問題と、各問題に対する複数の解答例を持ったデータセットです。
問題の難易度は初級から上級までを網羅しており、「HumanEval」は LLM のコード生成能力を測定する標準的なベンチマーク の1つとして扱われている様です。
評価指標 Pass@k
「HumanEval」において、生成された正確さの評価には評価指標 Pass@k
が用いられます。
まず、流れとしては、生成 AI が問題に対してコード(プログラム)を生成します。
次に、生成したコードが正しいかをテストケースを通すことで評価します。その結果によって、評価指標 「Pass@k」 で正答率を算出します。
生成 AI が k 個のコードを生成し、その中のいずれかが正しい場合に「正解」と評価します。その割合を「Pass@k = x%」という感じでパーセンテージの数値で示します。
例えば、「Pass@1」 は、生成されたコードが一発合格する確率です。「Pass@5」 は、5個の生成コードのうち、どれかで正解した場合となります。
つまり、「Pass@1 = 50%」 は、一回の生成コードで正しい回答をする確率が50%ということです。また、「Pass@5 = 50%」 は、生成コードのテストを5回試行すると、50% の確率で正解を書けるということです。
実際の評価
論文の記載によると…
In our evaluation, we tested AutoDev on the HumanEval dataset, obtaining promising results with 91.5% and 87.8% of Pass@1 for code generation and test generation respectively, demonstrating its effectiveness in automating software engineering tasks while maintaining a secure and user-controlled development environment.
『HumanEval データセットで AutoDev をテストし、「コード生成」と「テスト生成」でそれぞれ 91.5%(コード生成) と 87.8%(テスト生成) の Pass@1 という有望な結果を得たので、セキュアで安全にユーザ制御の開発環境を維持しながら、ソフトウェアエンジニアリング作業を自動化する AutoDev の有効性を実証することができました。』
つまり、生成したコードがほとんど問題なかった(一発合格だった)という結果だった様です。
AutoDev の活用例
記事等を参考に、現時点で考えられる AutoDev の活用事例をまとめてみました
-
コード生成
- 新しいアプリケーションをプロンプトから新規開発する
-
リファクタリング
- 既存のアプリケーションのソースコードを改善する
- AutoDev は、ソースコードからコンテキストを理解し、適切な改善点を提案できる
-
ドキュメンテーションの自動化
- コードのコメントとソース構造を理解し、ドキュメントを自動生成する
- いわゆる「ドキュメントがない現場」などで、最新のドキュメントを生成・提案する
-
テスト自動化と品質向上
- 既存のプロジェクトのテストケースを作らせる
- 不具合の原因を調査させて、要約資料を作らせたり、理由を説明させる
- ソースコードをレビューさせる(品質向上)
- 顕在化していない潜在的なバグを探し、特定させる
-
バージョン管理を任せる
- Git 操作が可能なので、バージョン管理に関する作業を定義しオートメーション化できる
- Git Actions やワークフローを AI を活用したものに置き換え、デプロイメントや CI/CD の領域をより簡略化する
- GitHub の Issue を対処させる、Issue の情報をファイル等にまとめさせる
- バージョン履歴の情報を視覚的な資料に落とし込むタスクを依頼する
書いてて、段々恐ろしくなってきました☺️
AutoDev の開発状況
本記事の執筆時現在、AutoDev はマイクロソフト社内で研究開発が進められている段階で、まだ商用化されていません。将来的には、AutoDev のような「AI 駆動開発」ソフトウェア開発の主流になる可能性を秘めていると思います。
いずれにせよ、今後の開発状況や実用化に向けた取り組み等を注視していく必要がありそうです。
Devin のようなサービス、もしくはそれ以上のツール・サービスが発表されるかもしれません。
(そしたら、更に Google とかが追従してくるかもしれません。そこまでがセット)
所感(まとめ)
ワクワクと恐怖が同居しています。😇
参考
今回の解説をしている動画