Devinと開発してみた-うまく付き合うコツと向いている人
はじめに
Rehab for JAPANの ui です。
今回は、弊社で試験的に導入を始めたAIエージェント Devin AI をプロダクト開発で活用した事例と、その中で得たコツを紹介します。
記事の最後には、「Devinを使うのに向いている人」についても軽く触れています。
対象読者
- Devin AIが気になっている人
- Devin AIへの依頼の仕方に困っている人
具体的なタスク例
CSVファイルからのデータ取り込み処理(Railsアプリ)
依頼前のポイント
Devinに依頼する前に、以下の準備をしておくとスムーズに進められます。
- 設計書を作成しておく
- 継承元の親クラスを作成しておく
当初は自分で実装するための設計書を作成していましたが、開発中にDevinが使えることになり、結果として 1と2の準備が整った状態 になっていました。
このように事前に準備ができていると、プロンプトでの作業指示が格段にスムーズになります。
プロンプトフォーマット
いくつか試した結果、現在は以下のフォーマットで依頼を行なっています。
# 依頼内容
概要を記載(例: 利用者データの取り込みロジックの作成)
# 作業ブランチ
作業ブランチ名を記載
例: branch-100(mainからブランチを切ってください)
# 詳細
タスク詳細を書く(後述)
プロンプトのコツ
Devinに依頼する際は、以下の点を意識すると精度が向上します。
✅ ある程度の具体性を持たせる
✅ 作業量を小さくする
✅ 必要なパスを明示する
✅ サンプルを提示する
特に、作業ブランチやソースのパスを明確にしておくと、期待通りの出力になりやすいです。
詳細に記述したほうがよい内容
- 作成するファイルのフォルダパス
- 継承元のソースのパス
- メソッドの入出力型の指定
- 参考にすべきサンプルソースの提示
- 定義書の添付(例: CSVファイルの定義書など)
実際に使ったプロンプト例
(多少置き換えていますが、以下のような形で依頼を行っていました。)
CSVファイルを読み取り、$model_name にデータを追加するタスクです。
データ追加のメインクラスは `path/to/base_class.rb` を継承し、
`path/to/impl/` 以下にサービスクラスを作成してください。
データ追加時は `path/to/$model_name_creator.rb:execute` を使用してください。
パラメータは `ActionController::Parameters` である必要があります。
実装時には `path/to/sample.rb:40` のような形で、メソッドを切り出して対応をお願いします。
データのバリデーションは別タスクで指示するため不要です。
CSVファイルの定義は添付します。
結果
多少のレビューは必要でしたが、1タスクにつき 最初のPRが5分程度で上がる ようになりました。
また、フィードバックの反映も即時で行われるため、 ボトルネックはむしろCIのテスト時間 になっていました。
運用に慣れてくると、
「会議前にSlackで @Devin にタスク依頼 → 会議後にPRレビュー」 というルーティンが確立され、
最終的には 「ランチ前に依頼 → 帰ってきてレビュー」 という、未来の働き方の疑似体験ができました。
まとめ
プロンプトのコツの中でも、特に重要だと感じたのは 以下の2点 です。
- ある程度の具体性を持たせる
- 作業量を小さくする
これは、 一定の経験があるエンジニアやEMなら、AIを使わずとも自然に意識しているポイント ではないでしょうか。
また、会議が多く、 コンテキストスイッチが多発してなかなか実装が進まないエンジニア こそ、
Devinを活用することで 高いパフォーマンスを発揮できる可能性 があると感じました。
Discussion