Integromat

MakeとSlackで実務向けAPI連携・自動化手順

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

スポンサードリンク

簡易ハンズオン:まず試すMakeとSlackの連携

まず動く最小構成で確認します。
ここではGoogle Sheets→Slack通知とGitHub PR承認の簡易ワークフローを示します。
各手順は短時間で再現でき、ログで動作を確認できます。

Google Sheets から Slack へ通知する手順

Google SheetsをトリガーにSlack通知する最低構成です。

  1. Google Sheetsで通知用シートを作る。ヘッダ例: ID, Title, Description, Link, Notified。
  2. MakeでScenarioを作成。トリガーはGoogle Sheets → Watch Rows(New or Updated Rows)。
  3. アクションに Slack → Post a Message モジュールを追加し接続を選択します。
  4. Block Kitで見やすく整形し、シートの各カラムをマッピングします。
  5. Scenarios画面で「Run once」を実行し、テスト行を追加して確認します。
  6. 実行ログで入力ペイロードとSlackのレスポンス(okやts)を確認します。

Slackモジュールで対応できない細かい制御はHTTPモジュール(Make: HTTP → Make a request)を使います。
HTTPモジュールでトークンを使う際は、トークンを直接記載せず外部ブリッジか秘密管理で注入してください。

GitHub PR の承認ワークフロー(簡易)

GitHub PRを起点に承認ボタンでマージする簡易フローです。

  1. GitHubでWebhookを作成し、MakeのCustom webhook URLを登録します。
    代替: MakeのGitHubモジュールで Watch Pull Requests を使います。

  2. MakeでWebhookトリガー → SlackにBlock Kitメッセージを Post(Approve/Reject ボタン)。

  3. ボタン押下は署名検証済みのブリッジ経由でMakeに転送します(下で詳細)。
  4. 承認時はGitHub APIを呼んでマージします(GitHubモジュールまたはHTTP)。
  5. 結果を chat.update で元メッセージに反映し、スレッドに詳細を投稿します。

以下はBlock Kit例で、action_idとvalueを明確に渡す例です。

value に JSON を入れておくと、押下イベントで PR 情報がそのまま得られます。

詳細実装パターン:署名検証・Socket Mode・Interactive

ここでは実務で間違いやすい実装を補足します。
署名検証やSocket Modeの扱い、Interactive payloadのパース例を示します。
Makeでの直接検証が難しい場合のブリッジ実装も載せます。

署名検証の正確な手順(HMAC-SHA256)

署名検証はraw bodyを用いて厳密に行う必要があります。

  1. ヘッダ X-Slack-Signature と X-Slack-Request-Timestamp を取得します。
  2. basestring を "v0:" + timestamp + ":" + raw_body として作ります。
  3. signing_secret で HMAC-SHA256 を計算し "v0=" を先頭に付けます。
  4. timing-safe 比較で Slack の署名と比較します。
  5. タイムスタンプ差(例: 5分)を超えていたら拒否します。
  6. url_verification の場合は challenge をそのまま返します。

以下は Node/Express と Python/Flask の実装例です。

Node(Express)例:

Python(Flask)例:

MakeのCustom Webhookは受信内容をパースしますが、raw バイト列の取得が難しい場合があります。
そのため署名検証はブリッジ側で行うことを推奨します。

ブリッジ実装例:署名検証→ACK→Make転送(Node/Express)

Makeでの署名検証が困難な場合は、軽量ブリッジを用意して検証とACKを担当させます。
上のNode例のようにACK後にMakeのWebhookへ非同期転送します。
ブリッジはログと再送機能を持たせると運用が安定します。

Socket Modeブリッジ(Node + @slack/socket-mode)

公開エンドポイントを用意できない場合はSocket Modeで受けます。
App-level token(xapp-)を使いSocket Modeクライアントでイベントを受けてMakeへ転送します。

Socket Mode用のapp tokenには connections:write が必要です。

Interactive / Block Kit のフィールドとMakeでのマッピング例

Block Kitの押下イベントはpayloadにJSONで格納されます。
重要フィールドは action_id、value、callback_id、response_url、user.id、channel.id です。

例: 押下イベントをブリッジでJSON化してMakeへ渡すと次のように扱えます。

  • payload.actions[0].action_id → フロー分岐キーに使う。
  • payload.actions[0].value → ボタン固有データ(JSON推奨)をデコードして利用。
  • payload.response_url → 非同期更新用にHTTPで呼ぶ。
  • payload.user.id / payload.channel.id / payload.message.ts → chat.update 等に利用。

