Slack

PythonでSlack Bot開発:Socket ModeとOAuthの設定方法

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

2026年、ビジネス競争力を上げる2ルート

"組織を動かす"立場と"個人スキルを伸ばす"立場では必要な打ち手が違います。自分の役割で選んでください。

▷ 部門・全社でAIリテラシー研修を入れたい管理職・人事・経営層

【Kindle本】イノベーションOps 組織を動かすDX&AI導入プロセスのすべて

▷ 個人のビジネススキル・思考法を"本から"底上げしたい実務担当者

Kindle Unlimited 30日間無料で200万冊が読み放題 Kindle Unlimited 30日無料|ビジネス書読み放題▶

※積極的な自己学習が成長への近道です

▶ 耳で学ぶビジネススキルなら オーディオブックAudible 。日経BP・東洋経済系の話題作も対象です。


スポンサードリンク

PythonでSlack Botを開発する前に準備すること

PythonでSlack Botを構築するには、環境設定や基本的な理解が不可欠です。特にSocket Modeを活用することで、ローカル環境での開発が可能となり、実運用前のテストが効率的になります。以下では、必要なツールと準備手順を確認してください。


Socket Modeの特徴とローカル開発の利点

Socket ModeはSlack APIとの通信をローカル環境で直接処理できる仕組みで、開発時の即時フィードバックやセキュリティ面でのメリットがあります。

WebSocket通信の詳細
Socket Modeでは、Slackからイベントをリアルタイムに受け取るため、WebSocketプロトコルが採用されています。これは通常のHTTP通信とは異なり、双方向通信(全二重)が可能で、サーバー側からのデータ送信も即時に行えます。

  • 即時デバッグ: ローカルサーバーからWebSocket経由でイベントを受け取れるため、コード変更後の反応がリアルタイムに確認可能
  • セキュリティ強化: アプリトークンを外部に出さずに開発できる
  • コスト削減: クラウド環境の利用を控えられる

Socket Modeを使うことで、本番環境との切り分けが容易になり、安定した開発が可能になります。


必要なツールと環境設定概要

Slack Bot開発に必要な主な要素は以下の通りです。準備することでスムーズな作業が可能です。

項目 内容 補足
Pythonバージョン 3.10以降 旧バージョンではサポートされていないライブラリがある可能性あり
Slack APIトークン Bot User OAuth Token(xoxb-***) SlackアプリのOAuth設定で発行可能
ローカルサーバー FlaskやFastAPIなど WebSocket通信を実装するためのHTTPサーバーが必要
ngrok ローカルポートを公開するツール Slackアプリとローカル環境を接続するために利用

注意: 開発用トークンは本番環境では使用しないでください。


Slackアプリ作成とOAuth設定フロー

Slack Botの開発には、まずSlack APIダッシュボードでアプリを作成し、OAuth2.0による認証フローを構築する必要があります。


アプリの新規登録手順

  1. https://api.slack.com/apps にアクセス
  2. 「Create New App」を選択し、アプリ名とワークスペースを選択
  3. OAuth & Permissions セクションで「Scopes」を設定(後述)

ここで重要なのは、「Bot Token Scopes」と「User Token Scopes」の選定です。初期開発ではchat:writemessages:readなどの基本的な権限を割り当てることから始めるのがおすすめです。


認証スコープの選定基準

OAuthフローでSlack APIにアクセスするためには、必要な権限(scopes)を明確にしておくことが重要です。以下に代表的なスコープとその用途を示します。

スコープ 権限内容 使用例
chat:write チャンネルへのメッセージ送信権限 Botがチャットに投稿する場合に必要
messages:read メッセージの読み取り権限 ユーザーからの入力を受け取る場合に必要
users:read ユーザー情報の取得 「特定ユーザーへの通知」などに使用

ポイント: 過剰なスコープはセキュリティリスクにつながります。最小限の権限で機能を実現するように設計しましょう。


OAuthフローの実装例

OAuth2.0では、以下のステップが必要です:

  1. Slack APIに認可コードを送信し、アクセストークンを取得
  2. Bolt for Pythonフレームワークでトークンを用いてAPI通信
  3. ユーザーがアプリを承認した際のリダイレクトURLを設定

以下はOAuthフローの簡単なコード例です:

注記: 実際にはapp.oauth()関数など、Slack APIのOAuthフローを扱うための補助メソッドも利用可能です。
app.oauth()は、認可コードからアクセストークンを取得する処理を自動化し、リダイレクトURIの設定やトークン管理を簡略化します。


