Slide 1

Slide 1 text

バイセルでの AI を用いた開発の取り組み ~ Devin, Cursor の活用事例・知見共有 ~ 株式会社 BuySell Technologies テクノロジー戦略本部 開発2部 在庫管理チーム 25卒 大石悠真 バイセルでの AI を用いた開発の取り組み @umaidashi18 1

Slide 2

Slide 2 text

‍ 自己紹介 大石 悠真 (初登壇 ) 株式会社 BuySell Technologies テクノロジー戦略本部 開発2部 在庫管理チーム 25卒 明治大学商学部 / 42Tokyo バックエンドエンジニア Go X: @umaidashi18 GitHub: @umaidashi バイセルでの AI を用いた開発の取り組み @umaidashi18 2

Slide 3

Slide 3 text

@umaidashi18 3

Slide 4

Slide 4 text

目次 1. 話さないこと・話せないこと 2. これまでのバイセルの AI 活用 3. Devin の導入 4. AI Agent / Tool を跨いだ Knowledge の共有 5. テストの記述 by Devin 6. PR Review by Devin 7. 動作確認 by Devin 8. アンケート結果 9. AI との協働 / 開発プロセスの変化 10. 最後に、これから挑戦したいこと by 人間 目次 @umaidashi18 4

Slide 5

Slide 5 text

話さないこと・話せないこと 文系出身のエンジニアなので、AIのコアな技術はわからない(できない) AI ユーザーとしての話 DevinやCursorなどのツールの話メインなので、モデルの話はあまりしない 使用しているモデルは claude 3.5 sonnet (Devin は独自のモデル) 話さないこと・話せないこと @umaidashi18 5

Slide 6

Slide 6 text

これまでのバイセルの AI 活用 これまでのバイセルの AI 活用 @umaidashi18 6

Slide 7

Slide 7 text

これまでのバイセルの AI 活用をざっくり BuySell Buddy の開発 Devin の導入 導入してちょうど1ヶ月 利用履歴の記録・毎日の知見共有会 Cursor Business プランの導入 情報共有 Slack チャンネル AI活用の推進 今週末(3/7)に「1日AIを使い倒そうDay」を行う これまでのバイセルの AI 活用 @umaidashi18 7

Slide 8

Slide 8 text

Devin の導入 Devin の導入 @umaidashi18 8

Slide 9

Slide 9 text

Devin の利用履歴 1ヶ月間で300件以上のタスクを Devin に依頼している Devin の導入 @umaidashi18 9

Slide 10

Slide 10 text

カテゴリ分けすると 実装・修正・開発系 テスト関連 コミュニケーション・コラボレ ーション系 依存関係やCI/CD管理 セキュリティ対応 ドキュメント作成 Devin の導入 @umaidashi18 10

Slide 11

Slide 11 text

Devin に任せたこと(1/2) カテゴリ 内容 ドキュメント作成 - READMEを描いてもらった - コーディングルールを抽出してもらった セキュリティ対応 - next脆弱性についてチェック 依存関係やCI/CD管理 - dependabot 更新タスク Devin の導入 @umaidashi18 11

Slide 12

Slide 12 text

Devin に任せたこと(2/2) カテゴリ 内容 テスト関連 - STG動作確認代行 テスト観点と操作手順をプロン プトで指示 - テストの新規追加、不足してるテストの拡充 実装・修正・開発系 - マイクロサービスを同時に立ち上げて疎通確認 - FE/BE を同時に立ち上げて動作確認 - 既存ページを参考にコーディング コミュニケーション・コラボ レーション系 - コーディングルールに則していない箇所を挙げて もらった→人間が修正 - Slackのメッセージを読み取って、タスクを進めて もらった Devin の導入 @umaidashi18 12

Slide 13

Slide 13 text

AI Agent / Tool を跨いだ Knowledge の共有 by 在庫管理チーム AI Agent / Tool を跨いだ Knowledge の共有 @umaidashi18 13

Slide 14

Slide 14 text

