目次
「よくある質問への回答やタスクのリマインドを自動化したい」「Slackを使った業務効率化に興味があるけれど、Botの作り方がわからない」――PythonとBolt for Pythonフレームワークを使えば、初心者でもSlack Botを作ることができます。
本記事では、PythonでSlack Botを作る方法を基礎から実践まで丁寧に解説します。サンプルコード付きで、すぐに動くBotを構築できます。
Slack BotとPythonで実現する業務効率化
「毎日のタスク管理がExcelで属人化している」「定型的な問い合わせ対応に時間を取られている」――こうした課題を抱える中小企業のIT担当者や経営者の方に、ぜひ知っていただきたいのがSlack Botです。
Slack Botとは、ビジネスチャットツール「Slack」上で動作する自動化プログラムのこと。メッセージの送信、データの収集、ユーザーからの問い合わせへの自動応答など、さまざまな業務を自動化できます。
本記事では、PythonでSlack Botを作る方法を、プログラミング初心者の方でも実践できるよう基礎から解説します。Slack APIの基礎知識やメッセージ送信の基本についてはSlack API×Python連携の始め方で詳しく紹介しています。
Slack Botが解決できる3つの業務課題
1. 定期的な通知・リマインド 毎朝の業務開始時に当日のタスクを通知したり、週次レポートの提出期限をリマインドしたり、システムの稼働状況をリアルタイム通知できます。
2. 自動応答・対話型サポート よくある質問への自動回答や、社内ルール・手続きの案内、メンションに反応した情報提供が可能です。
3. データ収集・記録の自動化 勤怠報告をSlackから受け付けてデータベースに保存したり、日報や進捗報告を自動収集できます。
Excel管理からの脱却事例
従来、各社員がExcelファイルに勤怠を記入し、月末に担当者が集計していた業務を、Slack Botで自動化。社員はSlackに「出勤」「退勤」とメッセージを送るだけで、Botが自動的にデータベースに記録し、集計作業も不要になります。
PythonでBotを作る3つのメリット
無料で始められる Pythonは完全無料のプログラミング言語。追加のライセンス費用なしで、業務システムと連携した高度なBotを開発できます。Pythonを使った自動化全般の始め方はPython自動化のやり方完全ガイドを参照してください。
学習コストが低い Pythonは初心者にも読みやすい文法が特徴。他のプログラミング言語に比べて習得しやすく、IT担当者が一人しかいない中小企業でも導入しやすいのが魅力です。
柔軟性が高い 既存の業務システム、データベース、外部APIとの連携が容易。御社の業務に「ちょうどいい」カスタマイズが可能です。
開発前の準備
必要な環境
Slack Bot開発には以下の3つが必要です。
Python(バージョン3.7以上) 公式サイト(https://www.python.org/)からダウンロードし、インストールします。インストール時に「Add Python to PATH」にチェックを入れてください。
確認方法:
python --version
Slackワークスペース 管理者権限またはアプリのインストール権限を持っていることが必要です。権限がない場合は、管理者に依頼してください。
コードエディタ Visual Studio Code(VS Code)を推奨します。無料で使いやすく、Python開発に必要な拡張機能も豊富です。
開発に必要な時間の目安
- シンプルなBot(メッセージ送信のみ): 1〜2時間
- 応答型Bot(メンションに反応): 3〜5時間
- 業務連携Bot(データベース連携など): 1〜3日
初心者の方は、まずはメッセージを1つ送信できるシンプルなBotから始めましょう。
Slackアプリの作成とAPI設定
アプリの新規登録
1. Slack API管理画面にアクセス https://api.slack.com/apps にアクセスし、Slackアカウントでログインします。
2. 「Create New App」→「From scratch」を選択
3. アプリ名とワークスペースを設定
- App Name: 任意の名前(例:「勤怠管理Bot」)
- Pick a workspace: Botを動かすワークスペースを選択
- 「Create App」をクリック
Bot Tokenの取得と権限設定
1. 左メニューから「OAuth & Permissions」を選択
2. 「Bot Token Scopes」で権限を追加
基本的なBotに必要な最小限のScope:
| Scope名 | 用途 |
|---|---|
chat:write | Botがチャンネルに投稿する |
channels:history | メッセージを取得・分析する |
channels:read | チャンネルIDなどを取得 |
app_mentions:read | @Botと呼ばれたことを検知 |
3. ページ上部の「Install to Workspace」をクリック 確認画面が表示されるので、「許可する」をクリック。
4. Bot User OAuth Tokenをコピー xoxb-で始まる長い文字列が表示されます。このトークンは絶対に外部に漏らさないでください。
ワークスペースへのインストール
Slackワークスペースに戻り、Botを使いたいチャンネルを開きます。
- チャンネル名をクリック→「インテグレーション」タブ
- 「アプリを追加する」から作成したBotを選択
Python環境の構築
仮想環境の作成
仮想環境を使うことで、他のプロジェクトとライブラリのバージョンが衝突しないようにできます。
1. プロジェクト用のフォルダを作成
mkdir slack-bot-project
cd slack-bot-project
2. 仮想環境を作成
python -m venv venv
3. 仮想環境を有効化
Windows:
venv\Scripts\activate
Mac/Linux:
source venv/bin/activate
ライブラリのインストール
pip install slack_sdk python-dotenv
トークンの安全な管理
プロジェクトフォルダに.envファイルを作成し、トークンを記述します。
SLACK_BOT_TOKEN=xoxb-あなたのトークンをここに貼り付け
Gitを使う場合は、.gitignoreに.envを追加してください。
venv/
.env
基本的なBotの実装
メッセージ送信Bot
プロジェクトフォルダにbot.pyを作成し、以下のコードを記述します。
import os
from dotenv import load_dotenv
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
load_dotenv()
SLACK_BOT_TOKEN = os.getenv("SLACK_BOT_TOKEN")
client = WebClient(token=SLACK_BOT_TOKEN)
try:
response = client.chat_postMessage(
channel="#general",
text="こんにちは!Botからのメッセージです。"
)
print("メッセージ送信成功:", response["ts"])
except SlackApiError as e:
print(f"エラーが発生しました: {e.response['error']}")
実行方法:
python bot.py
よくあるエラーと対処法
not_authedまたはinvalid_auth
.envファイルのトークンが正しいか確認SLACK_BOT_TOKEN=の後にスペースが入っていないか確認
channel_not_found
- チャンネル名のスペルを確認
- Botをチャンネルに追加
missing_scope
- Slack App管理画面で
chat:write権限を追加 - ワークスペースに再インストール
インタラクティブなBotの実装
メンションに反応するBot
slack_boltライブラリをインストールします。
pip install slack-bolt
bot_interactive.pyを作成します。
import os
from dotenv import load_dotenv
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
load_dotenv()
app = App(token=os.getenv("SLACK_BOT_TOKEN"))
@app.event("app_mention")
def handle_mention(event, say):
user = event["user"]
say(f"<@{user}> さん、呼びましたか?")
if __name__ == "__main__":
handler = SocketModeHandler(app, os.getenv("SLACK_APP_TOKEN"))
handler.start()
Socket Modeの設定
1. Slack App管理画面で「Socket Mode」を有効化
- 左メニュー「Socket Mode」→「Enable Socket Mode」
- App-Level Tokenを作成(
connections:writeスコープ) - 生成されたトークン(
xapp-で始まる)を.envに追加
SLACK_APP_TOKEN=xapp-あなたのアプリトークン
2. Event Subscriptionsを有効化
- 左メニュー「Event Subscriptions」→「Enable Events」をON
- 「Subscribe to bot events」で
app_mentionを追加
実務で使える応用例
勤怠管理Bot
@app.message("出勤")
def handle_attendance(message, say):
user = message["user"]
say(f"<@{user}> さんの出勤を記録しました!")
FAQ自動応答Bot
@app.message("経費精算")
def handle_faq(message, say):
say(
"経費精算の手順はこちらです:\n"
"1. 経費精算フォームに入力\n"
"2. 領収書をアップロード\n"
"3. 上長の承認を得る"
)
まとめ
本記事では、PythonでSlack Botを作る方法を基礎から解説しました。
重要なポイント
- 無料で始められ、学習コストが低いPythonは中小企業に最適
- まずはシンプルなメッセージ送信Botから始める
- Socket Modeを使えば、サーバー不要で開発・テスト可能
- 小さく始めて、段階的に機能を拡張していく
Slack Botの導入により、Excel管理や属人化から脱却し、限られた人員で効率的に業務を進められます。
次のステップ
- 実際の業務フローに合わせてBotをカスタマイズ
- データベース連携で本格的な業務システム化
- 定期実行や外部API連携で高度な自動化を実現(ChatGPT APIとPythonの連携なども応用可能)
「自社に合った"ちょうどいい"システムを作りたい」とお考えの方は、Harmonic Societyにお気軽にご相談ください。AI活用と業務システム開発の専門家が、貴社の業務効率化を全力でサポートします。
Harmonic Society
この記事の内容、自社の業務でも活かせそうですか?
ローカルLLM・AI・クラウドなどの技術導入を、要件整理からPoC・社内展開まで代表エンジニアが伴走します。オンライン対応・全国OK。まずは30分の無料相談から。売り込みはしません。
関連記事
Related / 9 articles
Notes & Insights
- プログラミング
DDoS攻撃の仕組みと対策入門|レイヤー別の防御とCDN・クラウドの活用
DDoS攻撃をボリューム型・プロトコル型・アプリ層に分けて仕組みを解説し、自前サーバーで防げない理由、CloudflareやAWS Shieldの標準防御、オリジンIPの隠し方、レートリミットとBot対策、攻撃を受けたときの初動、費用が跳ね上がるDenial of Walletへの備えまでわかります。
- プログラミング
WAFとは?仕組み・導入パターン・誤検知対策|Webアプリを攻撃から守る実践ガイド
WAFがファイアウォールやIDSと何が違うのか、シグネチャとマネージドルールの仕組み、Cloudflare WAF・AWS WAF・ModSecurityの比較、フォーム送信がブロックされる誤検知の調査と例外設定、ログ監視、WAFが代替できないことまで実践的に解説します。
- プログラミング
セキュリティヘッダー入門|CSP・HSTS・X-Frame-Optionsの設定と効果を実践解説
CSP・HSTS・X-Frame-Options・X-Content-Type-Optionsなど主要セキュリティヘッダーが防ぐ攻撃と、CSPのReport-Onlyからの段階導入、nonce/hash、HSTS preloadの不可逆リスク、Nginx・Next.js・Astroでの設定例、確認方法を解説します。
- プログラミング
クラウドの通信費(Egress)入門|データ転送量課金の仕組みと転送コストを抑える設計
クラウドの「受信無料・送信有料」の原則、AZ間・リージョン間・インターネット向けの単価差、NATゲートウェイ処理料の罠、CDNで転送量を減らす方法、バックアップやログ転送の見落とし、請求書で転送料を特定する手順を解説。想定外の請求を防げます。
- プログラミング
秘密情報をGitに入れない仕組み|.gitignore・git-secrets・履歴から漏れた鍵の削除
APIキーや.envをGitにコミットしてしまう典型経路と、.gitignore・.env.exampleの運用、pre-commitでのgitleaks検知、GitHub secret scanningの活用、漏れた鍵の無効化と履歴書き換え(git filter-repo)の手順を解説。仕組みで再発を防げます。
- プログラミング
開発・ステージング・本番環境の分離設計|環境差分をなくす構成とアクセス制御
開発・ステージング・本番それぞれの目的と、構成をコードで揃える方法、環境別の設定注入、本番データを使わないテストデータ戦略、ステージングの保護(Basic認証・IP制限・noindex)、コストを抑える運用までを解説。環境差分による本番障害を防げます。
- プログラミング
ngrok・Cloudflare Tunnelでローカルを公開|Webhook開発とデモ環境の作り方
NAT内のローカル環境にStripeやLINEのWebhookを届けるトンネリングの仕組みを解説。ngrok・Cloudflare Tunnel・localtunnelの比較、固定ドメインと認証、リクエスト検査、公開時のセキュリティ、自宅サーバー公開への応用までわかります。
- プログラミング
ローカル開発環境のHTTPS化|mkcert・hostsファイル・自己署名証明書の正しい使い方
ローカル開発をHTTPS前提にすべき理由(Secure Cookie・Service Worker・OAuth)と、mkcertでローカルCAを作りhostsで独自ドメインを割り当ててVite・Next.js・Dockerで使う手順を解説。証明書警告を無視する癖の危険も理解できます。
- プログラミング
localhost・0.0.0.0・127.0.0.1の違い|ポートとUnixソケットを理解して「つながらない」を解決
localhost・127.0.0.1・0.0.0.0の意味の違い、Dockerで外から接続できない原因、host.docker.internal、ポート競合の調べ方、Unixソケットの利点と権限、1024未満ポートの制約を解説。「つながらない」を仕組みから解決できます。
Harmonic Society
「読んで終わり」にせず、自社の業務で試してみませんか?
AI・ローカルLLM・クラウドの導入を、要件整理からPoC・社内展開まで代表エンジニアが伴走します。オンライン対応・全国OK・売り込みなし。
無料・30分・オンラインOK|1営業日以内に返信します