GameWith Developer Blog

GameWith のエンジニア、デザイナーが技術について日々発信していきます。

Devinを2ヶ月間使った結果 #GameWith #TechWith #Devin

Devinを2ヶ月間使った結果w

話題のAIソフトウェアエンジニア「Devin」を2ヶ月間ほど試用してみました。今回はその結果や感想、そしてDevin 2.0で追加された新機能についてご紹介します。

Devinってなに?

まず、「Devinってなに?」という方のために簡単にご紹介します。 Devinは、Cognition社によって開発された「a collaborative AI teammate」(協調的なAIチームメイト)です。野心的なエンジニアリングチームがより多くのことを達成できるよう支援することを目的としています。Devin自身もslackで「I am an AI software engineer」と名乗っています。

devin.ai

具体的には、タスクを与えると、人間のように考え、計画を立て、ツールを使い、コードを書き、デバッグし、最終的にプルリクエストを作成してくれるAIです。

どう使うか

実際に私たちがDevinをどのように使っていたか、そのプロセスは以下の通りです。

  1. 設計を書く: まず、人間が実装したい機能の設計を書きます。
    • 例:広告のゲーム設定について、新規テーブル作成、DBクラス追加、ドメイン内での処理実装、API作成、管理ページ作成など、具体的な指示をissueに記述。(Page 3 画像より)
  2. 依頼する: 作成した設計をもとに、Devinにタスクを依頼します。
    • 例:「広告のゲーム設定について設計を書いたのでgamewithレポについてやってみて」
  3. 修正依頼する: Devinが作成したコードやプルリクエストに対して、レビューを行い、必要であれば修正を依頼します。
  4. ところどころ人間が直す: AIが完璧に意図を汲み取れない部分や、細かいニュアンスの調整は人間が直接コードを修正します。
  5. QAする: 最終的な動作確認や品質保証は人間が行います。

途中で、Devinに作業をさせすぎるとACU(Agent Compute Unit)を浪費してしまうという反省点もありました。月250ACUsの利用制限があり、あるタスクでは33.17 ACUsも消費してしまい、これは他のタスク(大体10ACUs以下)と比較しても非常に大きいものでした。適切なタスク分割や指示の出し方が重要だと痛感しました。

人間が特にやる必要がある箇所

Devinを使ってみて、人間が特にやる必要があると感じたのは以下の3点です。

  1. 設計(タスクの分割):
    • 何も考えずに丸投げすると後で後悔します。しかし、ついつい丸投げしたい欲求に負けてしまうことも…(慣れてくると顕著に)。
    • Devinにフロントとバックエンドの両方を一度にやらせようとするとACUが大変なことになるため、タスクを分けた方が良い、という学びもありました。
  2. QA:
    • Devinが書いたコードが本当に動くかどうかの確認は必須です。また、人間が見て気に入らないUIや細かい仕様のズレなどを修正する必要がありました。
  3. 反省:
    • 「丸投げしてはいけない」と反省すること自体が、人間がやるべきことの一つかもしれません(笑)。

結局、やれる量は増えるの?

気になるのは「Devinを導入して、実際にこなせる作業量は増えたのか?」という点ですよね。 私たちのチームでは2月からDevinを導入しました。

結果として、1.2倍くらいのアウトプット向上が見られました。 何より、体感としては非常に楽になったと感じています。つまり、「人は楽になって、量が増える」というポジティブな効果がありました。

なぜそんなに増えないのか?

1.2倍というのは大きな進歩ですが、期待していたほどの爆発的な増加ではないかもしれません。その理由としては、以下の2点が考えられます。

  1. 人間がやる箇所がまだ結構ある:
    • 前述の通り、設計、QA、細かい修正など、人間が介在するべき部分は依然として多く残っています。
  2. 人間の能力が徐々に低下していく(かもしれない):
    • AIが何かしらでスタックすることはよくあります。
    • そんな時、「一番賢いAIに投げて解決を祈る」という他力本願な思考に陥りがちですが、それでも解決しないことがあります。
    • 結局、しぶしぶ人間が対応することになるのですが、普段AIに頼っていると、いざという時に問題解決能力が低下していて、対応に時間がかかってしまう…という懸念があります。

Devin 2.0 の新機能:Devin Search & Devin Wiki

そんな課題感もある中で、Devinは進化を続けています。最近発表されたDevin 2.0では、「Devin Search」と「Devin Wiki」という非常に強力な機能が追加されました。

docs.devin.ai

Devin Searchは、リポジトリ全体を横断してコードを検索し、質問に対して関連性の高いコード箇所や実装方法を提示してくれる機能です。

例えば、「タグ関係でキャッシュを工夫している処理ない?前にキャッシュにセットできなくなったときに、なにか対策しているはず」といった曖昧な質問に対しても、関連ファイルや、具体的な関数、さらには過去のコミット履歴まで掘り下げて提示してくれます。

これにより、既存コードの把握や、過去の経緯調査が格段に効率化されそうです。

Devin Wiki

docs.devin.ai

Devin Wikiは、特定のシステムやリポジトリに関するドキュメントを自動生成し、その内容について質問応答してくれる機能です。

例えば、あるリポジトリの中で実装されている複雑な「謎の計算ロジック」について、その概要、主要コンポーネント、計算式の詳細、さらには具体的な数値例まで含めて解説してくれます。

このように、実装者ですら把握できていないような内容もまとめてくれており、ドキュメントが不足しているプロジェクトや、途中から参加したメンバーのキャッチアップに非常に役立ちそうです。

まとめ

2ヶ月間Devinを使ってみて、そしてDevin 2.0の新機能に触れてみて、率直な感想は「Devin いると嬉しい」です。

もちろん、まだまだ人間がやるべきことは多く、ACUの消費やAIの限界といった課題もあります。

しかし、それを補って余りある生産性向上と、何より開発体験の質の向上を感じています。 ACUを使い切ったDevinが戻って来る日を心待ちにしながら、今後もAIとの協調作業を模索していきたいと思います。

この記事が、Devinの導入を検討されている方や、AIとエンジニアリングの未来に興味のある方にとって、少しでも参考になれば幸いです。

最後に

こんなGameWithではエンジニアを絶賛募集中です!

サーバーエンジニアやフロントエンジニアの方、AIに興味がある方もお気軽にカジュアル面談をお申し込みください!

github.com