問題点 在庫管理チームでは、 Devin, Cursor (+Cline) を同時に使用している それぞれの公式が推奨している rules の定義の仕方は異なる Devin : Knowledge や Playbook Cursor : .cursor/rules/* Cline : .clinerules しかし、それぞれのツールで同じ rules をコンテキストとして使いたい AI Agent / Tool を跨いだ Knowledge の共有 @umaidashi18 14

Slide 15

Slide 15 text

解決策 .cursor/rules/* をマスタとして、 Devin, Cline にはそこを読ませる docs/ai/rules/* の中を参照してという指示はうまくいかなかった、 、 Devin > Knowledge Before Starting Work Be sure to read .cursor/rules/project-structure.mdc to understand the project structure before starting any tasks. Also, read .cursor/rules/coding-guide.mdc to understand the coding guidelines before proceeding with any implementation. 人間も .cursor/rules/* をドキュメント/オンボーディング資料として使ってい る AI Agent / Tool を跨いだ Knowledge の共有 @umaidashi18 15

Slide 16

Slide 16 text

テストの記述 by Devin テストの記述 by Devin @umaidashi18 16

Slide 17

Slide 17 text

問題1 (TDDではない場合に) テストコードを書いているが、テスト対象のプログラムがそ もそも間違っている 解決策 テストコードを書くタイミングをコントロールする 最初にテストコードを書かせず、テスト対象のプログラムが期待する状態にな るまで先に実装する ※ 根本の問題は別にあるかもしれない タスクが抽象的すぎた インターフェースを決めて先にテストを書くなど テストの記述 by Devin @umaidashi18 17

Slide 18

Slide 18 text

問題2 Devin が、 GitHub Actions で動いている CI のテストの結果を待ちはじめ、ACU を 食い尽くす 解決策 Devin の開発環境でテストを回す Devin > Knowledge You should run tests locally and ensure they pass before creating a PR. You can run tests using make test . テストの記述 by Devin @umaidashi18 18

Slide 19

Slide 19 text

うまくいったこと すでに記述済みのテストを他の箇所に拡充するタスクはうまくいった 既存実装にすでに答えがあった 感想 「失敗」 「成功」の両方に言えるが、 「完全情報ゲーム」状態に近づけてあげると AI の精度があがる 参照 : AIをシステム開発に活かすコツ、全部書く - kmagai TRY 「TDD が効率的」という話をよく聞くので、実践してみたい テストの記述 by Devin @umaidashi18 19

Slide 20

Slide 20 text

PR Review by Devin by 在庫管理チーム: fujisawa さん PR Review by Devin @umaidashi18 20

Slide 21

Slide 21 text

PR Review の仕組み 自動レビュー PR がレビュー可能な状態になった時に、GitHub Actions で Devin API を叩く レビュー観点として .cursor/rules を読ませている workflow.yaml にプロンプトを記述 PR Review by Devin @umaidashi18 21

Slide 22

Slide 22 text

現状と課題 精度 かなりよさそう エッジケースなどを考慮してくれた レビューコメントについて会話できないか模索中 コスト 平均使用ACUが1($2)を超えている coderabbit や PR Agent のような他サービスと比較検討の必要性あり Waitlist の GitHub Copilot も良さそう → 森川さんのPR Agent x Gemini 2.0 も試したい PR Review by Devin @umaidashi18 22

Slide 23

Slide 23 text

動作確認 by Devin by 在庫管理チーム: aiso さん、 matsushita さん 動作確認 by Devin @umaidashi18 23

Slide 24

Slide 24 text

STG 環境での動作確認 概要 Stock では、PRD 環境へリリース前に、 STG 環境で手動テストを行っている これまで、開発担当者がテスト項目を共有し、テスト担当者がリリース前にテスト を行っていた テスト項目を Devin に任せることで、テスト担当者の負担を軽減したかった 動作確認 by Devin - STG @umaidashi18 24

Slide 25

Slide 25 text

手順 Cosmos プラットフォームの基盤サービス「Account」に、Devin のアカウントを 作成 STG 環境は IP 制限がかかっているので、Devin の IP アドレスをホワイトリストに 追加 Devin の Web アプリケーション上で、認証情報を Secret に登録 Devin に STG 環境のURL・認証情報を指定して、STG 環境へアクセス テスト項目をプロンプトで指示 テスト項目ごとに、操作ステップを明示的に書き、それに従ってテストを行 う 動作確認 by Devin - STG @umaidashi18 25

Slide 26

Slide 26 text

pros テスト担当者の負担軽減 リリース日はテスト担当者がテストのための拘束時間が発生していた テスト項目の記録 スクリーンショットを撮ってくれるので、動作確認の記録が残る 後からの確認も容易になる 動作確認 by Devin - STG @umaidashi18 26

Slide 27

Slide 27 text

cons プロンプトの手間 「在庫を販売登録して」という指示だけでは、どの画面でどのような操作を 行うのかわからないので、具体的な操作を指示する必要がある アプリケーションでの操作を示す「動詞」に対する、具体的な操作・ステッ プを knowledge として定義したい コスト 10ACU($20) かかった。日本円で3,000円くらい(3/2時点) 一度 Devin で指示した内容を、他の E2E テストでも活用できるような出力を 吐かせると良さそう 動作確認 by Devin - STG @umaidashi18 27

Slide 28

Slide 28 text

Local 環境 動作確認 by Devin - Local @umaidashi18 28

Slide 29

Slide 29 text

STG 環境と何が違うの GUI(FE) を操作するには、APIサーバーが立ち上がっている必要がある APIサーバーは、他のマイクロサービスに接続している必要がある Cosmos プラットフォームは、マイクロサービスアーキテクチャ (もちろんスタブやモックサーバーを立てるのでもよい) 動作確認 by Devin - Local @umaidashi18 29

Slide 30

Slide 30 text

手順 (STG と同じく) IP 制限を解除するなど プロンプトで、マイクロサービスを同時に立ち上げるように指示 stock-api と、 category-api を立ち上げた上で、 stock-web を起動してください 動作確認 by Devin - Local @umaidashi18 30

Slide 31

Slide 31 text

アンケート結果 アンケート結果 @umaidashi18 31

Slide 32

Slide 32 text

アンケート結果 @umaidashi18 32

Slide 33

Slide 33 text

発見された効果的な活用プラクティス PR diffを使ったコードレビュー(セルフレビューの質向上) 最初にAIに実装してもらい、後から細かく目視で修正する手法 プロジェクトの開発ルールをドキュメント化しAIに与える 目標設定の壁打ち相手として活用 アンケート結果 @umaidashi18 33

Slide 34

Slide 34 text

今後の展望 AIと人間の業務分業を進める 人間は要件定義や進捗管理、AIの成果物に対するレビュー AIには実装やテスト作成を任せる コードレビューの活用による精度向上 事業部からの問い合わせへの対応 TDDの実践 要件定義とQAへの導入 アンケート結果 @umaidashi18 34

Slide 35

Slide 35 text

AI との協働 / 開発プロセスの変化 Devin, Cursor, 各種Agent, 人間をどうやって使い分けるか AI との協働 / 開発プロセスの変化 @umaidashi18 35

Slide 36

Slide 36 text

「完全情報ゲーム」の考え方 AIをシステム開発に活かすコツ、全部書く - kmagai 前提: 「完全情報」に近いほど、AIの精度が高くなる IMO: 完全情報とは「どうしたいか」だけではなく、 「どうやるか」まで明確にする必要がある 完全情報ゲームにするために、ドメイン知識(世の中にない情報)を集める必要 がある 調べるコストより自分で実装したほうが早ければ自分でやる 例:ビジネスロジック系 逆に、完全情報な領域で自分に知識がない場合は効率的に任せられる 例:バグ修正、アルゴリズム系 AI との協働 / 開発プロセスの変化 @umaidashi18 36

Slide 37

Slide 37 text

AI Agent のコントロールのしやすさ Agent 制御しやすさ 特徴 Cursor Agent △ - 素直だったり無視したりする - 人間の都合の悪い方に向きがち Devin ○ - 完全情報ゲームには強い - 完全情報ゲームといえないタスクには不向き Cline ◎ - config でコントロールしやすい - 人間が適宜軌道修正しながら実装できる Windsurf ◎ - Cline とほぼ同じ - Cursor Agent より制御しやすい AI との協働 / 開発プロセスの変化 @umaidashi18 37

Slide 38

Slide 38 text

@umaidashi18 38

Slide 39

Slide 39 text

最後に、これから挑戦したいこと by 人間 最後に、これから挑戦したいこと by 人間 @umaidashi18 39

Slide 40

Slide 40 text

1. MCP Server の利用 Postgres(ちょっと触ってみた) Local での開発では、自然言語でSQLを組み立てられる sqlc のような生sqlからメソッドを生成するライブラリに活用できるか STG や PRD のDB(Cloud SQL)に繋ぐことで、例えば、特定のバーコードの在庫 情報について自然言語でアクセスできる 問い合わせの一次対応などに活用できるか マイクロサービス間の連携 マッピング情報やスキーマの情報を MCP Server として提供 マイクロサービス間の連携が MCP Server 経由で可能になるのでは 最後に、これから挑戦したいこと by 人間 @umaidashi18 40

Slide 41

Slide 41 text

2. AI Agent を用いた業務改善 最後に、これから挑戦したいこと by 人間 @umaidashi18 41

Slide 42

Slide 42 text

@umaidashi18 42

Slide 43

Slide 43 text

EOF package main import "fmt" func main() { fmt.Println("ご清聴ありがとうございました") } @umaidashi18 43