Bolt for Pythonフレームワークの導入

Bolt for Pythonは、Slack Bot開発向けに最適化されたフレームワークです。以下ではインストール手順と基本的な構成方法を解説します。


pipでのインストール方法

まず、必要なライブラリをpipでインストールします。以下のコマンドで導入可能です。

注意: slack_boltがバージョンアップしている可能性があるため、公式ドキュメントを確認してください。


基本的なアプリ構造と起動スクリプト

Bolt for Pythonの基本的なディレクトリ構成は以下のようになります。

app.pyに以下のようなコードを記述することで、Slack Botの起動が可能です:

ポイント: say()メソッドはSlackチャンネルにメッセージを送信するための関数です。


メッセージ送信・受信APIの連携方法

Slack Botでは、メッセージを受け取るだけでなく、自動で反応してメッセージを送ることも可能です。以下では、その具体的な方法を解説します。


Slack APIエンドポイント一覧

Slack APIは、以下の主なエンドポイントを使ってメッセージの送信と受信を行います。

エンドポイント 機能 メソッド
/chat.postMessage チャンネルにメッセージを送信 POST
/rtm.start WebSocket通信を開始 GET

重要: Socket Modeでは、RTM(Real Time Messaging)の代わりにWebSocket経由でイベントを受け取るため、このエンドポイントは使わずにBoltのイベントリスナーを使用します。


イベントリスナーの実装例

以下は、Slack Botが「こんにちは」というメッセージを受信した際に自動で返答するコードです:

注意: メッセージの送信にはchat.postMessage()メソッドを使用しますが、Boltフレームワーク内ではsay()メソッドで簡潔に処理できます。


ローカル環境でのデバッグ・テスト手法

ローカル開発では、ngrokなどのツールを使ってポートを公開し、Slackアプリと接続する必要があります。以下では具体的な手順とテスト方法を解説します。


ngrokによるポート公開手順

  1. https://ngrok.com/download からngrokをダウンロード
  2. ローカルサーバーを起動(例: python app.py
  3. terminalで以下のコマンドを実行し、ポートを公開

出力例:
Forwarding https://abc123.ngrok.io -> localhost:3000

このURLをSlackアプリの「Redirect URLs」に設定することで、ローカル環境と接続可能になります。


Mockデータを使ったテストケース

開発初期段階では、Mockデータを使用してSlack Botを動作させることができます。以下はPythonで簡単に実装できる例です:

このようにして、Slackのメッセージイベントを模倣し、ロジックを検証することが可能です。


WebSocket通信におけるエラーハンドリング

Socket ModeでのWebSocket通信には、接続切断やメッセージ形式の不整合が発生する可能性があります。以下ではその対処法を解説します。


コネクション切断時の再接続ロジック

WebSocketで接続が切れた場合、自動再接続を行う必要があります。Boltでは以下のように再接続ロジックを実装できます。


メッセージ形式のバリデーション方法

Slackから送られてくるメッセージは、一部がJSON形式で構成されており、誤ったフォーマットが来ることがあります。その場合、以下のように処理できます。

ポイント: event["text"]がJSON文字列である保証がないため、必ず例外処理を追加し、不整合に備える必要があります。


まとめ

Slack Bot開発では、Socket ModeやOAuthフロー、Boltフレームワークなど、それぞれの技術点を正しく理解することが不可欠です。特にWebSocket通信の仕組みやエラーハンドリングについては、ロジックの安定性に直結します。上記のポイントを踏まえて、信頼性のあるSlack Botを開発してください。


スポンサードリンク

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

2026年、ビジネス競争力を上げる2ルート

"組織を動かす"立場と"個人スキルを伸ばす"立場では必要な打ち手が違います。自分の役割で選んでください。

▷ 部門・全社でAIリテラシー研修を入れたい管理職・人事・経営層

【Kindle本】イノベーションOps 組織を動かすDX&AI導入プロセスのすべて

▷ 個人のビジネススキル・思考法を"本から"底上げしたい実務担当者

Kindle Unlimited 30日間無料で200万冊が読み放題 Kindle Unlimited 30日無料|ビジネス書読み放題▶

※積極的な自己学習が成長への近道です

▶ 耳で学ぶビジネススキルなら オーディオブックAudible 。日経BP・東洋経済系の話題作も対象です。


-Slack