Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Devinを爆速でプロダクト開発に導入する方法

 Devinを爆速でプロダクト開発に導入する方法

Avatar for Kento Nishio

Kento Nishio

May 22, 2025
Tweet

More Decks by Kento Nishio

Other Decks in Programming

Transcript

  1. Product Development Division GENDA © GENDA Inc. 1 GENDA Product

    Develepment 2025.05.22 Devinを爆速でプロダクト開発に導入する方法
  2. Product Development Division GENDA © GENDA Inc. 2 自己紹介 GENDA

    プロダクト開発部 エンジニア 名前 西尾 健人 GitHub ken2403 技術スタック • Go • TypeScript • Python 好きなこと • データ分析、DLモデルの開発・実装 • BE開発・設計 fanfancy+ with GiGO 店舗会員アプリ BE・Mobile・FE開発 カラオケBanBan 会員管理基盤・アプリ BE・FE開発 GENDA ID IDP/RP の実装 BE開発
  3. Product Development Division GENDA © GENDA Inc. 3 自己紹介 普段の開発領域

    BE/Infraを中心にFEもたまに BE/Infra(IaC)領域における Devinの導入事例を紹介 今日お話しすること • Devinを活用する際に必要な準備におけるTips • Devinを活用するためのTips • Devinを最大限活用するために意識すべきこと
  4. Product Development Division GENDA © GENDA Inc. 4 01 今日お話しすること

    02 Devinについて Devin爆速導入Tips Devinとはなにか、Projectでの導入背景について説明します。 Devinを既存プロジェクトに導入し、最大限活用するためのTipsをご紹介 03 今後の展望
  5. Product Development Division GENDA © GENDA Inc. 6 Devinとは Devinとは、野心的なエンジニアリングチームがより多くのことを達成できるよう構築された、協調的なAIチームメ

    イトです。自律的なAIソフトウェアエンジニアとして、コードの記述、実行、テストを行うことができます。Devin を効果的に活用するためには、ジュニアエンジニアのように扱うことが最も重要な考え方です。十分かつ明確な指 示が与えられれば、インターンでも理解できるレベルのタスクを割り当てることが推奨されています Devinについて 得意なこと 苦手なこと • 多くの小さなタスクを並行してこなす • コードの移行、リファクタリング • 一般的で反復的なエンジニアリングタスク • カスタマーエンジニアリングサポート • 大規模で不明確なタスク(小さく、明確に) • 長時間のセッション(10ACU程度) • 信頼性が完璧ではない • UI関連の美的感覚 • モバイル開発 Tips0 ドキュメントを NotebookLMで読む
  6. Product Development Division GENDA © GENDA Inc. 7 Devin導入背景 Devinについて

    • メインの機能開発スケジュールが超タイト • 最小限のチームで最大限のスピードを追い求めて開発 • ドキュメンテーションと開発が同時並行 技術負債解消・リファクタリング・最新のCodingスタイルへの追従 急ぎではない細かな要件への追加対応 などなど… これらが後手に回っていたのでDevinを活用して並行対応できないか検討 爆速導入:最小限の準備で最大限のアウトプット
  7. Product Development Division GENDA © GENDA Inc. 8 Devin導入結果 Devinについて

    Devinの成果 エンジニア1人 x Devin 4週間の成果 Devinが実装したこと PR 50件 マージ 44件 内容 自律度 Testケースの修正 ★★★★★:1回の指示で完了 Testコードのリファクタ ★★★★☆:細かく指示して完了 エンドポイントのサーバー移行 ★★★☆☆:タスクを細かく分け、細かく指示して完了 インフラアーキテクチャ移行 ★★★★☆:細かく指示して完了 簡単なエンドポイント追加 ★★★★☆:細かく指示して完了 やや複雑なエンドポイントの追加 ★★☆☆☆:タスクを細かく分け、細かく指示して完了。       メインロジックは苦戦し、一部は人間がサポート クリーンアーキテクチャの依存関 係チェックのAction追加 ★★☆☆☆:参照コードがなく苦戦
  8. Product Development Division GENDA © GENDA Inc. 10 Tips 1(タスク)

    Devin爆速導入Tips 小さく具体的なタスクを与える 答えのないタスク・曖昧なタスクはうまくいかない 詳細にタスクを指示し明確なゴールを伝える ❌「クリーンアーキテクチャを満たすために   リポジトリ構成をもっと良くしたい」 ❌「pos以下にあるエンドポイントのうち、   **のエンドポイントをadminに移してください」 App-API POS-API Admin-API
  9. Product Development Division GENDA © GENDA Inc. 11 Tips 2(タスク)

    Devin爆速導入Tips 変更範囲のファイル数を極力少なくする 変更ファイル数が多いと、局所最適(闇堕ち)から抜け出せず行ったり来たりしてしまう • Aファイルの修正はうまくいくがBファイルの修正がうまくいかない • Bの修正を指示すると、なぜかうまくいっているAをいじってうまくいかなくなる ⭕ 小さくタスクを分けることで結果的に変更範囲のファイル数も小さくできる ⭕ 簡単なタスクでも変更ファイル数が小さくなる様にさらにタスクを細分化する (test内のContextの取得をtesting.T.Context()に移行するタスク)
  10. Product Development Division GENDA © GENDA Inc. 12 Tips 3(タスク)

    Devin爆速導入Tips コンフリクトが起きない様に並列化する 人間と同じでコンフリクト対応は苦手 無駄にやりとりが増えてしまい闇堕ちするリスクが高い 1 4 2 3 5 6 タスクA タスクB 1 2 3 5 4 6 タスクA タスクB ⭕ ❌
  11. Product Development Division GENDA © GENDA Inc. 13 Tips 4(プロンプト)

    Devin爆速導入Tips やりとりは最小限にする やりとりが増えて10ACUを超えると闇堕ちリスクが高い 複雑めなタスクをお願いするときは、最初のプロンプトで詳細にタスクの説明する ❌「pos以下にあるエンドポイントのうち、   **のエンドポイントをadminに移してください」 ⭕「PR #1611での変更を元にadminにentry-eventのAPIを   実装したいです。順番に作業を進めていきます。   まずはHandlerとMiddlewareだけ実装してください。   ロジックはposにあるものを使用してください......」
  12. Product Development Division GENDA © GENDA Inc. 14 Tips 5(プロンプト)

    Devin爆速導入Tips 参考になるコード・PRを示す ⭕「DBスキーマはdatabase/migrations/schema.sql にあります。」 ⭕「admin/openapi以下のopenapi.ymlとそこから自動生成される   admin/schema/types.gen.goにある型を参照してHandlerを実装してください」 ⭕「PR #1621と同じようにして、sales-eventのAPIのUsecaseを実装してください」 やり取り数も減って結果的に精度向上
  13. Product Development Division GENDA © GENDA Inc. 15 Tips 6(仕組み整備)

    Devin爆速導入Tips Knowledgeを定期的に整備する Knowledgeとは タスクを実行する際に参照したり、学習したりするための情報源やコンテキストのこと Knowledgeに含めるべき内容 • Devin が従うべき例、モジュール、リソース、テンプレート • Devin に見てもらいたいファイルのファイル名 • ドキュメントサイトへの直接リンク Knowledgeを整備することで精度が大幅向上 → 整備後はやり取りの回数が減った! Codingスタイルが変わるたびにKnowledgeも更新 → 「必要であればKnowledgeも更新してください」とプロンプトを加えることで、 そのセッションで学んだことを蓄積してくれる様になる
  14. Product Development Division GENDA © GENDA Inc. 16 Tips 7(仕組み整備)

    Devin爆速導入Tips 自動生成を伴う箇所はKnowledgeに指示を入れる ❌ 開発の段階でCodeの自動生成を伴う箇所を手動で更新してしまったり、   そもそもファイルを更新してくれなかったりする ❌ 自動生成が必要そうな時に都度プロンプトで指示する必要がある ⭕ 定常的に使用するコマンドや開発方法はKnowledgeに含め る 🔺 とはいえ忘れることは全然あるので注意
  15. Product Development Division GENDA © GENDA Inc. 17 Tips 8(仕組み整備)

    Devin爆速導入Tips ガードレールを整備する ⭕ CLIによるTestとLinterによるチェックができる状態 ⭕ CLIによるBuildチェックができる状態 ⭕ CLIによるE2Eテストの実行ができる状態 ⭕ GitHubActionsによるチェック体制 絶対に動くものがデプロイされ続けるように保証する
  16. Product Development Division GENDA © GENDA Inc. 18 Tips 9(仕組み整備)

    Devin爆速導入Tips コードのコロケーションを意識する 背景 モノレポで複数サーバーを管理 複数サーバーに共通の処理をpackage化(DBの接続など) ⭕ 冗長なコードが減る(人間的にはBest Practice) ❌ Knowledgeまたはプロンプトにpackage化しているコードを   使う様に明示的に指示を出さないとうまく使用してくれない Knowledgeは更新しつつ、多少の冗長性を許容 動作はTestで担保 App-API POS-API Admin-API
  17. Product Development Division GENDA © GENDA Inc. 19 Tips 10(使用場面)

    Devin爆速導入Tips 会議前にプロンプト投げて実装を待つ 会議中にDevinができそうなタスクリストをバックログに積んでおく ⭕ 会議中もアウトプットを出せる ⭕ 会議後にすぐレビューに入れる 🔺 Devinがミスった時にタスクが増える
  18. Product Development Division GENDA © GENDA Inc. 20 Tips 12(マインドセット)

    Devin爆速導入Tips コアなドメインロジックの実装は避ける とはいえ絶対ヤバいところは人間が担保する ドキュメントやプロンプトに起こすよりも作ってしまったほうが早い EX • 会計処理 • 法令対応
  19. Product Development Division GENDA © GENDA Inc. 21 Tips 11(マインドセット)

    Devin爆速導入Tips とにかく使いまくる とにかく使いまくることでDevinの気持ちもわかってく! 最初の3日で100ACU(250ACU/month)使ってしまった…
  20. Product Development Division GENDA © GENDA Inc. 22 Tips 13(マインドセット)

    Devin爆速導入Tips Devinをインターン生だと思う 期待しすぎず育てていく! ⭕ 優秀なインターン生に任せづらいカスタスクをDevinにお任せ
  21. Product Development Division GENDA © GENDA Inc. 23 Tips 14(マインドセット)

    Devin爆速導入Tips 最後は巻き取る意識で 闇堕ちしたDevinは俺が救う! 最後は自分でマージする意識! 絶対にACUを無駄にしない!!
  22. Product Development Division GENDA © GENDA Inc. さらなるDevin駆動開発 今後の展望 GitHubで仕様書管理

    CopilotによるIssueの自動作成 CopilotからDevinへIssueの実装指示 Devinによる実装 Copilotによるレビュー E2Eテストの整備・自動化による信頼性の担保