😸
2025-01-26
約5279字
AIエージェントが非常に盛り上がってきましたね!
いま、AIにコーディングさせるなら、最も有名なのはClineでしょう。
ClineはVSCodeのExtensionとして利用でき、Human-In-the-loopで人間がAIをリードする形で半自動でコーディングさせる最高のツールです。
Clineをフォークしたプロジェクトも非常に多く出てきており、最高の盛り上がりを見せているといっても過言ではありません。
もっと自動でAIにコーディングをサポートしてもらう。具体的には、Slackで要件を投げるとPR作成まで行ってくれるサービスにDevinもあります。
しかし、Devinは $500/month と月額$500という業界最高水準の価格設定が課題です。エンジニアを1人雇うと考えれば安い…などいろいろと考え方もありますが、ちょっと試すには勇気のいる金額ですよね。
でも実は、Devinのオープンソース版ともいえるOpenHands(旧: OpenDevin)は無料で使えます。
Slackとの連携はできませんが、なんといっても無料で使えるのは非常にうれしいですね。
今回は、OpenHandsを使って、実際にGitHubと連携し機能開発を行いPRを作成させるところまで自動で動作させてみたいと思います。
さらに、全く同じプロンプトを用いてClineで開発したときの差分を比較し、使用感についてまとめています。
おまけとして、Devinはブラウザを扱えるため、ブラウザを使ったユースケースについても簡単にまとめておきます。
自分で実証実験を行うにはちょっとヘビーな内容をまとめてみたので、ぜひ気になるところだけでもご覧ください。
OpenHandsはDockerイメージが提供されているため、 pull -> run
で簡単に立ち上げ可能です。
しかし、個人的に docker run
を長ったらしく書くのは好きではないので以下のような docker-compose.yaml
を作成してみました。
version: '3.8'
services:
openhands-app:
container_name: openhands-app
image: docker.all-hands.dev/all-hands-ai/openhands:0.21
pull_policy: always
environment:
- SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.21-nikolaik
- LOG_ALL_EVENTS=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ~/.openhands-state:/.openhands-state
ports:
- "3000:3000"
extra_hosts:
- "host.docker.internal:host-gateway"
tty: true # -t オプションに対応
stdin_open: true # -i オプションに対応
docker compose up -d
でコンテナを立ち上げ、 localhost:3000
にアクセスするとAPIキーが求められるので、お好きなprovider / model のAPIキーを入力して使ってみます。
Hacker newsの上位3件を日本語で5行程度に要約して
と単純なプロンプトを投げてみます。
極めて単純なプロンプトですが、実際にブラウザを起動しています。
さらに各ページにアクセスし、タイトルだけではなく内容までFetchしたうえで日本語の要約を作成してくれています。
要約の内容は以下のようなもので、日本語としても全く問題ないものでした。
「強化学習による推論能力の進化」(671ポイント)
DeepSeek-R1という新しいLLMモデルが発表され、強化学習を通じて推論能力を向上させる手法が提案されています。
従来のLLMと比べて、より論理的な思考と推論が可能になったとされています。
「Steam Brick:画面もコントローラーもない、電源ボタンとUSBポートだけのデバイス」(417ポイント)
極めてミニマルなゲーミングデバイスのコンセプトが提案されています。
必要最小限の機能だけを備え、シンプルさを追求した設計が特徴です。
「強化学習による推論の出現」(89ポイント)
AIシステムにおける推論能力の発達について研究された論文が公開されました。
強化学習を用いて、より高度な推論能力を持つAIシステムの開発方法が示されています。
1年前にこのようなフローを実装しようとした場合、クローラーを自前で用意するか、FireCrawlやSerpApi のようなクローリング可能なAPIとLLMを連携させてフローを作成する必要がありました。
しかし、OpenHandsはワークフローの作成を全く意識することなく、ただプロンプトを一行書くだけでやりたいことが実現できました。この自由度は圧倒的で、まさに未来を感じる体験です…!!
とはいえ、これだけなら手動でワークフローが組めてしまうのも事実。
OpenHands の本領たるプログラミング領域のことをやらせてみましょう。
OpenHandsのトップページに Connect to GitHub という項目があります。
これをクリックするとさらにダイアログが出現し、ConnectからGitHubのアクセストークンを発行することが出来ます。
発行後、フォームにトークンを入力するとOpenHandsにGitHubへレポジトリの閲覧やPR作成の機能が解放されます。
GitHubとの連携後に、Open a Repo で作業したいレポジトリを選択してプロジェクトをつくってみると、以下のようなサンプルが提供されます。
まずは Fix README
からREADMEを作ってもらいましょう。
今回はexampleとして提供されているプロンプトが英語なので、作成されるREADMEも英語でした。そこで、「日本語に要約して」という指示を送るとちゃんとREADMEを作成してくれました。
コードの変更は、Open in VS Codeから確認できます。
今回はDiffもよさそうだったので、Push & Create PR を選択。
すると、PRが自動で作成されています!!
PRまで作ってくれるのはOpenHandsのとても良いところですね。
READMEだけだとありがたみが少ないので、実際に機能開発もさせてみましょう。
また、Human-In-the-loopなClineでも同じ機能開発をして、比較も行ってみます。
OpenHandsのPrompting Best Practiceによると、100行を超えない程度の単一の機能開発が推奨されています。
ちょうど現在個人開発しているアプリについて、インメモリストレージに保管しているデータを、ローカルDBに保存する処理だと100行未満の良い題材になると思うので試してみました。
app/lib/screen/stock_screen.dartで記事をストックするとき、
インメモリに保存されるようになっていますが、
isarに保存されるよう修正してください
プロンプトは上記のようにして実行した結果がこの通りです。
プロジェクトのアーキテクチャを理解したうえで、適切な箇所にコードを生成することが出来ています。
今回Fllutterのプロジェクトの機能開発を行ってもらったのですが、立ち上げたコンテナには Flutterをインストールしておらず、OpenHands内では動作確認できませんでした。
しかし、OpenHandsは動作確認が不十分であることを理解し、動作確認項目としてチェックリストを作ってくれます。
したがって、開発時にはゼロから開発を行う必要はありません。動作確認リストに従い修正を行っていけば良いというスタイルです。
2025年1月現在、AIコーディング支援ツールの主要プレイヤーとしてClineが存在します。
ClineにはPRの作成はありませんが、単一の機能開発レベルではOpenHandsとどのような差分が出るのか、どちらもClaude-3.5 sonnet を用いて実験してみました。
ClineはOpenHandsよりもかなり細かくファイルの確認を行い、ユーザーに同意を求めてきます。
また、Cllineはローカルで実際にコマンド実行が可能なので、 flutter pub get
のようなコマンドを逐次実行し、着実にコード修正を進めていきました。
細かい変更が確実に動くという意味ではClineの方が安心感があります。
しかし、プロジェクトのアーキテクチャをしっかりと理解しているかという点においては、OpenHandsの方に分があるように感じました。
具体的には、Flutterで利用するローカルストレージのisarは、特定のmodelだけではなく複数のmodelを扱うため、共通化しておくような設計をしておく方が使い勝手が良いと言えます。
OpenHandsは上記のアーキテクチャを理解し、最初から一発でそのようにコーディングしてくれました。一方、Clineは愚直にProviderの中でisarを初期化して呼び出していました。
アーキテクチャ設計の観点では、OpenHandsがより優れたコード生成能力を示しました。
また、「StorageをインメモリからローカルDBに変えてくれ」という指示に対し、OpenHandsは表示部分でもローカルDBの内容を反映するようコーディングしてくれました。
しかし、Clineはプロンプトの内容通り、データ周りのみ反映しただけで、表示部分は改修してくれず、気が利かない部分があるなと感じました。
Clineは下記のように3ステップの指示が必要でした。
OpenHandsは、最初の指示のみでClineの1-3までの手順をすべて実行してくれました。
Clineの場合、途中で人間の指示を都度必要とすることも相まって、コーディングのスピードもOpenHandsの方が数倍早いことも特筆すべき特徴です。
もちろん、VSCodeとのシームレスな連携機能はClineの強力な利点と言えます。
今回の検証を通じて明らかになった主要な知見を整理します。
1. ツール特性の違い
2. コストパフォーマンス
3. 開発効率比較
4. 現実的な活用シナリオ
AIコーディングツール市場2025年、恐竜的な進化が起こっていくことはもはや確定路線です。本記事で比較したツール以外にもたくさんの驚異的なツールが出てくることが予想されます。定期的に新情報をチェックし、自分に最適な「AIペアプログラマー」を見つけてください。
©︎ 2025 - Yard