Slide 1

Slide 1 text

© GO Inc. バグチケットをAIで全自動解決 する 生成AIに人の仕事を任せきるために必要だったこと 茂木貴紀 1

Slide 2

Slide 2 text

© GO Inc. 2 AIに全部やってもらいたい

Slide 3

Slide 3 text

© GO Inc. 今回の取り組みのご紹介 「コードを書いてもらう」から 「勝手に動いてもらう」にするの、 意外とむずかった 3

Slide 4

Slide 4 text

© GO Inc. 4 @manattan_me 開発本部ソフトウェア開発統括部 バックエンド開発部 もぎたかのり 2024年新卒2期生としてGOに入社し、バックエンドを担当。 新卒は全体で4名。採用イベントにもでたりしています。 乃木坂46のライブに先週2日間行きました。 ワインのラッパ飲みが楽しい。

Slide 5

Slide 5 text

© GO Inc. 5 アジェンダ ● 背景・課題 ● 解決ツール「Bancho」のご紹介 ● 作る上での大変だったこと ● 所感: 未来はとても明るい ● まとめ

Slide 6

Slide 6 text

© GO Inc. 6 背景・課題 : 調査・設計すら AIに任せたい ● バックエンドは(も)多様なチームと連携し、複数ドメインの案件を横断的に担当する ● 実装はAIがやってくれるようになったが、そのおかげで並行で回す案件が増えた ● 実装に限らず、前後工程にもAIの能動的な支援が欠かせなくなっている

Slide 7

Slide 7 text

© GO Inc. ● いろんな開発があるが、特にツールの行き来の激しい、開発環境における テスト時のバグチケットの消化の前段を初期スコープにした ● バグチケットの調査・設計自動化ツール「Bancho」を考えた 1. バグの報告検知: slack・メール通知など→自動検知・即時振り分け 2. 原因の特定・情報収集: どこで起きたか人が調べる→AIが特定する 3. 設計: 実装するAIに指示出しする→ 自動でGitHubのissue作成 解決したい課題 : バグチケットの消化 7

Slide 8

Slide 8 text

© GO Inc. Banchoの全体像 8

Slide 9

Slide 9 text

© GO Inc. Banchoの全体像 9 本当に正しい場所を調査できるのか?回答の正確性やトークン消費は問題ないのか?

Slide 10

Slide 10 text

© GO Inc. 事前に付与するコンテキストを定義している bancho.yaml とは 10 起動時に設定するガードレール ● 「この機能のリポジトリはこれ」「ログの データソースはこれ」というメタ情報をあら かじめ定義 ● バグチケットを、この辞書と照らし合わせ て一発で正しい調査対象を特定する

Slide 11

Slide 11 text

© GO Inc. 11 いくつかの 現実的なはまりポイント を紹介します

Slide 12

Slide 12 text

© GO Inc. 大変だったこと1:本番と開発間の通信の制約がある ● 大変だったこと ○ 最初は生成AIのエージェントをどこで動かすか意識せずに開発を進めていた ○ 生成AIをサーバで動かそうとした時に、開発環境の生成AIから本番のログにアクセ スするのはNGだと指摘された ■ 本番のログには個人情報が入る可能性がある ○ JiraのWebhookを、開発・本番のどちらかに流す必要がある ● そこで ○ 開発環境にサーバーをおき、Jiraの特定のスペースからのみWebhookを飛ばす ● ただ ○ 開発環境でのテストで発生するバグの自動消化には役立ったが、 今後本番障害でも使おうと思った時に、制約があることがわかった。 12

Slide 13

Slide 13 text

© GO Inc. 大変だったこと2:個人の AI活用から、 AIに任せるための権限管理 13 ● 前提 ○ 開発者のPCからGitHub MCPや、Grafana MCPは利用できる ○ ソースコードとアプリのログ参照権限は、慣例的にセットで付与される ○ つまり、開発者のPCからは人間の権限ベースでMCPを利用すればいい (Oauth) ● 大変だったこと ○ サーバで生成AIにMCPを使わせる場合は、別途権限付与方法を考える必 要がある ● そこで ○ Bancho専用の各種APIトークンを発行を工夫する ○ レポジトリへのissue作成と、そのレポジトリで実現される機能のログへ の参照権限は、ある程度同一ロールにする

Slide 14

Slide 14 text

© GO Inc. 14 Banchoの最終系

Slide 15

Slide 15 text

© GO Inc. 15 ● 最終形でやりたいこと ○ JIRAのwebhookだけでなく、Slackから自然言語で依頼を受けられるようにする ○ Slackに自律的に報告できたり、Jiraのコメントに調査結果を書けるようにする    技術的には簡単。だが、セキュリティルールに従って安全に作るのは難しい ● 個人情報が開発環境に入ってはいけない・publicのSlackやJiraに書き込んではいけない ● 与えられた権限以上の情報が見えないようにしないといけない。 ○ たとえ生成AIが最強の権限を持っていたとしても、それを人間が乗っ取って昇格して はいけない。 ○ 例: Aサービスのエンジニアは、Banchoをどんなに使っても、Bサービスのログは見 えない Banchoの最終系

Slide 16

Slide 16 text

© GO Inc. 16 未来はとても明るい

Slide 17

Slide 17 text

© GO Inc. 作ってみての所感 ● AIがどの程度いろいろなところから正確な情報を収集してくれるかは、作ってみながら精 度をみていくしかなさそう ○ 成果が出る・でないに関わらず、なんでもやらせてもらえてありがたい ● 実装はほとんどAIが作ってくれるので、やることはコミュニケーションと検証(大変) ○ 「技術的にできる」と「安全に生成AIを運用する」のギャップ ● いざやってみると、できることはたくさん思いつく。が、本当に使われるか・いいものに なれるかは作ってみないとわからない。 ○ 推進する側が気持ちを全面に出して頑張れば、きっといい未来がやってくるはず 17

Slide 18

Slide 18 text

© GO Inc. まとめ ● 生成AIの登場で仕事並列度が上がり、開発の前後工程を任せないと回ら なくなってきた ● 開発環境におけるテストのバグ消化の調査・設計を自動化するBancho をつくった ● 開発/本番の通信制約や、生成AIにどういう権限を渡すかが大変だった ● でも未来はとても明るい 18

Slide 19

Slide 19 text

文章・画像等の内容の無断転載及び複製等の行為はご遠慮ください。 © GO Inc. 19