9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SlackのやりとりをワンクリックでIssue化!AI活用で業務がちょっと楽になった話

Last updated at Posted at 2025-12-07

👋 はじめに

株式会社ネクスウェイでSREをしている@oteppeと申します ^ ^

株式会社ネクスウェイ Advent Calendar 2025」3日目は、チームで育成中のSlackでのカジュアルな相談や要望をスタンプひとつでIssueに起票、そして調査まで自動でしてもらう仕組みを書こうと思います!

「Slackの内容をIssueに起票できたら便利だよね」という軽い要望から、AIで遊んでみようと色々試しながら拡張していったら、そこそこ便利な仕組みになってきました

🎯 何を作ったのか

一言で言うと、Slackメッセージに以下のタコのスタンプを押すだけで、自動でGitHub Issueが作成される仕組みです。
image.png

しかも、ただIssueを作るだけじゃなくて:

  • 🏷️ メッセージ内容から適切なラベルを自動判定
  • 🤖 Issue作成後、GitHub ActionsでClaude AIが要望を整理してコメントしてくれる

という仕組みになります。

👤 利用の流れ

実際にチームメンバーがどのように使うのか、具体的な流れを見てみましょう。

Step 1: Slackで通常通り相談してるところにタコスタンプをポチッ👆

チームメンバーがSlackでいつも通り相談しているところにタコちゃんをポチッと
これだけで完了です!

※やりとりはそれっぽいやりとりのサンプルです
image.png

Step 2: 自動でIssueが作成される ⚙️

数秒待つと、以下の処理が自動で行われます:

  • ✨ メッセージからタイトルを自動生成
  • 🏷️ 内容を分析して適切なラベルを自動判定
  • 📝 スレッド全体を含めたIssueを作成
  • 🔗 元のSlackメッセージへのリンクも追加

image.png

Step 3: SlackにIssue URLが返信される 📬

作成されたIssueのURLがスレッドに自動返信されます。
クリックすればすぐにGitHubで確認できます!
image.png

Step 4: GitHub ActionsでAIが要望整理 🤖

ラベルがの内容に沿って、GitHub Actionsが自動で動き出します。
Actionsの中でAIが要望を構造化して、Issueにコメントしてくれます。

※ 画像はサンプルですがプロンプトに合わせてコードを解析して、指定したフォーマットで調査してくれます
image.png

結果:完了! 🎉

あとはこのissueの内容を自分で調整したり、この内容で問題なければ @claude この内容でPR作って と書けばPRを作ってくれちゃいます

issue起票と調査までの手作業はタコのスタンプを押すだけです!!
タコさんなんと素晴らしいのだ🐙
image.png

🏗️ アーキテクチャ概要

Slack(タコのスタンプ)
  ↓
Slack bot
  ↓
Lambda関数
  ├─ Bedrock AIでタイトル生成
  ├─ Bedrock AIでラベル判定
  └─ GitHub Issue作成
       ↓
GitHub Actions(ラベルトリガー)
  └─ Claude Code for GitHubが要望を整理

🔧 実装の流れ

1️⃣ Slackイベントの受信

まずはSlackのEvent APIを使って、リアクション(スタンプ)が付けられたことを検知します。

Lambda関数で以下のような処理を行います:

# :issue:スタンプが付けられたことを検知
unless reaction == Configuration::TARGET_REACTION
  logger.info("Not a :issue: reaction, ignoring")
  return { statusCode: 200, body: 'OK' }
end

# スレッド全体のメッセージを取得
thread_result = @slack.get_thread_messages(channel, thread_ts)
messages = thread_result[:messages]

2️⃣ AIによるタイトル生成 ✨

Bedrockを使って、メッセージ内容から適切なIssueタイトルを自動生成します。
無駄遣いな気もしつつ、意外と「issueのタイトル付け地味に悩むから助かる!」という声が多くて驚きました

class BedrockTitleGenerator
  def generate(message_text)
    prompt = <<~PROMPT
      以下のSlackメッセージの内容から、GitHub Issueのタイトルを生成してください。
      
      要件:
      - 30文字以内の簡潔なタイトル
      - メッセージの核心となる問題や要望を表現
      - 日本語で出力
      
      Slackメッセージ:
      #{message_text}
    PROMPT
    
    # Bedrock APIを呼び出し...
  end
end

3️⃣ AIによるラベル自動判定🎯

メッセージの内容を分析して、以下の3つのラベルから適切なものを自動選択します

  • 🐛 AIバグ対応: エラー、不具合、動作しないといった問題報告
  • 🔍 AI仕様調査: 仕様確認、動作確認、「〜はどうなっていますか」といった質問
  • 💡 AI要望整理: 新機能の提案、改善要望、「〜できるようにしてほしい」という要望
