TECHNOLOGY

PythonでSlackに通知を送信してみる

Slackは、チームや個人がリアルタイムでコミュニケーションできるビジネス向けチャットツールです。PC・スマホどちらでも使えるので、どこからでもアクセスできます。

また、プロジェクトごとにチャンネルを作成して、必要なメンバーだけ参加させることも可能です。

本記事では、Slack APIを使ってPythonにより通知を送信する方法についてご紹介します。

目次

Slackのアカウントを作成

SlackのアカウントはSlackの公式サイトで作成します。

Slackの公式サイトに入って、「Slackを始める」をクリックして、新規登録を行います。

メールアドレスを入力して「続行する」をクリックすると、入力したメールアドレスに確認コードが送られますので、それをブラウザに入力します。これでSlackのアカウントが作成されます。

ワークスペースの作成または参加

Slackは「ワークスペース」という単位で動作します。通知を送るためにはワークスペースに参加する必要があります。

新しいワークスペースを作成する場合には、「ワークスペースを作成する」を選択します。

すると、ワークスペースに関するいくつかの情報の入力を求められますので、順次設定していきます。

まず、Slackのワークスペースの名前を入力します。ワークスペースはSlack内での大きなグループで、そのグループに属する細分化されたグループをチャンネルとよびます。

たとえば、ワークスペースには社名やチーム名などを記入します。

次に、自分の名前とプロフィール写真を設定します。名前とプロフィール写真はあとから変更することができます。

次に、メンバーを招待します。メンバーに追加するには、メールアドレスを入力するか、あるいは招待リンクをコピーして招待したい人に送る方法があります。メンバーの追加はあとからでも行うことができます。

次に、チャンネルを設定します。チャンネルはワークスペースの中の小グループで、特定の話題やプロジェクトごとに会話を整理することができるSlackの機能で、必要な人だけが参加できるようにできます。

これで、新しいワークスペースが作成されます。

既存のワークスペースに参加する場合には、Slackの管理者から「招待URL」を送ってもらい、招待URLを開いて「参加」をクリックします。

以上で、ワークスペースの準備は完了です。

Webhookの設定(通知の準備)

Webhook(ウェブフック)は、特定のイベントが発生したときに、自動的に外部サービスに通知を送る仕組みです。つまり、何か起こったときに、自動で別のサービスにデータを送るシステムです。Slackでは、このWebhookを使って、外部のアプリやプログラムからSlackに通知を送ることができます。

例えば、システムがエラーで停止するなどのイベントが発生したら、Webhookが作動して事前に設定したURLにデータが送られ、Slackがメッセージを受け取る(指定したチャンネルに通知が届く)というような使い方ができます。

WebhookのURLを取得するには、まずSlack APIのページにアクセスします。

次に、「Create an App(アプリを作成)」をクリックします。すると、「From scratch」と「From a manifest」という2つのオプションのいずれかを選択するかを訊かれます。「From scratch」はゼロからアプリを作成する方法で、手動で設定でき、クリック操作で設定できるため初心者向けです。一方で、「From a manifest」は、事前に用意した設定ファイル(YAML)を使ってアプリを作成する方法で、設定のコピーを行うことで再利用が簡単という利点があります。

項目From scratchFrom a manifest
設定方法UIで手動設定YAMLファイルで一括設定
カスタマイズ性高い(細かく変更可能)高い(設定をプログラムで管理)
初心者向けはい(簡単に設定できる)いいえ(YAMLの知識が必要)
再利用性低い(毎回手動で設定)高い(YAMLを貼るだけで同じ設定を利用できる)
おすすめの用途Webhookによる通知、ボットの試作など本番環境に同じ設定のアプリをデプロイする

本記事ではWebhookを使用して通知を送ることが目的であるため、「From scratch」を選択します。

次に、アプリ名を入力し、ワークスペースを選択します。例えば、アプリ名を「Slack通知Bot」などとし、ワークスペースは先ほど準備したものを選択します。

すると、設定画面に移りますので、右側のメニューのFeaturesにある「App Home」を選択し、Editボタンを押して「Display Name (Bot Name)」と「Default username」を設定します。

項目説明
Display Name (Bot Name)アプリの表示名になります。日本語と英語のどちらでも設定できます。
Default Usernameアプリの識別名になります。半角英数字で設定します。Botに対するメンションに使用します。

次に、右側のメニューのFeaturesにある「Incoming Webhooks」を選択し、「Activate Incoming Webhooks」をONにします。

すると、画面の下に「Webhook URLs for Your Workspace」という項目が表示されますので、「Add New Webhook to Workspace」をクリックします。

次に、通知を送りたいチャンネル(例:#自動通知)を選択し、「許可する」をクリックします。

これにより、Webhook URLが発行されるのでコピーします(右側のメニューのFeaturesにある「Incoming Webhooks」の「Webhook URLs for Your Workspace」に表示されます)。

https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXX

Webhook URLを知られるとなりすましのメッセージを送ることができるため、他人にWebhook URLを教えてはいけません。

Webhookを使ってSlackに通知を送る

取得したWebhook URLを使って、PythonからSlackにメッセージを送ることができます。メッセージの送信には、先ほど取得したWebhook URLを使用します。ここでは、メッセージの送信にrequestsパッケージを用います。

pip install requests

通知を送るサンプルコードをは以下になります。webhook_urlは先ほど取得したものに貼り換えます。

import requests

# Webhook URLをここに記述する
webhook_url = (
    "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXX"
)

# 送信するメッセージ
message = {"text": "Webhookを用いたSlackへのメッセージの送信だよ"}

# Slackに通知を送る
response = requests.post(webhook_url, json=message)

# 成功したかの確認
if response.status_code == 200:
    print("通知を送信できました!")
else:
    print(f"通知の送信に失敗しました: {response.text}")

実行すると、次のようにメッセージが設定したチャンネルに表示されます。

以上で、Slackに通知を送ることができました。

Slackの通知の利用例

例えば、次のようなことが可能になります。

  • 業務効率化・タスク管理
    • タスクの完了通知
    • リマインダーの自動送信
  • エラー・システム監視
    • サーバーエラーの自動通知
    • バックアップやバッチ処理の完了報告
    • システム負荷やCPU使用率の警告
    • セキュリティイベント(不正アクセスなど)のアラート通知
  • チームコミュニケーション
    • ミーティングの開始・リマインダー通知
    • ユーザーの問い合わせ対応
  • データ管理
    • 定期的なデータ集計結果の通知
  • 情報の定期的な取得
    • 天気予報や為替レートの通知
    • サイトの更新が行われたことの通知
    • Webスクレイピングで得た情報を定期的に通知

まとめ

本記事では、Slackアカウントの作成方法、ワークスペースの作成方法、Webhook URLの取得手順、およびPythonを使った通知の送信方法 について詳しく解説しました。

Slackの通知機能を活用することで、業務の効率化やシステム監視、生活情報の取得など、さまざまな場面での自動化が可能 になります。知りたい情報をリアルタイムで受け取れる環境を整えることで、無駄な手間を減らし、より重要なことに集中できるようになります。通知機能を活用して、必要な情報を自動で受け取る環境を整え、より効率的なワークフローや快適な生活を実現するための参考になれば幸いです。

-TECHNOLOGY
-,