Devinを使ってみよう #Devin #AI駆動開発

はじめに

ソフトウェア開発の現場では「AIコーディング支援ツール」は既に珍しくなくなりました。GitHub CopilotやCursorといったツールは開発者の手元での入力補完を中心に進化してきましたが、それらの多くは「エディタの中のアシスタント」や「質問への回答ツール」に留まっています。一方、Cognition社が開発したDevinは、Copilot(副操縦士・サポート役)を超えた存在です。Devinはリポジトリ全体を理解し、計画を立て、タスクを実行し、結果をレビューして報告できる、自律的な仮想チームメンバーとして振る舞います。公式ドキュメントの一文目にも「Devin is the AI software engineer」と明記されています。Devinを使うと以下のようなことができます。

  • Devinは 計画立案 → 実装 → テスト → Pull Request作成 まで一貫して担当可能。
  • 人間は「承認」や「方向性の調整」に集中できる。
  • 開発効率を高めつつ、コード品質や再現性を担保できる。

このポジショニングにより、Devinは大規模チームにおける反復的作業の自動化や、リファクタリング・移行プロジェクトの加速化に強みを持っています。GitHub Copilot コーディング エージェントと同様、ジュニアエンジニアに任せたい作業があるようなプロジェクトでは心強いソリューションと言えるでしょう。

Devinの主要なコンポーネント・機能

セッション

Devinの中心は「セッション」です。セッションは以下のように進行します。

  1. 人間が課題を入力「CSV出力時に日時の昇順になるようにしなさい。」
  2. Devinが調査
    o 対象コードを特定
    o 関連テストや利用箇所を確認
  3. Devinが計画を提示
    o どのファイルを変更するか
    o どんなテストを追加するか
  4. 人間の承認後にDevinが実装を開始
    o コード変更
    o テスト実行
    o Pull Request作成

セッションはチャットUIで進行します。人間は「今Devinが何をしているか」をリアルタイムで把握できるだけでなく、Devinの作業中に割り込んで追加の指示を出し、軌道修正することができます。Devinの作業や発言が終わるのを待たずに「そこはこうやって欲しい」などと話しかけることができ、チームメンバーとのペアプロと似た開発体験を提供してくれます。

Devin IDE

ブラウザ内に埋め込まれているVisual Studio Codeで、Devinが生成したコードを即時レビューできます。Devinの実装を人間が修正したり追加の編集を適用したりすることもできます。

ブラウザ

Devinが外部情報を検索する際に使う組み込みブラウザです。Devinがどの情報を参照したかを確認できます。

使い方の流れ

リポジトリを接続

セッションを行いたいGitリポジトリをDevinに接続します。GitHubやGitLabに対応しており、OAuth経由で簡単に接続できます。

Devin's machineにリポジトリを追加

Devin's machineはDevinがセッションを実行するときに使う、Devin用の開発環境(仮想PC)です。接続したリポジトリをDevin’s machineへ追加する作業は、人間の開発PCに開発環境を構築するのと同じことです。リポジトリは自動的にcloneされます。それに続けて、依存パッケージや必要なツール(例:Yarnの最新版)のインストール・設定を行います。また、そのリポジトリ(プロジェクト)の起動コマンド、LinterやUTの実行コマンドなどを設定(=Devinに教える)します。設定はDevinがリポジトリの中を検索して自主的に進めてくれるので、人間は必要に応じてサポートしたり承認したりするだけです。人間のチームメンバーが開発環境を構築する際と同様で、README.mdpackage.jsonなどが重要な役割を果たします。

Devinでは1つのDevin’s machineで全てのリポジトリを扱います。セッション開始時に対象のリポジトリを複数指定できるので、例えばフロントエンドとバックエンドでリポジトリが別になっているような構成の場合に、1回のセッションで両方のリポジトリを調べながら両方まとめて改修することができます。逆に辛い点としては、複数リポジトリでNode.jsのバージョンが異なる場合などはNVMのようなツールで切り替えながら作業するように設定しておくことが求められます。このあたりも人間のチームメンバー用の開発環境と同じイメージです。

Knowledgeを作成

Knowledgeは、Devinに「社内の常識」「プロジェクトの常識」を教える仕組みです。例えばパスワードポリシー、エラーハンドリングの規約、ブランチの命名規則などです。作成したKnowledgeは以下のように使うことができます。

  • 特定のリポジトリに紐付けておき、そのリポジトリとのセッションで自動的に参照させる。
  • 全てリポジトリに紐付けておき、全てのセッションで自動的に参照させる。
  • Devin uses this when…UTを作成するときなどと自然言語で設定しておき、Devinに必要なタイミングを判断させて参照させる。
  • マクロ名を設定しておき、セッション開始時にマクロ名を入力して明示的に参照させる。

一度作成したKnowledgeは複数のセッションや複数のリポジトリで再利用することができます。また、社内でDevinを使っている別のメンバーとKnowledgeを共有し、チーム全体としての品質に寄与することもできます。GitHub Copilotのカスタム指示と仕組みが似ていますね。カスタム指示との違いとしては、Devinではセッション中に「次回からのためにこれをKnowledgeとして追加するとよい」という提案が発生することがあります。必要に応じて内容を調整してから提案を受け入れると、Knowledgeが蓄積されてDevinがどんどん賢くなっていきます。