class BedrockLabelClassifier
  LABEL_BUG = 'AIバグ対応'
  LABEL_INVESTIGATION = 'AI仕様調査'
  LABEL_FEATURE = 'AI要望整理'
  
  def classify(message_text)
    prompt = <<~PROMPT
      以下のSlackメッセージの内容を分析して、最も適切なカテゴリを選択してください。
      
      カテゴリ:
      1. #{LABEL_BUG} - エラー、バグ、不具合、動作しない
      2. #{LABEL_INVESTIGATION} - 仕様確認、動作確認、調査依頼
      3. #{LABEL_FEATURE} - 新機能の提案、機能追加の要望
      
      Slackメッセージ:
      #{message_text}
    PROMPT
    
    # Bedrock APIで判定...
  end
end

4️⃣ GitHub Issue作成 📝

判定されたラベルとともに、Issueを自動作成します。

Issue本文には以下の情報が含まれます:

  • 💬 スレッド全体の会話(タイムスタンプ付き)
  • 🔗 元のSlackメッセージへの直リンク
def create(owner, repo, title, body, label)
  payload = { 
    title: title, 
    body: body,
    labels: [label]  # ←AIが判定したラベル
  }
  # GitHub APIでIssue作成...
end

5️⃣ GitHub ActionsでClaude AIが要望を整理 🤖

ここからがもう一段階の自動化です!

ここは開発Tの方が作ってくれましたが、Issueが作成されるとGitHub Actionsがトリガーされて、Claude Code for GitHubが要望を構造化して整理してコメントしてくれます。

name: Create Documentation for Claude
on:
  issues:
    types: [labeled]

jobs:
  create-doc-for-claude:
    if: github.event.label.name == 'AI要望整理'
    runs-on: ubuntu-latest
    steps:
      - uses: anthropics/claude-code-action@v1
        with:
          prompt: |
            issueの内容を読み、次の観点で整理してください。
            
            【1. 要望の主旨】
            【2. 背景と現状の理解】
            【3. 課題の仮説】
            【4. 改善の方向性(最大3案)】
            【5. 追加で確認したい情報】

📊 Before & After

😓 Before: 従来のフロー

  1. Slackで相談・要望が投稿される
  2. 誰かが「これIssue化しておきますね」とコメント
  3. Issueを手動で作成
  4. Slackのリンクをコピペ
  5. ラベルを手動で選択
  6. 要望内容を整理してコメント

めんどくさい!😫

✨ After: 新しいフロー

  1. Slackで相談・要望が投稿される
  2. タコのスタンプをポチッ 👆
  3. 完了!

超簡単!🎉

実際に運用を始めてから、チームメンバーがどんどんこの機能を使ってくれるようになりました!

そして、その結果。。
issueを開かずslackにコメントを書いて起票する人が増えてきました、エンジニアはめんどくさがりですねww

image.png

🤖 AIをもっと活用したかった話

実は最初の要望は「Slackの内容をIssueに起票できれば嬉しい」というシンプルなものでした。

でも、せっかくAIを使える環境があったので、「どこまで便利にできるかな?」と思って色々試してみたんです。

その結果:

  • ✅ タイトル自動生成 → 採用!
  • ✅ ラベル自動判定 → 採用!
  • ✅ 要望の構造化 → 採用!

と、どんどん機能が増えていきました。

どんなラベルの種類を作るか、ラベルの自動判定の精度はまだまだ伸び代があるので、チームメンバーと試行錯誤して伸ばしていければと思っています!

🎉 まとめ

Slackのメッセージをワンクリックでissue化する仕組みを作ったことで:

✅ Issue作成のハードルが下がった
✅ AIによる自動分類で、整理の手間が削減された
✅ チーム全体の生産性が向上した

特に、「AIをどう活用するか」を考えながら実装を進めたことで、単なる自動化以上の価値を生み出せた気がしています。

AIツールを使える環境があるなら、色々試してみると思いがけない便利な使い方が見つかるかもという期待が高まりました!


最後まで読んでいただきありがとうございました。

この記事が、同じような課題を抱えている方の参考になれば嬉しいです!
質問やコメントがあれば、ぜひお気軽にどうぞ👋

株式会社ネクスウェイ Advent Calendar 2025では明日以降も、メンバーがそれぞれの「好き」と「学び」を自分の言葉で綴っていく予定です。

明日も楽しみにしていてください ^ ^

引き続き、お楽しみください🎄

9
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?