
今回は、Slackで絵文字を押すだけでAsanaの既存不具合を検索できる仕組みを作ったので、その実装方法と効果をご紹介します。
はじめに
テストやQA業務において、不具合を発見した際に「この不具合は既に報告されているものか?」を確認することは重要なプロセスです。
しかし、毎回Asanaを開いて検索するのは意外と手間がかかります。
そこで、Slack、Devin、Asanaを連携させて、Slackから離れることなく既知・新規の確認ができる仕組みを構築しました。
前提
kickflowではタスク管理や不具合チケット管理にプロジェクト管理ツールのAsanaを利用しています。
解決したかった課題
従来のワークフローの問題点
不具合を発見した際の従来のフローは以下のようなものでした。
- 不具合を発見する
- Asanaを開く
- 検索ボックスに不具合の内容を入力して検索
- 既存の不具合チケットを確認
- 既知か新規かを判断
- 新規であれば不具合起票
このフローには以下の課題がありました
- 検索の手間:適切なキーワードを考えて検索する必要がある
- 時間のロス:単純な確認作業に時間がかかる
- 判断の限界:不具合件数が増えてくると、既知の事象かどうかの正確な判断を人間が行うのが困難になる
実装した解決策
システムの全体像
以下の3つのツールを連携させることで、Slackスタンプ一つで不具合の既知・新規を確認できる仕組みを実現しました。
- Slack:不具合報告と結果表示のインターフェース
- Devin:AIを活用した検索処理の実行
- Asana:不具合チケットの管理。Devinに「Asana MCP (Model Context Protocol)」を設定することで、Devinが直接Asana内の過去チケットを検索・参照できる仕組みを構築
システムシーケンス図
Slackでのリアクションをトリガーに、DevinがAsanaから類似チケットを検索し、ユーザーへ回答を提示するまでの流れは以下の通りです。
sequenceDiagram
participant User as ユーザー
participant Slack as Slack
participant Devin as Devin (AI)
participant Asana as Asana (MCP経由)
User->>Slack: 不具合報告にスタンプを押す
Slack->>Devin: 調査リクエスト送信
Note over Devin: ユーザーの投稿内容を解析
Devin->>Asana: Asana MCPを使用して類似チケットを検索
Asana-->>Devin: 関連するチケット情報を返却
Note over Devin: 類似度の高いチケットを抽出・回答作成
Devin->>Slack: 調査結果(類似チケットの情報)を投稿
Slack-->>User: 結果を表示
使い方
実際の使い方はとてもシンプルです!
- 特定のチャンネルで、発見した不具合の内容を投稿
- その投稿に絵文字(
:kichifuguai:)を押す - Devinが自動でAsana内の不具合チケットを検索し、スレッドに結果を返信
たったこれだけで、既知の不具合かどうかが確認できます!