Ask Devinで調査してからセッションを開始

Ask DevinでCSV出力時のソート順はどうなっている?などと質問し、Devinからの回答を得ます。

質疑で方針を決めたら日時昇順にしたいなどと入力しCtrlEnterconstruct a Devin promptを実行すると、質疑のやりとりを踏まえてセッションを開始するために必要なプロンプトが生成されます。

Use/edit Devin promptを押すとそのプロンプトはセッション画面に入力された状態になり、プロンプトを適宜調整してセッションを開始することができます。

Ask Devinを経由せず、直接セッション画面で指示してセッションを開始することもできます。

Devinによる計画とその調整

セッションを開始するとDevinから計画が提示されます。このファイルは触らないでテストはJestではなくMochaでなどと計画の調整を指示することができます。

Devin IDE での実装・途中での追加指示・引き継ぎ

Devinは計画に従って調査・改修・テストなどを進めていきます。状況はリアルタイムでチャットUIに表示され、人間はいつでも追加の指示を出すことができます。途中で打ち切りにして、人間が続きを実装することもできます。AIにありがちな「最後の細かい部分がうまくいかない」が発生した場合は人間が引き継ぎましょう。

対応が完了するとDevinはGitHub上にPull Requestを作成します。

Pull Requestに記載すべき内容をテンプレート化しておけば、それに従って記載してくれます。人間がPull RequestをレビューしてPull Request上にコメントすると、Devinはそのコメントに自動的に反応して追加の修正をコミットしてくれます。

Pull Requestの内容が仕上がったら、マージしましょう。

ベストプラクティス

Devinは特に以下の領域で効果を発揮します。

  • 小粒タスクの並列処理
    • 例:複数のファイルに散らばる関数に一括でログ出力を追加
  • 移行・リファクタリング
    • 例:Express.jsからFastifyへの移行、Java 8コードの最新仕様対応
  • テスト・PRレビュー
    • 例:テストカバレッジ不足箇所の補完、CI/CDの追加検証、自動レビューコメント

また、いつDevinを使うべきかについては、下記の通りです。

  • 使うべき:テスト補完、API仕様変更への追従、ログ追加
  • 避けるべき:ピクセル単位のUI調整、ユーザー心理を読むUX設計

良い指示・悪い指示の例は以下の通りです。

  • 良い:「この関数の戻り値がnullの場合、例外を投げるよう修正して」
  • 悪い:「コードをきれいにして」

公式ドキュメントに記載されているとおり、Devinはジュニアエンジニアなので、UT作成やロジックの変更といった普段の簡単なタスクは実行できますが、複雑なタスクの実行は難しいようです。人間のジュニアエンジニアに指示を出すのと同じレベルで指示することが大切です。

その他の機能

Slackからの指示

Slackのスレッドで@Devinにメンションすると、Devinが調査・修正して結果をSlackに報告します。

この機能を使うと、仮想チームメンバーと一緒に作業している感覚が得られます。

DeepWiki

DeepWikiはリポジトリ内のREADME.mdや主要なソースファイル・設定ファイルなどを読み取って、Wikiを構築してくれます。

Wikiのページ構成を事前に設定しておけば、その構成に従って内容を埋めてくれます。プロジェクトの内容が変更された場合はWikiも更新させられます。プロジェクトへの新規参画者が重要な情報を俯瞰するのに役立ちそうです。

Playbooks

Devinにはなるべく詳しく指示を出す必要がありますが、UTカバレッジを80%以上にするなどの定形指示を毎回詳しく書くのは手間がかかります。そこで、このような指示をPlaybookとして保存し、セッションで再利用することができます。GitHub CopilotのPromptファイルと同様の仕組みです。

Playbookは自分で作ることもできますが、DevinではあらかじめいくつかのPlaybookが提供されています。例えば、標準で提供されているUnit Testingには350行の指示が含まれており、簡単な操作で高い品質を期待することができます。

MCP

DevinはMCPサーバーと接続できます。例えばJiraのMCPサーバーと連携してチケット#123の修正をDevinに依頼などと指示することもできるでしょう。

まとめ

Devinは単なるAIではなく、開発プロセスに組み込める「もう一人の開発者」です。しかも、複数のセッションを同時に実行してくれるので「もう一人」どころではありません。

  • 導入時:リポジトリ接続 + Devin's machineで環境を整備
  • 活用時:Ask Devin → 計画 → Devin IDEで安全に進行
  • 効率化:KnowledgeとPlaybooksで再利用・標準化
  • 拡張:SlackやMCPでチーム全体に展開

小さく試し、徐々に範囲を広げることで、Devinによりチームの生産性を高めていくことが期待できます。

Author

教育系エンジニア。開発やR&Dで最前線の技術を実践しつつ、後進の育成にも魂を燃やす。排出者は数千名。無類の子ども好きで、平日夕方は仕事を中抜けして近所の子どもと遊ぶ毎日。小学校でのプログラミング授業なども経験あり。

上村国慶の記事一覧

新規CTA