リファクタリング後に大量の細かいバグをひたすら修正したり、新しいプロジェクトのボイラープレートをひたすら手入力したりする作業は、エンジニアなら誰もが感じる消耗感だと思う。自分も以前、本来なら10分で片付くはずのロジックバグのデバッグに、まる半日を費やしたことがある。そのとき試してみたのが OpenHands(旧称:OpenDevin)——本物のエンジニアのようにプログラミングタスクを自律実行できるオープンソースのAIエージェントだ。
ChatGPTのようにテキストをやり取りするだけのツールとは違い、OpenHandsは専用のサンドボックス内でターミナルコマンドを実行し、ファイルを読み書きし、コードを書き、テストを走らせる。この記事では、Linuxへのセットアップ方法を実践的に解説する。
5分で起動する
OpenHandsを最短で動かすにはDockerを使うのが一番だ。Pythonの追加インストールも、ライブラリの競合も気にしなくていい。さらに重要なのは、このサンドボックスがAIをホストのファイルシステムから隔離してくれる点——誤って重要なファイルを削除するリスクを大幅に減らせる。
ステップ1:Dockerの確認
Ubuntu/Debianの場合は以下のコマンドで素早くインストールできる:
sudo apt update && sudo apt install docker.io -y
sudo usermod -aG docker $USER
Docker権限を有効にするため、一度ログアウトしてから再ログインすること。
ステップ2:イメージの取得と起動
以下のコマンドで最新イメージを取得し、ポート3000でWebインターフェースを起動する:
docker run -it \
--pull=always \
-e SANDBOX_USER_ID=$(id -u) \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
ghcr.io/all-hands-ai/openhands:0.9
ターミナルに Server started at http://localhost:3000 と表示されれば完了。ブラウザで開くだけで使い始められる。
なぜ普通のチャットボットとは違うのか
従来のAIチャットボットの根本的な問題は、フィードバックループの欠如にある。コードをコピーして貼り付け、AIに修正させて、また貼り直して実行——エラーが出ればまた最初から繰り返す。1サイクルあたり2〜3分かかり、10個のバグがあれば半日が溶けてしまう。
OpenHandsはこの問題を Event Stream という仕組みで解決している。AIが実行結果を観察しながら自律的に調整を繰り返すのだ。たとえば 「FastAPIをインストールしてシンプルなCRUDエンドポイントを書いて」 というタスクを渡すと、次のように動作する:
- Dockerサンドボックス内のターミナルを開く。
pip install fastapiを実行する。- 自動で
main.pyを作成する。 - サーバーを起動し、構文エラーがあればログを確認する。
- 正常に動作するまで自分で修正を続け、完了後に報告する。
以前、2年間手をつけていなかったPythonのリポジトリを投げてみたことがある:「依存関係をアップグレードしてビルドエラーを直して」。15分ほどで環境を再構築し、ライブラリのバージョン競合を修正し、ユニットテストを全通しさせた。同じ作業を自分でやったときは、エラーをひとつひとつ検索しながら約3時間かかっていた。
適切なLLMを選ぶ
localhost:3000 を開いたら、まずはモデルの設定が必要だ。実際に試したものをまとめると:
1. Claude Sonnet 4(推奨)
現時点でコーディングエージェントとして最も優先したい選択肢。長いコンテキストの追跡能力と複数ステップの指示への追従が安定していて、特に複数ファイルを同時に修正するタスクで真価を発揮する。AnthropicのAPIキーが必要。
2. GPT-4o
応答は速いが、200行を超えるコードの生成では途中で出力が途切れることがある。短いタスクや速度を最優先にする場面に向いている。
3. Ollamaでローカル実行
コードをクラウドに送りたくない場合、Ollamaが現実的な選択肢になる。ただし注意点として、Llama 3 8Bのような小規模モデルは、複雑なアクションの4〜5ステップ目あたりで失敗することが多い。ローカル運用を選ぶなら、DeepSeek-Coder-V2 または Qwen2.5-Coder 32B 以上を優先したい。
ホストマシンで起動中のOllamaへ接続するには、OpenHandsの設定でURLを以下に変更する:
http://host.docker.internal:11434
より効果的に使うためのコツ
プロジェクトディレクトリをマウントする
AIにソースコードを直接編集させるには、起動コマンドに -v パラメータを追加する:
-v /path/to/your/project:/opt/workspace_base
変更は実際のディレクトリにリアルタイムで反映される。タスクを渡す前にコミットしておくと安心だ——AIが誤った修正をしても git checkout で元の状態に戻せる。
タスクは小さく切る
「ECサイトを作って」 のような大雑把な指示は避けること。「JWT認証モジュールを書いて」→「商品用のデータベーススキーマを作って」という形で分割する。コード量が200行以下に収まるタスクは、曖昧で大きなタスクより明らかにクオリティが高い結果になる。
Max Iterationsを設定する
OpenHandsはループ処理で動作する。難しいエラーに当たると、50〜100ループ回っても解決できないことがある——しかも1ループごとにトークンを消費する。自分は常に Max Iterations = 20〜30 に設定している。ほとんどのタスクには十分で、月末のAPI請求が急増するリスクも防げる。
実際のところどう使えるのか
よく聞かれる質問として「OpenHandsはエンジニアの代わりになれるか?」というものがある。答えは No だ。 でも、それはOpenHandsの強みではない。
OpenHandsはむしろ、反復作業をいとわない勤勉なジュニアエンジニアだと思うといい。細かいバグ修正、ユニットテストの作成、データ移行、ボイラープレートの生成——作業時間の20〜30%を占めながらも深い思考を必要としない作業を任せられる。自分はプロダクション環境の自動化スクリプトに使っていて、結果は安定している。
まだAIに任せられないのはシステム設計と深いレベルのパフォーマンスチューニングだ——ビジネスコンテキストの理解が必要な判断はまだ人間の領域にある。ただ、定型作業をAIに任せることで、新機能の設計に集中できる時間が確実に増えた。
Linuxを使っていてまだAIエージェントを試したことがないなら、OpenHandsは始めやすい入口だ。初期セットアップは10〜15分ほど。1週間もワークフローに組み込めば、何を任せるべきか、何は自分でやるべきかが自然とわかってくるはずだ。