実装方法
1. DevinのPlaybook設定
まず、DevinにPlaybook(自動化の実行手順)を作成しました。
このPlaybookにより、Devinは受け取った不具合の内容から、Asana内の類似度の高い不具合チケットを検索できるようになります。
Playbookのプロンプト
## Overview あなたは、過去のバグ記録データベース(Asana等)から新規タスクの重複を検出する専門の品質保証(QA)アシスタントです。 あなたの役割は、ユーザーから提供される「新規の不具合情報」を分析し、既存のバグチケットの中から意味的・文脈的に類似しているものを特定することです。これにより、開発チームが重複した不具合対応を行う無駄を排除します。 ## Procedure 1. **Step 1: 新規不具合の分析** 提供された `[不具合内容]` を読み込み、以下の要素を抽出して不具合の本質(Root Cause)や発生事象(Symptom)を理解します。 * エラーメッセージやスタックトレース * 発生手順や条件 * 期待される動作と実際の動作 2. **Step 2: 既存チケットの検索と照合** 抽出したキーワードや文脈情報を使用して、過去のバグチケット(Asanaプロジェクト内など)を検索します。単なるキーワード一致だけでなく、現象の類似性に注目して比較を行います。 3. **Step 3: 類似度スコアリング** 検索でヒットした候補について、新規不具合との一致度を0%〜100%で評価します。 * **高スコア基準:** エラーコード、発生箇所、根本原因が一致している。 * **中スコア基準:** 現象は似ているが、発生条件や環境が異なる可能性がある。 4. **Step 4: 結果の出力** 分析結果に基づき、以下のルールに従ってレポートを作成します。 * **類似チケットがある場合:** スコアが高い順に上位3件までリストアップします。 * **類似チケットがない場合:** 指定された「見つかりませんでした」というメッセージを出力します。 ## Advice & Pointers * **コンテキスト重視:** 単語が一致していても、機能やモジュールが全く異なる場合はスコアを下げてください。逆に、異なる表現でも同じ根本原因を示唆している場合はスコアを上げてください。 * **Asana URLの正確性:** 出力する「Asana URL」は、必ず検索して実在が確認できた正確なリンクを使用してください。 * **フォーマット厳守:** 出力は以下の形式を厳密に守ってください。 ```markdown 【Case [番号]】: [タスクタイトル] 1. 類似度スコア: [XX]% 2. Asana URL: [URL] ``` ## Forbidden actions * **幻覚(ハルシネーション)の禁止:** 実在しないタスクIDやURLを捏造して回答しないでください。 * **無理な関連付け:** 類似度が低い(例: 50%未満)にもかかわらず、無理に類似チケットとしてリストアップしないでください。確信が持てない場合は「なし」と判断する方が安全です。 * **冗長な出力:** 指定されたリスト形式(または「なし」のメッセージ)以外の、不要な挨拶や前置きは省略してください。
Playbookの主な処理内容
- 受け取ったテキストから重要なキーワードを抽出
- Asana MCP経由で不具合チケットを検索
- 類似度の高いチケットをリストアップ
- 結果を整形して返す
2. Slackワークフローの設定

- トリガー設定
- 特定の絵文字リアクション(
:kichifuguai:)が追加されたときに起動
- 特定の絵文字リアクション(
- アクションの流れ
- リアクションされたスレッドの情報を取得
- Devinを呼び出し、スレッドの情報を渡して調査を依頼
- Devinからの返信を元のスレッドに投稿
この設定により、絵文字を押すだけで自動的に調査してスレッドに回答を返してくれるようになりました。
導入の効果
定量的な効果
- 検索時間の短縮と工数の極小化:
- 従来は1件あたり3-5分かかっていた確認作業が、スタンプを押すだけの数秒の操作(実質工数ほぼゼロ)で完了
- AI(Devin)がバックグラウンドで自律的に調査を行うため、担当者は調査を待つ間に他の業務を並行して進めることが可能
- ツール切り替えの削減:Asanaを直接開いて検索・確認する手間がなくなった
定性的な効果
- 心理的負担の軽減:「面倒だな」と感じていた検索作業が楽になった
- コミュニケーションの向上:検索結果がSlackスレッドに残るため、チーム全体で情報を共有しやすくなった
今後の展望
現在の仕組みをさらに発展させて、以下のような機能追加を検討しています。
- 新規不具合と判断された場合、自動的にAsanaにチケットを作成
- 類似度のスコアリング精度の向上
まとめ
Slack、Devin、Asanaを連携させることで、不具合の既知・新規確認を効率化することができました。 エンジニアやQA担当者の方で、同様の課題を抱えている方は、ぜひこのアプローチを参考にしてみてください。
小さな自動化の積み重ねが、チーム全体の生産性向上につながります。
今回ご紹介した仕組みも、そんな小さな一歩ですが、確実に日々の業務を楽にしてくれています。
kickflowでは、こうした業務効率化に積極的に取り組むエンジニアやQAエンジニアを募集しています。 興味を持っていただけた方は、ぜひ採用サイトをご覧ください。