Slack Block Kit の新ブロックを試してみた【データ編】

Slack Block Kit の新ブロックを試してみた【データ編】

Slack Block Kit に追加された新ブロックを紹介します。ソート・ページネーション対応の表が作れる data table block と、JSON だけでグラフが描画できる data visualization block の機能と実装例を解説します。
2026.08.30

2026 年に入ってから、Slack の Block Kit に新しいブロックが続々と追加されています。本シリーズでは、これらの新ブロックを実際に試しながら紹介していきます。

  • 第 1 弾: データ編(本記事)
  • 第 2 弾: 汎用表示編
  • 第 3 弾: エージェント編
  • 第 4 弾: ストリーミング編
  • 第 5 弾: 検証・CI 編

今回は第 1 弾として、data table blockdata visualization block を使い、集計結果を表とグラフに変換してチャンネルに投稿してみます。

なお、Block Kit の基本については以下の記事をご参照ください。

https://dev.classmethod.jp/articles/slack-building-block-kit/

2 つのブロックの概要

data table block は、2026 年 5 月 20 日に追加されたページネーション・ソート・フィルタに対応する表ブロックです[1]

これまで Slack に表を出すには、mrkdwn のコードブロックで桁を手作業で揃えるか、table block[^2] を使う方法がありました。しかし、これらはどちらもインタラクティブな操作ができませんでした。一方 data table block なら、難しい設定なしに列のソートやページネーションが行えます。

また、data visualization block は、2026 年 6 月 16 日に追加された pie / bar / area / line の 4 種類に対応するグラフブロックです[2]

グラフはこれまで、matplotlib などでアプリ側が画像を生成し、files.upload 系の API でアップロードするのが定石でした。一方 data visualization block では、JSON を chat.postMessageblocks に渡すだけでよく、描画は Slack クライアント側が行います。つまり画像生成のコードもアップロードの往復も不要になります。これは楽ですね!

data table block の仕様[3]

項目 内容
行数 ヘッダー込みで最小 2、最大 201
列数 最小 1、最大 20。全行の要素数を揃える必要あり
セルの型 rich_text / raw_text / raw_number の 3 種類
ヘッダー 1 行目がヘッダー。ヘッダーセルに rich_text は使用不可
caption 必須。HTML の caption 要素の値として使われる
page_size 1〜100。省略時は 5
文字数上限 1 テーブルおよび 1 メッセージ全体で、全セル合計 20,000 文字。超える場合はメッセージを分割

なお、ソートはデフォルトでアルファベット順ですが、列のセルがすべて raw_number の場合だけ数値ソートになります。集計結果の数値列は、文字列ではなく raw_number で送るのがポイントです。

data visualization block の仕様[4]

項目 内容
チャートの種類 pie / bar / area / line の 4 種類
ブロック数 1 メッセージに 2 ブロックまで
title 必須。最大 50 文字
pie segment は最小 1、最大 12。value は 0 より大きい数値で、全 segment の合計に対する割合として描画される
bar / area / line series は最小 1、最大 12 で、axis_config が必須。データ点は 1 series あたり最大 20
ラベルの文字数 segment の label、series の name、データ点の label、axis_config.categories の各要素は最大 20 文字。x_labely_label は最大 50 文字

実行時の検証ルールとして、全データ点の labelaxis_config.categories のいずれかと一致すること、series はカテゴリに対応するデータ点を省略できないこと、series 名が重複しないことが定められています。

やってみた

直近 5 週間の問い合わせ件数を Web とアプリの流入別に集計した想定のデータを使います。今回はアプリを作らず、Block Kit Builder に JSON を貼り付けて検証します。

なお、Block Kit Builder の詳細については下記の記事をご参照ください。

https://dev.classmethod.jp/articles/tips-slack-bot-block-kit-builder/

data table block

