Slack BotとPythonで実現する業務効率化
「毎日のタスク管理がExcelで属人化している」「定型的な問い合わせ対応に時間を取られている」――こうした課題を抱える中小企業のIT担当者や経営者の方に、ぜひ知っていただきたいのがSlack Botです。
Slack Botとは、ビジネスチャットツール「Slack」上で動作する自動化プログラムのこと。メッセージの送信、データの収集、ユーザーからの問い合わせへの自動応答など、さまざまな業務を自動化できます。
本記事では、PythonでSlack Botを作る方法を、プログラミング初心者の方でも実践できるよう基礎から解説します。
Slack Botが解決できる3つの業務課題
1. 定期的な通知・リマインド 毎朝の業務開始時に当日のタスクを通知したり、週次レポートの提出期限をリマインドしたり、システムの稼働状況をリアルタイム通知できます。
2. 自動応答・対話型サポート よくある質問への自動回答や、社内ルール・手続きの案内、メンションに反応した情報提供が可能です。
3. データ収集・記録の自動化 勤怠報告をSlackから受け付けてデータベースに保存したり、日報や進捗報告を自動収集できます。
Excel管理からの脱却事例
従来、各社員がExcelファイルに勤怠を記入し、月末に担当者が集計していた業務を、Slack Botで自動化。社員はSlackに「出勤」「退勤」とメッセージを送るだけで、Botが自動的にデータベースに記録し、集計作業も不要になります。
PythonでBotを作る3つのメリット
無料で始められる Pythonは完全無料のプログラミング言語。追加のライセンス費用なしで、業務システムと連携した高度なBotを開発できます。
学習コストが低い 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連携で高度な自動化を実現
「自社に合った"ちょうどいい"システムを作りたい」とお考えの方は、Harmonic Societyにお気軽にご相談ください。AI活用と業務システム開発の専門家が、貴社の業務効率化を全力でサポートします。