AI × ソフトウェア開発の最前線——キャディ における Devin 活用のリアル
AIがソフトウェア開発の在り方を大きく変えつつある今、キャディではその変化をチャンスと捉え、エンジニアの生産性と創造性を引き出す取り組みを進めています。中でも注目しているのが、話題のAIソフトウェアエンジニア「Devin」です。
Devinの活用に関する知見を深め、社内でのベストプラクティスを探るべく、先日LTを開催しました。さまざまなチームのエンジニアが登壇し、Devinを日々の業務でどう活用しているか、そこで得られた気づきや成果を共有しました。
この記事では、そんな社内LTの一部をご紹介します。キャディの取り組みやエンジニアリング文化の一端に触れていただけたら嬉しいです。そしてもし興味をもっていただけたなら、ぜひ私たちと一緒に新しいソフトウェア開発のあり方を切り拓いていきましょう!
🎯 図面解析チーム:Devinの現実的な活用とシニアエンジニアのスキルアップ
最初の発表は、図面解析チームから。Devinを初めて使う人にとって貴重な知見となる、チームでの実体験を共有してくれました。Devin SearchやDevin Wikiといった最新機能よりも、Devinを使う上でのマインドを共有することに焦点を当てていました。
図面解析チームのDevin活用術:
- 答えが分かっているタスク:
- リファクタリングや単体テストなど、ある程度自分たちで方針が見えているタスクを任せている。
- いくつかのサブタスクに分割し、既存のPRなど具体例を参考に修正するよう指示。
- 未知のエラー調査:
- エラーの原因や修正方針が不明確なタスクについて、Devinに初期調査を依頼。
- 提案されたアプローチを参考に適宜、人手で修正。
基本スタンス:タスクの60〜80%をDevinに実装させ、残りを人間が引き継ぐ気持ちで扱うと良いと話していました。このスタンスは公式ドキュメントの言及と使ってみた感触に基づいているとのことです。
- Devinはジュニアエンジニア
- 曖昧で広範囲なタスクよりも、スコープが小さく明確なタスクが得意
- 実例を示すと適切な修正になりやすい公式ドキュメントより
また、Devinを使ってみて良かった点ともう少し良くなってほしい点を共有していました。
良かった点:
- 後回しにしがちなタスク(=難易度は高くないし、やっておきたいが、優先度の都合上着手できてないタスク)を消化できる
- 迅速なプロトタイピング: 新しいアイデアの初期コードを素早く作ることができます 。
- シニアエンジニアとしてのスキル向上: 指示を明確にしないと思わぬ変更をしてしまうことがあるDevinだが、ポジティブに捉えれば、シニアエンジニアとして必要になるタスク分解能力や開発スコープの設定力を鍛える機会になる。
良くなってほしい点:
- 中途半端な待ち時間:
- Devinの作業時間(10分程度)は、何もせずに待つには長く、他の複雑な作業を自分が取り組むには短い
- 30分放置していると、セッションが切れるうえにその間にもACU(Agent Compute Unit:Devinの計算リソース単位)を消費するので、Devinに付きっきりにならないといけないと感じる
- 既存コードの保護: 「既存コードは変更しないで」と明示的に指示しないと、正しいコード行まで修正・削除してしまうことがある
- Playbook) に変更しない旨を書けば対応可能だが、まだ活用しきれていない
今後の改善点:
今後導入していきたい取り組みとして以下を挙げていました。
- プロンプトのテンプレート化:
- プロンプトの属人化を防ぐうえに、ACUの無駄遣いを避けるため、プロンプトの標準化を検討中
- PRのdescriptionを書くつもりで指示を出すと、再利用性も高まり便利だったという他チームの知見も共有
- Knowledgeの活用:
- 設計書やADR(Architecture Decision Records)をKnowledgeに登録
- プロトタイプ作成や設計思想に沿った改修をしやすくすることを期待
🐘 Data Management チーム:AIでチームのボトルネックを解決!Damboの成果発表!
続いて登壇したのは、Data Managementチーム。「Dambo」という、社内で開発しているAIワークフローを紹介してくれました。
前四半期は5人のチームで110件もの依頼対応に対応しましたが、これが大きなボトルネックとなり、依頼対応のリードタイム遅延やチームの他の業務にも影響を与えていました。 そこで開発したのがDamboです。これはDevinを活用してテーブル変更依頼を自動化するAIワークフローです。
- ワークフロー: ユーザーが対象テーブルや変更内容(例:特定のロジックを持つカラムの追加)をフォームから依頼します 。 するとDevinが作業を引き継ぎ、変更計画を立て、プルリクエストを作成します 。 この一連の流れは、必要な情報をDevinに伝えるSlackワークフローを通じて開始されます 。
- 驚きの処理能力: Damboはわずか1ヶ月で28件のタスクを完了。 これには小規模なもの(1時間程度)から大規模なもの(1日以上)まで含まれます 。 例えば、既存の売上テーブルからデータをクレンジング、整理、フィルタリングし、ピボットして新しいユーザーフレンドリーなテーブルを作成する、といった複雑なタスクもこなしました 。
学びと改善: Damboは当初のボトルネックを見事に解消しましたが、その高い効率性ゆえに、今度はレビュー待ちのPRが大量に発生するという新たなボトルネックが生まれました。
この課題に対し、チームでは現在以下のような改善に取り組んでいます。
- Devinが作成するPRが、レビューしやすい構成・内容になるようチューニングを行う
- PR作成時点で差分のあるテーブルを自動でBigQuery上にビルドし、データの中身をすぐに確認できる仕組みを整備する
こうした取り組みにより、レビュープロセス負荷の軽減と開発サイクルのさらなる高速化を目指しています。
その他の活用: Data Managementチームのエンジニアは、Devin Searchがいかに提案の質を高めるかについても言及 。 他チームのリポジトリを横断して調査ができるため、他チームへデータの仕様などを質問する際には「これは、何ですか?」という曖昧な質問から、「これは、この理解であっていますか?」という、より具体的で質の高い質問へとシフトでき、コミュニケーションコストの大幅な削減につながったそうです 。
🧭 Quoteチーム:Devin × JIRA連携で開発を「フロントローディング」!
次に、Quoteチームのエンジニアが、Devinを「フロントローディング」に活用する革新的な試みについて発表しました。「フロントローディング」とは、開発ライフサイクルの早い段階で潜在的な問題を発見し解決することで、実装開始後に想定外の変更箇所に気づいたり 、受け入れ条件が不十分なままスプリントプランニングに突入してしまったり 、といったよくある手戻りを防ぐことを目指す取り組みです 。
DevinとJIRAの連携:
チームはDevin × JIRA連携機能を活用しています 。 JIRAチケットに "Devin" ラベルを付与すると、Devinが以下の情報を返してくれます :
- タスクの機能要件や不明瞭な点
- 関連する既存コードの現状
- 全体的なアプローチ、変更が必要なファイル、設計上の決定事項など、提案される解決策
主な活用方法:
- チケットの完成度チェック: DevinがJIRAチケットに対する「自信度 (Confidence Score)」を表示します 。 スコアが低い場合は、開発に着手する前に受け入れ条件やアプローチをより明確化する必要がある、というシグナルになります 。
- コード変更の抜け漏れ早期発見: Devinが提示する実装計画を確認することで、追加のコード変更が必要な箇所や、ロジックの考慮漏れに早期に気づくことができます 。 これにより、リスクを未然に減らすことが可能になります 。
学び:
- 優れた解釈能力: Devin内部のインデックス作成能力は非常に高く、多少ラフに書かれた内容でもある程度解釈し、業務フローや各種図も理解してくれるそうです 。
- インプットの質が重要: とはいえ、質の高いJIRAチケットを作成しなければ、Devinからの回答も浅いものになってしまうため、チケットをしっかり書くコストとのバランスが重要になります 。 AI時代においては、受け入れ条件や実装アプローチを言語化する重要性がますます高まっており、愚直に取り組むか、そのコストを下げる工夫が大切だと語りました 。
総括: QuoteチームにとってDevinは、単にコードを書くだけでなく、開発プロセスそのものを改善するパートナーとなりつつあります 。
🛠️ APチーム:Devinと共に開発をフルスロットルで推進!
最後に登壇したのは、Analysis Platform (AP) チームのエンジニア。Devinがいかに深く彼らの開発サイクルに組み込まれているかを力強く語ってくれました。
APチームは、今四半期の間に、チームリポジトリでDevinが作成したプルリクエストを22件もマージするという成果を上げています! これらは単なる軽微な修正だけではなく、以下のようなタスクもDevinが担当しました:
- IaC (Infrastructure as Code) におけるIP制限設定
- 機械学習推論サーバーの初期コミット
- Terraformディレクトリのリファクタリング
活用の秘訣:
- 集中できるインターフェース選択: スピーカーが Devin とやりとりする際はSlack上ではなく、主にapp.devin.aiを利用することで、スレッドが流れずに把握できます。またAIがリアルタイムでコードを編集する様子を見るのも楽しんでいるそうです 。
- スプリントのスタートダッシュ: 新しいタスクやスプリントに着手する際の「初動の重さ」をDevinが解消 。スプリントプランニング後にDevinにタスクを依頼することで、すぐに開発が進み始めます 。
- レビューとオンボーディングの効率化: Devinが作成したPRへのコメントにはDevinが自動で応答するため、非同期レビューがスムーズになりました。 また、Devin SearchやDevin Wikiは、複雑なai-labモノレポに新メンバーがキャッチアップする上で非常に役立っており 、ファイル検索や既存実装の理解にかかる時間を大幅に削減しています。
APグループが実感する主なメリット:
- 時間短縮: ブランチ作成、ファイル検索、PRレビューといった細かな作業時間を大幅に削減
- 並行開発の実現: 「とりあえずDevinに任せる」ことで、多くの開発タスクを並行して進められるように
- 明確なタスクにおける高精度: 実装方針が明確な場合や、参考にできる既存実装がある場合の精度は高いとのこと
今後の展望: APチームは、Devin単独で検証可能なテスト設計や 、Jira/Confluenceとの連携強化により、さらなるワークフローの効率化を目指しています 。
✨ 私たちのDevin活用ジャーニー:LT全体を通じた学び
今回のLT全体を通して、いくつかの共通するテーマが見えてきました。各チームの発表後には多くの質疑応答が生まれ、実際の業務で直面するであろう課題やその解決策について、具体的な議論が深まったことは、社内LTならではの大きな収穫でした。
- 迅速な開発スタート: Devinは開発タスクの初動を早めるのに貢献しています 。
- オンボーディングと知識共有の進化: Devin SearchやWikiは、大規模なコードベースの理解や既存システムの把握に強力なツールとなっています 。
- 定型業務の自動化: 「Dambo」の事例のように、明確に定義された反復作業はDevinに任せることで、エンジニアはより複雑な課題に集中できます。
- プロアクティブな問題解決: JIRA連携によるフロントローディングは、問題が大きな手戻りとなる前にDevinがその発見を助ける可能性を示しています 。
- 人間とAIの協調が鍵: 最も成功している活用法は、エンジニアがDevinを導き、タスクを分解し、その成果をレビューするという形です。これは「置き換え」ではなく「能力拡張」と言えるでしょう。
- 継続的な学習: Devinに効果的に「指示(プロンプト)」を出し、最大限の能力を引き出す方法は、私たち全員がまだ学んでいる最中です。Devinを、常に学習し続ける非常に有能なジュニアエンジニアのように捉え 、共に成長していく姿勢が大切です。
Devinの活用は、より良いソフトウェアを生み出し、ダイナミックで革新的なエンジニアリング文化を築くための挑戦の一つにすぎません。3か月後には、私たちがメインで活用しているAIエージェントはDevinではないかもしれません。しかし、Devinを通じて得られた知見や経験は大いに活かされると思っています。
💡 未来の開発を、私たちと一緒に形にしませんか?
もし少しでも興味を持っていただけたなら、ぜひ気軽にお話ししましょう。
採用ページ(https://recruit.caddi.tech/)では、私たちの挑戦や価値観、そしてあなたがどのように活躍できるかをご紹介しています。ワクワクするような未来を、一緒に切り拓いていきましょう!