1 月末から社内で Devin / Cline を「興味ある人向け」に先行提供してもらいました。
ちょうど AI Agent へのモチベーションが高まっていたタイミングでもあり、2 ヶ月ほど自分なりに使いこんでみました。
コンテキストスイッチでパつった&仕事へのモチベが少し下がったタイミングで会社が業務のAI活用を加速。
— 高木徹(Toru-Takagi)🐶 (@TTrpbm) February 28, 2025
なるべく仕事をしたく無いモチベでCline / Devin / Copilot Agentで仕事完結できるように試行錯誤した結果、勤務時間が逆に増えてる…
けど、3.7 sonnetのおかげで生産性2倍が現実的になってきた
現在の四半期は社内の Devin / Cline を推進するチームにも所属し、社内向けドキュメントも作成中です。
せっかくなのでブログにもまとめてみました。
個人的に AI Agent を使って効率的にするためには以下の条件が必要かなと思っています。
わかりやすく言うと 開発力、設計力がある程度必要 だと思っています。
『ユーザー情報を編集できるモーダルを作って』『ユーザー情報を保存する API を作って』と指示したとしても、それっぽい結果は出してくれても、プロダクト開発に耐えうるようなものは出てこないと思います。
結果、PR レビューで大量の指摘をもらうか、何度も AI Agent に指示を出して疲弊するか、心が折れて自分で開発することになるでしょう。
頭の中にはコードが出来ていて、後は手を動かしてコードを書くだけの状態までしておかないと効率は上がらないのかなと思います。
そのためには、ドメインモデリングやデータベース設計を適切に行っておく必要があります。
その過程でドキュメントを作成したり、修正案をコードベースへ TODO コメントとして追加したりしておくと、後々 AI Agent へ指示した際に、より品質の高いアウトプットを得やすくなります。
開発者としての楽しさは減るかもしれませんが、コーディングルールは細かく決めておき、それをドキュメントにしておく 必要があります。
例えば、テストコードの書き方や、Fixture の作成ルールなどを決めておくことで、AI Agent に指示した際に品質の高いアウトプットを得られるようになります。
既存のコードや参考ファイルを渡すことで、それなりのアウトプットは得られますが、ドキュメントを渡すことでさらに品質の高いアウトプットが期待できます。
ドキュメントを書くことは面倒ですが、後々の快適さを考えると十分に価値があると思います。
これが 効率化のための一番のポイント だと思います。
AI Agent でやれるところはお願いをして、出来ないと思う部分は自分でやるという判断ができる ことが効率化の上で一番重要です。
AI Agent が苦手とするコードを AI Agent にお願いしても何度も指示を出すことになり、結局自分が開発した方が早かったということになりかねません。
1 番にも関係するのですが、適切に責務をわけて、その責務のコードを頭の中で作成し、AI Agent の能力値 でも 95%以上の完成度が出力できそうだと思うタスクを AI Agent にお願いすることで、効率的に開発を進めることができると思います。
既存コードの改修ではなく、新規コードの作成であれば、責務ごとに AI Agent に作成をお願いすれば大体の場合は 95%以上の完成度で出力してくれます。
Devin くんは自立型 AI Agent で、非同期でタスクをお願いすることに向いています。
実装能力はそこまで高くなく、よくジュニアエンジニアレベルと言われたりしています。
そのため、Devin にお願いしたけど結果が残念だった。簡単なタスクしかお願いできないから今は使えないけど、非同期でお願いできる体験は最高なので未来を感じるという意見が多いです。
コード生成に関しては同じ意見なのですが、それだけで Devin を使うのをやめてしまうのはもったいないと思っています。
Devin くんは大規模コードに対して強いと言われているように、 コードを理解し把握できるのが得意 だと思っています。
コード作成もお願いしますが、開発時間を効率化させることよりも自分の開発以外の時間を効率化させることに使った方が良いと思っています。
僕の使い方としては
など、 開発時間以外で使ってしまう時間を効率化させることで、開発時間を確保することができる と思っています。
Devin くんにコードを書かせて効率化できるのは本当に簡単なタスクだけです。
1 日中 MTG ばかりで少しでも進捗を出したい時などは Devin に複数のタスクを一気にお願いすることがあります。
「Devin should proceed without waiting for approval on complex tasks」を OFF にできる場合は OFF にしておき、できない場合は指示文に「まずは私と一緒にプランニングをしてから、その後に作業をするようにしてください」と付けることで Devin くんは Planning から始めてくれます。
ほんの少しでも難しいタスクを Planning 無しでお願いしてしまうと暴走してしまうことが多いです。
面倒でも Planning を必ず行い、出力予定のコードを確認してから実行に移すようにするとたたき台としては使えるレベルになると思います。
Planning 時に出力予定のコードを見せて貰うように指示すれば Slack のみで完結させることができるので、MTG 中でもある程度進めることができます。
Cline は対話型 AI Agent で、同期でタスクをお願いすることに向いています。
(モデルによると思いますが)実装能力はとても高いと思っています。
Cline は Plan モードと Act モードがありモデルもそれぞれ設定することができます。
2025 年 4 月 5 日時点では Plan モードは「gemini-2.5-pro-exp-03-25」で、Act モードは「anthropic.claude-3-7-sonnet-20250219-v1:0」を利用するのがおすすめです。
※Experimentalの扱いなので商用利用の方は適切に確認し、NGの場合はpreview版を利用する検討をしてください
セキュリティ部の人たちに確認した上で、Auto Approve できる部分は全て ON にして、Max Requests は「30」くらいにしておくとよいと思います。
「AI Agent で効率化できる条件」でも書きましたが、Cline の能力で対応できそうな責務を選びます。1 つの関数をお願いするくらいがちょうど良いと思います。
その後、実装したい部分に TODO コメントを追加しておきます。
// UserRepository.kt
object UserRepository {
fun getByUserId(
// TODO: UserIdを受け取る
): User {
// TODO: UserIdで絞り込んで取得する
}
}
// UserRepositoryTest.kt
class UserRepositoryGetByUserIdTest : FunSpec({
// TODO: UserRepository#getByUserIdのテストを追加する
})
その後、「git add」してインデックスに追加し、タスクに適したドキュメントをタブに開いておきます。
例の Repository の場合、「Repository の実装方法」「テストコードの書き方」のようなドキュメントを作っておき、それを開くと良いです。
作業をお願いする準備ができたら、まずは Plan モードで TODO コメントを元に関数の実装をお願いしてみます。
すると大まかな実装計画を立ててくれるので、違和感があれば指摘をして計画を修正してもらいます。
計画に違和感がなければ出力予定のコードを見せてくださいと指示をして、出力予定のコードを見せてもらいます。
ここでも違和感があればドキュメントを追加で読んでもらったり、参考ファイルを追加したりして、出力予定のコードを修正してもらいます。
この Plan フェーズがとても大切で、 ここをサボってしまうと出力されるコードと期待値と大きく異なり修正に時間がかかってしまい 、結果自分が手を動かした方が早かったということが多くなってしまいます。
(Plan モードでフィードバックサイクルを回した方が圧倒的に早い)
Plan フェーズで出力予定のコードを確認して、問題がなければ Act モードに切り替えて実行してもらいます。
実装は期待値通りのことが多く、テストコードの fixture の使い方や期待値の書き方を少し手で修正したり、失敗しているテストを期待値通りに修正したりするだけで PR が作れる状態になると思います。
AI Agent を最大限に活用するためには、AI Agent に合わせた開発プロセスの変更も必要です。また、そもそもチーム開発する上で効率的な開発プロセスでないと AI Agent も効率的に活用できないと思っています。
品質の高い機能を”早く”提供するために技術的な面でチームでやったこと、やりたいことでもお話ししたのですが、 チーム開発の効率が高い状態で AI Agent が入ること で人が増えたのと同じような状態になると思っています。
逆に言えば並列で開発することができない状態で AI Agent を導入しても最大限の効果を得られないと思います。
※一つの機能開発を 1 人でやっている人が AI Agent を導入しても効率化できないと言いたいわけではなく 1 人でもチーム開発での手法を導入することで更に効率化できると思っています
今のチームでは
のように並行して進められる簡単なタスクは Devin くんにお願いし、難しい部分は Cline+人間で行うという AI Agent を含めた開発プロセスを導入しています。
現時点で公開されているモデルを利用するだけでも、十分効率化できると思っています。
それだけでも最高なのですが、 新しいモデルが出るたびに自分の生産性がどんどん上がる ところが魅力的です。
明日、自分の生産性が 2 倍になることはないですが、AI Agent の場合新しいモデルが明日出ることで自分の生産性が 2 倍になる可能性があります。
実際、Claude 3.7 Sonnet が出る前までは自分で作業した方が早いという状態から抜け出せなかったのですが、3.7 が出たことで一気に効率的になりました。
今、AI Agent と仕事することがとても楽しいので、もっともっと活用できるように使い倒したいと思います。
(Devin2.0 も使い倒したい)
Devinくんの開発者様とお話す機会があり、とてもワクワクしました!
— 高木徹(Toru-Takagi)🐶 (@TTrpbm) March 7, 2025
英語全く出来ないマンなので笑うことしかできなかったですが、素直なFBができたのでこれからも楽しみです🤩
(僕はClineよりDevin派です)
Devinロゴダウン、おしゃれ過ぎです! pic.twitter.com/vMPkaLKLeg
Twitterフォロー待ってます!