【2026年版】Claude APIでSlack社内Botを作る完全ガイド|Python+FastAPIで30分デプロイ
はじめに:社内Slackに「賢いAI同僚」を加える時代
2026年現在、多くのチームが 社内Slackに AI Botを導入しています。「@ai-assistant 〇〇について教えて」とメンションするだけで、ChatGPT/Claude 相当の回答がもらえる環境は、生産性を大きく向上させます。
この記事では、Anthropic Claude API と Slack Bot API を組み合わせて、30分で動くSlack Botを作る手順を実例ベースで解説します。
- Slack App 作成〜トークン取得
- Python + FastAPI + Slack Bolt で Bot実装
- Claude API 連携(ストリーミング応答)
- Cloud Run にデプロイ(無料枠)
- RAG連携でレベルアップ
- 本番運用のベストプラクティス
前提条件
- Python 3.10以上
- Slack ワークスペースの管理者権限(App追加可能)
- Anthropic API キー(Anthropic Consoleから取得・$5の初回クレジット無料)
- デプロイ先: Google Cloud(Cloud Run無料枠)または Fly.io・Render
ステップ1:Slack Appを作成
Slackで新しいAppを作成し、必要な権限とトークンを取得します。
- Slack APIにアクセス → 「Create New App」→「From scratch」
- App Name: 「AI Assistant」等、Workspace: 対象のSlackワークスペースを選択
- 左メニュー「OAuth & Permissions」で以下のScopeを追加:
app_mentions:read(メンション読み取り)chat:write(メッセージ送信)channels:history(チャンネル履歴)im:history(DM履歴)im:write(DM送信)
- 「Install to Workspace」でワークスペースにインストール
Bot User OAuth Token(xoxb-...)を取得・コピー- 「Basic Information」で
Signing Secretを取得 - 「Event Subscriptions」で
app_mentionイベントを有効化(URLは後述で設定)
ステップ2:Python プロジェクト準備
mkdir slack-ai-bot && cd slack-ai-bot
python3 -m venv venv
source venv/bin/activate
pip install slack-bolt anthropic fastapi uvicorn python-dotenv.envファイルに API キーを設定:
SLACK_BOT_TOKEN=xoxb-your-token
SLACK_SIGNING_SECRET=your-signing-secret
ANTHROPIC_API_KEY=sk-ant-...ステップ3:Bot実装
main.pyに最小実装を書きます。
import os
from dotenv import load_dotenv
from slack_bolt import App
from slack_bolt.adapter.fastapi import SlackRequestHandler
from fastapi import FastAPI, Request
from anthropic import Anthropic
load_dotenv()
# Slack App 初期化
slack_app = App(
token=os.environ["SLACK_BOT_TOKEN"],
signing_secret=os.environ["SLACK_SIGNING_SECRET"],
)
# Claude クライアント初期化
claude = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
@slack_app.event("app_mention")
def handle_mention(event, say):
"""@BotName へのメンションに応答"""
user_question = event["text"]
# メンション部分を除去 (<@U12345>)
import re
question = re.sub(r"<@[A-Z0-9]+>", "", user_question).strip()
# Claude に問い合わせ
response = claude.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="あなたは親切な社内アシスタントです。日本語で簡潔に回答してください。",
messages=[{"role": "user", "content": question}],
)
answer = response.content[0].text
say(text=answer, thread_ts=event["ts"]) # スレッドで返信
# FastAPI アプリ
app = FastAPI()
handler = SlackRequestHandler(slack_app)
@app.post("/slack/events")
async def slack_events(request: Request):
return await handler.handle(request)
@app.get("/health")
def health():
return {"status": "ok"}ローカルで起動して動作確認:
uvicorn main:app --port 8000ステップ4:ngrok で一時公開 → Slackに接続
ローカルで動かしたBotをSlackから叩けるようにします。
# 別ターミナルで ngrok を起動
ngrok http 8000
# 例: https://abc123.ngrok-free.app が発行されるSlackのApp設定 → 「Event Subscriptions」→「Request URL」に https://abc123.ngrok-free.app/slack/eventsを設定。
Slackで Bot をチャンネルに招待(/invite @ai-assistant)し、@ai-assistant こんにちはとメンションすると、Claude が返信します。
ステップ5:本番デプロイ(Cloud Run)
Cloud Runなら月100万リクエストまで無料で、常時起動Botに最適です。
Dockerfile を作成
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY main.py .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]requirements.txt
slack-bolt
anthropic
fastapi
uvicorn[standard]
python-dotenvCloud Run にデプロイ
# Google Cloud Project作成・gcloud設定済み前提
gcloud run deploy ai-slack-bot \
--source . \
--region asia-northeast1 \
--allow-unauthenticated \
--set-env-vars "SLACK_BOT_TOKEN=xoxb-...,SLACK_SIGNING_SECRET=...,ANTHROPIC_API_KEY=sk-ant-..."デプロイ完了後、発行された URL(例: https://ai-slack-bot-xxx.run.app)を Slack App の「Event Subscriptions > Request URL」に設定し直せば本番稼働開始です。
発展:RAG連携で社内ドキュメントQ&A化
単純なChatBotから一歩進んで、社内ドキュメントを参照する「社内特化AI」に拡張できます。
- 社内のNotion / Confluence / Google Drive ドキュメントをベクトルDBにインデックス
- Slack質問時にベクトル検索で関連ドキュメントを取得
- Claude に「このドキュメントを元に答えて」と指示
詳しくは エンジニアのためのRAG実装入門をご覧ください。
本番運用のベストプラクティス
1. レートリミット対応
Claude APIにはレートリミットがあります(ティア毎に分計)。5秒以内に大量リクエストすると429エラー。backoff ライブラリで自動リトライを実装:
from anthropic import RateLimitError
import time
def call_claude_with_retry(messages, max_retries=3):
for attempt in range(max_retries):
try:
return claude.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=messages,
)
except RateLimitError:
time.sleep(2 ** attempt) # 指数バックオフ
raise Exception("Max retries exceeded")2. ストリーミング応答で UX改善
長い回答は Claude のstreaming を使い、Slack にリアルタイム表示:
with claude.messages.stream(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": question}],
) as stream:
buffer = ""
for text in stream.text_stream:
buffer += text
# Slack に段階的に更新(say → chat.update)3. スレッド文脈の保持
Slackスレッド内の過去メッセージを conversations.repliesで取得し、Claudeの messages配列に含めると、文脈を踏まえた会話が可能に。
4. コスト管理
- Claude Sonnet: Input $3/1M, Output $15/1M tokens(2026年現在)
- 社員100人・1人10質問/日 → 月額$30〜100程度
- システムプロンプトは Prompt Caching(90%コストカット)を活用
5. セキュリティ
- Signing Secret 必須検証(リクエストの正当性確認・Slack Bolt が自動実装)
- 機密情報を Bot に投げる前に、社内ガイドラインを明示
- Audit log(質問内容)を保存して定期レビュー
よくある質問(FAQ)
Q. どのくらいのコストで運用できる?
Cloud Run 無料枠内 + Claude API 月$30〜100で、月1,000〜10,000質問の社内Botが動かせます。社員1人あたり月$1以下の投資で生産性向上効果を得られます。
Q. ChatGPT Enterpriseでいいのでは?
ChatGPT Enterpriseも素晴らしいですが 最低30席(月$900〜)と初期ハードルが高い。小規模チーム・PoC・特定ユースケース特化なら、自前Bot構築のほうが柔軟かつ安価です。
Q. Claude以外のモデルも使える?
使えます。anthropic を openai または google-generativeai に差し替えればOK。LangChain経由で複数LLMを切り替え可能にする設計もおすすめ。
Q. 保守・運用の手間は?
Cloud Run は サーバーレスなので、通常運用の手間はほぼゼロ。月1回のデプロイ・ログ確認・コスト確認のみで十分です。
Q. より高度な機能を追加できる?
可能です。例:(1) GitHubと連携してPRレビュー、(2) JIRAと連携してチケット作成、(3) Notion検索機能追加、(4) 画像解析(Claude Visionに画像を投げる)、(5) 音声メッセージ対応等。MCP(Model Context Protocol)経由で統合すればより簡単に実装可能。
まとめ:社内Botは30分で動かせる
社内AI Botの構築は、昔は数週間かかる大規模プロジェクトでしたが、現在は Python 100行+Cloud Runで30分で動かせます。
- Slack App作成 → Python Bot実装 → Cloud Runデプロイ
- 基本機能(ChatBot)から始めてRAG統合に拡張
- 月$30〜で社員100人の生産性向上を実現
社内に「AI同僚」を1人加えるのが、2026年の新常識です。今週末のプロジェクトとして試してみてください。
関連記事
👉 【2026年版】エンジニアのためのRAG実装入門
👉 【2026年版】Vercel AI SDK vs LangChain 徹底比較
👉 【2026年版】ChatGPT活用の実務7パターン
👉 個人開発・副業に最適なサーバー完全ガイド
👉 【2026年版】Web APIとAPIキー・OAuth・REST/GraphQL 完全ガイド