Slack API は、Slack ワークスペースをプログラムから操作するための API 群だ。メッセージの送受信・編集・削除、チャンネルの作成と管理、ファイルのアップロードまでをカバーする。
まず Incoming Webhook、必要なら Bot
「アラートを Slack に飛ばしたいだけ」なら、Incoming Webhook が最短だ。発行された URL に JSON を POST するだけでメッセージが届き、認証の組み込みもいらない。CI の失敗通知やサーバー監視のアラートはこれで十分まかなえる。
一方、ユーザーの発言に反応する、スラッシュコマンドを受ける、スレッドで対話するといった双方向のやり取りには Bot(Bot Token を持つアプリ)が要る。「通知だけか、対話までか」で実装の重さがはっきり分かれるので、最初に見極めておきたい。
設計上の注意
- メッセージ送信にはレート制限があり、ループで大量投稿すると弾かれる。バッチ通知はまとめて 1 メッセージにする工夫が要る
- Bot は招待されたチャンネルにしか書き込めない。「投稿が届かない」の典型原因はチャンネル未招待
- Block Kit を使えばボタンやセレクトを含むリッチな UI を組めるが、インタラクションを受けるエンドポイントが別途必要になる
双方向 Bot の運用負荷
双方向の Bot に踏み込むと、運用の重さが一段上がる。Slack はユーザー操作のたびに 3 秒以内の応答を求めるため、重い処理は「いったん受領を返してから非同期で実行」する構成が必須になる。さらにイベントを受けるエンドポイントは常時公開しておく必要があり、署名検証でリクエストの正当性を確認しないと、第三者にコマンドを偽装される。通知用途とは別物のサーバー側設計が要ると割り切ったほうがよい。
向かない場面
当然ながら Slack を導入していないチームには通知が届かない。社内の連絡基盤が Teams や Discord のところでは別の手段を選ぶことになる。API 利用そのものは無料で、ワークスペースのプランに依存する。