Make側の受け取り例(概念):

  1. Webhookトリガーで payload を受け取る。
  2. Tools → Parse JSON で payload を展開する。
  3. Routerで action_id または value の内容で分岐する。
  4. 必要に応じて HTTP モジュールで response_url に結果を投げる、または Slack モジュールで chat.update する。

response_url は署名不要で、そのまま使えます。重い処理はACK後に非同期で response_url を叩くか chat.update を呼んでください。

運用・監視・セキュリティ(MakeとSlackの連携)

運用段階ではレート制限や再試行、コスト管理が重要です。
ここでは監視項目、レート制御、テンプレート移行時の注意点を整理します。

運用チェックリスト(起動前・稼働中)

導入前後に確認すべき項目を運用チェックリストにまとめます。

  1. インポート後に全ての接続を自分の環境へ差し替える。
  2. Run once で動作確認しエラーログを精査する。
  3. 古いシナリオは無効化して重複実行を防ぐ。
  4. 監視: シナリオ失敗率、エラー数、遅延をアラート化する。
  5. トークンローテーションと権限レビューの運用を決める。
  6. ステージング環境で負荷試験と異常系テストを実施する。

レート制限の扱いと推奨閾値(運用例)

Slackのレート制限はメソッドやワークスペースで変動します。
429時は Retry-After を尊重し、無い場合は指数バックオフを実装します。

  • 推奨バックオフ: base=1秒、attempts上限5回、max_delay=60秒、ジッターを加える。
  • 429受信時: Retry-After があればその秒数だけ待機する。
  • 実務目安(保守的): chat.postMessage は継続的に 1 req/sec を超えないようにする。
  • バッチ処理: 一度に送る件数は 20〜50 件を目安にし、バッチ間に短い遅延を入れる。
  • conversations.list 等は limit=100 とし cursor で分割して取得する。

Make上では Flow Control の Delay や外部キューでスロットリングを行ってください。

テンプレート運用の具体手順とトラブル回避

テンプレートの取り込みと切り替え時に発生しやすい問題を防ぎます。

  1. テンプレートをImportしたら直ちに各モジュールの接続を差し替える。
  2. スコープ不足で起きる missing_scope は再インストールで解消する。
  3. 本番切替はステージングでフルテスト後に行い、切替時は旧シナリオを停止する。
  4. 事前に影響範囲(通知先やAPI実行回数)を確認する。
  5. 接続の権限不足で失敗した場合は Make の実行ログと Slack App の監査ログを照合する。

コスト最適化

Makeは操作数で課金されるため最適化が重要です。

  • ポーリングを減らしてWebhookへ切り替える。
  • 複数の更新をまとめて1回のAPI呼び出しにする。
  • 条件で処理を分岐し不要なモジュール呼び出しを抑える。

免責事項と参考リンク

このガイドは実務的な手順を示す参考情報です。
詳細仕様や最新の挙動は公式ドキュメントを参照してください。
組織のセキュリティポリシーやSlackのサポート窓口に従って運用してください。

  • Slack署名検証: https://api.slack.com/authentication/signing-requests
  • App-level token(Socket Mode): https://api.slack.com/authentication/token-types#app-level-tokens
  • Socket Mode ドキュメント: https://api.slack.com/apis/connections/socket
  • Block Kit / インタラクティビティ: https://api.slack.com/block-kit, https://api.slack.com/messaging/interactivity
  • chat.postMessage 等のWeb API: https://api.slack.com/methods/chat.postMessage
  • Make ヘルプセンター(Webhooksやモジュール): https://www.make.com/en/help

まとめ

ここまでの要点を押さえて段階的に導入してください。
まずは小さなテンプレートで動作確認を行い、段階的に本番投入します。

  • OAuthは最小権限で発行し、スコープ変更後は再インストールする。
  • 署名検証はraw bodyで厳密に行い、Makeで直接取れない場合はブリッジを使う。
  • Socket ModeはApp-level token(connections:write)を用い、ブリッジでMakeへ転送する。
  • Interactiveは action_id/value/response_url を明確に設計し、Makeでパースして分岐する。
  • レート制御は Retry-After を尊重し、指数バックオフとジッターでリトライ設計を行う。
スポンサードリンク

-Integromat