Slack

Slack Incoming Webhook 完全ガイド:設定・送信・テキスト処理

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

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

2026年、ビジネス競争力を上げる2ルート

"組織を動かす"立場と"個人スキルを伸ばす"立場では必要な打ち手が違います。自分の役割で選んでください。

▷ 部門・全社でAIリテラシー研修を入れたい管理職・人事・経営層

【Kindle本】イノベーションOps 組織を動かすDX&AI導入プロセスのすべて

▷ 個人のビジネススキル・思考法を"本から"底上げしたい実務担当者

Kindle Unlimited 30日無料|ビジネス書読み放題▶

※積極的な自己学習が成長への近道です

▶ 耳で学ぶビジネススキルなら オーディオブックAudible 。日経BP・東洋経済系の話題作も対象です。


Contents

スポンサードリンク

Incoming Webhook の概要と取得手順

What is Incoming Webhook?

  • シンプルな HTTP POST エンドポイントです。認証は URL に埋め込まれているため、別途トークンや OAuth は不要です。
  • ペイロードは JSON 形式で送信し、text(プレーンテキスト)または blocks(Block Kit)をトップレベルに配置すれば Slack が自動的にレンダリングします。

取得手順

手順 内容
1 ワークスペースの左サイドメニュー → 「アプリ」「Incoming Webhooks」 を選択
2 「Webhook を追加」ボタンをクリックし、通知したいチャンネルを指定
3 発行された URL(例: https://hooks.slack.com/services/TXXXXX/BXXXXX/XXXXXXXX)をコピーして安全な場所に保管

※ セキュリティ上の注意
- Webhook URL は機密情報です。Git リポジトリや公開サーバーに平文で保存しないこと。
- 必要に応じて IP 制限(Enterprise Grid の場合)や 環境変数 で管理してください。

最小構成の JSON と送信例

cURL(Linux/macOS/Windows Subsystem for Linux)

PowerShell(Windows)

まとめ(この章の要点)

  • URL を取得 → JSON を POST が基本フロー。
  • textblocks のいずれかを必ず含め、Content-Type: application/json を付与すれば即座にメッセージが届く。
  • Webhook URL は機密情報として扱い、環境変数やシークレット管理ツールで保護すること。

テキストタイプと改行コードの正しい扱い方

Slack がサポートしているテキストタイプは大きく分けて 2 種類 です。

タイプ 特徴
plain_text フォーマットが無効化された純粋な文字列。改行は \n が有効だが、UI によって自動折返しされることがある。
mrkdwn(Markdown 互換) Slack 独自のマークアップ(太字斜体、リンク等)が利用可能。改行は必ず エスケープされた \n を入れなければ無視される。

改行コードに関するベストプラクティス

  1. JSON 内では常に LF (\n) のみを使用
  2. Windows で作成したファイルは CRLF (\r\n) が混入しやすいが、Slack は \r を無視してしまうため必ず除去する。

  3. 文字列リテラルのエスケープ
    json
    {
    "blocks": [
    {
    "type": "section",
    "text": {
    "type": "mrkdwn",
    "text": "*ログ*\n
    \nLine1\nLine2\n"
    }
    }
    ]
    }

  4. 上記は \n2 回 エスケープされている点に注意(JSON 文字列内部でのエスケープと Slack の改行解釈)。

  5. プレーンテキストでも \n は有効
    json
    {
    "blocks": [
    {
    "type": "section",
    "text": {
    "type": "plain_text",
    "text": "1 行目\n2 行目"
    }
    }
    ]
    }

文字コード

  • Slack は UTF‑8 のみを受け付けます。
  • curl や PowerShell で送信する際は必ず charset=utf-8 をヘッダーに含めるか、ツール側のエンコーディング設定を確認してください。

まとめ(この章の要点)

  • 多行テキストは mrkdwn + エスケープされた \n が最も汎用的。
  • Windows の CRLF は除去し、常に LF (\n) に統一する。
  • ペイロード全体を UTF‑8 でエンコードし、ヘッダーに明示的に指定する。

section ブロックで多行テキストを表示するベストプラクティス

基本構造

コードブロックやインラインコードを混在させる例

特殊文字のエスケープ表

文字 JSON エスケープ例
バッククオート \(JSON 内では \`)
アスタリスク * \\* (JSON 内は \\\\*
アンダースコア _ \\_ (JSON 内は \\\\_

ポイントmrkdwn のパーサは上記エスケープが無いと意図しない装飾や構文エラーになることがあります。

文字数・サイズ制限

  • 1 ブロックあたり 最大 3000 文字(改行含む)。
  • Webhook 全体のペイロードは 最大 1 MB。超過した場合は 400 invalid_payload が返ります。

まとめ(この章の要点)

  • section + mrkdwn が多行テキスト・コードブロック共通で最も扱いやすい。
  • 特殊文字は必ず JSON エスケープし、サイズ上限に注意する。

Rich Text 系ブロックの利用 – 現状と注意点

「公式に推奨」かどうか?

2023 年 9 月時点の Slack API ドキュメントhttps://api.slack.com/block-kit)では、rich_text_* 系ブロックは「サポート対象」として記載されていますが、「推奨される」旨の明言はありません。
そのため、本稿では 「利用可能だが公式にプライオリティ付けされた推奨項目ではない」 と表現します。

注釈:2025‑2026 年版 Block Kit Builder でも rich_text は選択肢の一つとして表示されますが、従来の section/mrkdwn に比べて UI が限定的(テーブルやインデントはサポート外)である点に留意してください。

主な Rich Text 要素

要素 用途
rich_text_section 通常のテキスト行。text 要素の配列で構成される。
rich_text_list 箇条書き(style: "bullet")や番号付きリスト ("ordered")。
rich_text_preformatted 等幅フォントでコードブロック的表示を行う。
rich_text_quote 引用ブロック(インデントが自動付与される)。

例:箇条書きリスト

Block Kit Builder の活用手順

  1. ブラウザで Block Kit Builderhttps://app.slack.com/block-kit-builder)にアクセス。
  2. 左側エディタに上記 JSON を貼り付け、右側プレビューで見た目を確認。
  3. 「Copy JSON」ボタンで確定したコードを自分のスクリプトへ組み込む。

使いどころと制限

シナリオ 推奨ブロック 理由
シンプルな多行テキスト section + mrkdwn 実装が最も簡単で、全体的に広くサポートされている。
箇条書きや階層リスト rich_text_list 自動インデント・バレット生成が行われるため手作業が不要。
コードブロック(等幅フォント) rich_text_preformatted または mrkdwn の triple‑backticks 等幅表示が必要な場合は rich_text_preformatted が安全。
引用やコメント風のインデント rich_text_quote 右側に薄い縦線が自動で付くため視覚的に区別しやすい。

注意点:一部クライアント(モバイル版など)では rich_text_* の描画が若干異なる場合があります。重要な情報は併せて section/mrkdwn でも提供すると安全です。

まとめ(この章の要点)

  • rich_text_*「利用可能」 な機能であり、公式に「推奨」されているわけではない。
  • 箇条書きや等幅コードブロックなど、特定用途で便利だが互換性を確認しつつ使用すること。

実務事例:ESET Protect の多行テキスト問題と対策

背景(何が起きたか)

  • ESET Protect が生成したアラート変数 ALERT_MESSAGE には改行 (\n) が含まれる。
  • 従来のペイロードでは mrkdwn\n を入れず、plain_text を使用していたため Slack 側で改行が失われ、1 行に潰れて表示 された。

出典について:本事例は 2025 年 1 月 27 日に ESET 社公式フォーラム([ESET Community – Alert Formatting])で報告された内容を元にしています。投稿者が示したサンプルコードとその後のコメントから情報を抽出しましたが、正式なドキュメント化はされていない点をご留意ください。

解決策概要

  1. 変数側で改行文字をエスケープ
  2. Bash 例:ESCAPED=$(printf '%s' "$ALERT_MESSAGE" | sed 's/"/\\"/g; s/$/\\n/')
  3. ペイロードは rich_text_preformatted に切り替える(等幅で改行が保持されやすい)
  4. テストは Block Kit Builder と Webhook テストページで二段階検証

手順詳細

1️⃣ 変数エスケープ(シェルスクリプト例)

  • sed二重引用符改行 をエスケープ。
  • 必要に応じて awk '{printf "%s\\n",$0}' 等でも可。

2️⃣ ペイロード(Rich Text Preformatted)

  • ${ESCAPED} はシェル変数展開後の文字列がそのまま入ります。
  • rich_text_preformatted が等幅フォントで 改行を忠実に再現

3️⃣ テストフロー

手順 実施場所 内容
A Webhook テストページhttps://hooks.slack.com/services JSON を貼り付けて「Send」 → チャンネルで表示確認
B Block Kit Builder 同じ JSON を貼り付け、右側プレビューでレイアウトと改行をチェック
C 実運用スクリプト(cron/システムジョブ) 本番環境でテストアラートを送信し、ログにエラーが無いか確認

追加のベストプラクティス

  • 変数は必ずシングルクオートで囲む → シェル展開時の予期せぬ文字置換防止。
  • ペイロードサイズ:ESET のアラートは長文になることがあるため、1 MB 超過しないように事前に wc -c でバイト数を測定。
  • デバッグ情報の付加:失敗時に Slack が返すエラーオブジェクト(例: invalid_blocks) を標準出力へリダイレクトして CI/CD パイプラインで検知。

まとめ(この章の要点)

  • ESET Protect の改行が失われる問題は 「変数側で \n エスケープ + rich_text_preformatted」 に置き換えることで解決できる。
  • 出典がフォーラム投稿に基づくため、実装前に自社環境で必ず検証すること。

テスト・デバッグ手法とよくあるエラー

1. Webhook テストページの活用

  • URL 発行画面右上の 「Test this webhook」 ボタンから直接 JSON を貼り付けて送信可能。
  • 成功時はステータス 200 OK、失敗時はエラーメッセージ(例: invalid_payload, invalid_blocks)が返る。

2. Block Kit Builder での事前検証

機能 メリット
リアルタイムプレビュー UI 上で実際の表示を確認でき、改行・インデントミスを即座に発見。
Validate ボタン JSON スキーマエラーを自動的に指摘。
Copy JSON 正しいフォーマットをそのままコピーできるので手入力ミスが減少。

3. コマンドラインでのデバッグテクニック

  • -v オプションで リクエスト/レスポンスヘッダーステータスコード を取得。
  • エラーメッセージは JSON の "error" フィールドに格納されていることが多い。

4. よくあるエラーと対処法

エラー 主な原因 確認ポイント / 対策
invalid_blocks 必須フィールド欠落、タイプミス、ブロック階層不正 JSON Lint で構文検証 → Block Kit Builder の「Validate」使用
改行が無視される \n がエスケープ不足、plain_text 使用 mrkdwn に切り替え、\n を二重エスケープ (\\n) しないか確認
文字化け (UTF‑8 以外) ペイロードが UTF‑16/Shift_JIS 等で送信された charset=utf-8 ヘッダー付与 → PowerShell の -Encoding utf8
400 Bad Request ペイロードサイズ > 1 MB、JSON が不正 wc -c payload.json でバイト数測定、jsonlint.com で検証

5. ログとモニタリング

  • Slack の API ダッシュボードhttps://api.slack.com/apps → 「Incoming Webhooks」)でリクエスト履歴が確認できる。
  • 外部監視ツール(Datadog, New Relic 等)に curl のステータスコードを送信し、失敗時のアラートを設定すると運用上安心。

まとめ(この章の要点)

  1. テストは必ず二段階:Webhook テストページ → Block Kit Builder。
  2. エラーは JSON 構文かブロック定義ミスが多い。Linter とビルダーで事前検証を徹底する。
  3. 文字コード・サイズ制限に注意し、UTF‑8 かつ 1 MB 未満で送信する。

全体まとめ & 参考リンク

項目 キーポイント
Webhook の取得と基本構成 URL を取得 → text/blocks を JSON に入れ POST
テキストタイプ mrkdwn + \n が多行テキストのデファクト標準
section ブロック 多行・コードブロックは section+mrkdwn が最も汎用的
Rich Text 系 利用可能だが「公式推奨」ではない。箇条書きや等幅表示に便利
実務事例(ESET Protect) 変数エスケープ + rich_text_preformatted が解決策
テスト・デバッグ Webhook テストページ+Block Kit Builder の併用、curl -v で詳細確認
運用上の注意 URL はシークレット管理、UTF‑8 とサイズ制限を遵守

主な公式ドキュメント

参考情報(外部リンク)

  • JSON Lint: https://jsonlint.com/
  • ESET Community – Alert Formatting (2025‑01‑27) (※公式フォーラム投稿、内容は非公式)
  • 「Slack アプリ開発入門」Tech Blog(2024 年更新版)

この記事は 2026 年 4 月現在の情報を基に作成しています。Slack の機能や API は随時変更されるため、実装前には必ず最新公式ドキュメントをご確認ください。

スポンサードリンク

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

2026年、ビジネス競争力を上げる2ルート

"組織を動かす"立場と"個人スキルを伸ばす"立場では必要な打ち手が違います。自分の役割で選んでください。

▷ 部門・全社でAIリテラシー研修を入れたい管理職・人事・経営層

【Kindle本】イノベーションOps 組織を動かすDX&AI導入プロセスのすべて

▷ 個人のビジネススキル・思考法を"本から"底上げしたい実務担当者

Kindle Unlimited 30日無料|ビジネス書読み放題▶

※積極的な自己学習が成長への近道です

▶ 耳で学ぶビジネススキルなら オーディオブックAudible 。日経BP・東洋経済系の話題作も対象です。


-Slack