{
  "blocks": [
    {
      "type": "data_table",
      "caption": "週次問い合わせ件数",
      "page_size": 3,
      "rows": [
        [
          { "type": "raw_text", "text": "週" },
          { "type": "raw_text", "text": "Web" },
          { "type": "raw_text", "text": "アプリ" }
        ],
        [
          { "type": "raw_text", "text": "6/29 週" },
          { "type": "raw_number", "value": 42, "text": "42" },
          { "type": "raw_number", "value": 31, "text": "31" }
        ],
        [
          { "type": "raw_text", "text": "7/6 週" },
          { "type": "raw_number", "value": 55, "text": "55" },
          { "type": "raw_number", "value": 28, "text": "28" }
        ],
        [
          { "type": "raw_text", "text": "7/13 週" },
          { "type": "raw_number", "value": 38, "text": "38" },
          { "type": "raw_number", "value": 45, "text": "45" }
        ],
        [
          { "type": "raw_text", "text": "7/20 週" },
          { "type": "raw_number", "value": 61, "text": "61" },
          { "type": "raw_number", "value": 39, "text": "39" }
        ],
        [
          { "type": "raw_text", "text": "7/27 週" },
          { "type": "raw_number", "value": 47, "text": "47" },
          { "type": "raw_number", "value": 52, "text": "52" }
        ]
      ]
    }
  ]
}

data table block

表の列ヘッダーをクリックするとソートできます。また、page_size を 3 にしたので、5 行のデータが 2 ページに分かれてページ送りの UI が表示されます。省略時は 5 行ごとになります。

data visualization block

同じデータを折れ線グラフにします。

{
  "blocks": [
    {
      "type": "data_visualization",
      "title": "問い合わせ件数の推移",
      "chart": {
        "type": "line",
        "series": [
          {
            "name": "Web",
            "data": [
              { "label": "6/29 週", "value": 42 },
              { "label": "7/6 週", "value": 55 },
              { "label": "7/13 週", "value": 38 },
              { "label": "7/20 週", "value": 61 },
              { "label": "7/27 週", "value": 47 }
            ]
          },
          {
            "name": "アプリ",
            "data": [
              { "label": "6/29 週", "value": 31 },
              { "label": "7/6 週", "value": 28 },
              { "label": "7/13 週", "value": 45 },
              { "label": "7/20 週", "value": 39 },
              { "label": "7/27 週", "value": 52 }
            ]
          }
        ],
        "axis_config": {
          "categories": ["6/29 週", "7/6 週", "7/13 週", "7/20 週", "7/27 週"],
          "x_label": "週",
          "y_label": "件数"
        }
      }
    }
  ]
}

Block Kit Builder のプレビューに折れ線グラフが表示されている様子

グラフにマウスオーバーすると、その週の件数がツールチップで表示されます。

既存の table block との違い

概要で触れた table block と、スキーマ上の違いを整理します。

項目 table block data table block
ソート なし あり
ページネーション なし あり。page_size で行数指定
列の書式指定 column_settings で揃えと折り返しを指定 なし
文字数上限 10,000 文字 20,000 文字
caption なし 必須

data table block には column_settings がないため、右揃えなどの列書式が必要な場合は table block を使うことになります。

まとめ

data table block と data visualization block を活用すると、集計結果を JSON に組み立てるだけで、ソート可能な表とグラフを簡単に Slack に表示できます。

表やグラフを活用している定期レポートアプリ等があれば、置き換えを検討してみてはいかがでしょうか?

次回の第 2 弾では汎用表示系ブロックを試します。お楽しみに!

脚注
  1. https://docs.slack.dev/changelog/2026/05/20/block-kit-more-new-blocks/ ↩︎

  2. https://docs.slack.dev/changelog/2026/06/16/block-kit-data-visualization-block/ ↩︎

  3. https://docs.slack.dev/reference/block-kit/blocks/data-table-block ↩︎

  4. https://docs.slack.dev/reference/block-kit/blocks/table-block ↩︎

この記事をシェアする

関連記事