SlackでMarkdownブロックが使えるようになっていた #slack #markdown #mrkdwn #ai #llm

はじめに
Slackアプリやボット開発において、Slack独自のmrkdwn形式が多くの開発者を悩ませてきたと思います(筆者もその一人です)。LLMなどから生成された一般的なMarkdown形式のテキストを流し込もうとしても微妙に表記方法が異なるため、サードパーティのライブラリや独自実装でMarkdownをmrkdwnに変換しなければなりませんでした。
| 要素 | Markdown | mrkdwn |
|---|---|---|
| 太字 | **テキスト** __テキスト__ | *テキスト* |
| 斜体 | *テキスト* _テキスト_ | _テキスト_ |
| 取り消し線 | ~~テキスト~~ | ~テキスト~ |
| リンク | [表示テキスト](https://example.com) | <https://example.com|表示テキスト> |
| 見出し | # 見出し1 ## 見出し2 | (非対応) |
| リスト | - アイテム * アイテム | - アイテム • アイテム |
| テーブル | | セル1 | セル2 | | (非対応) |
しかしいつの間にか、Slack公式のBlock KitにMarkdown ブロックが追加されており、Markdown形式のテキストをそのまま流し込めるようになっていました!
本稿では、Slack Markdownブロックについて見ていきます。
いつから使えるように?
Slack Developer DocsのChangelogによると、この機能はAIアプリ連携を見据えて段階的に追加・強化されてきました。
- 2025年2月3日: Block Kitに標準のMarkdownフォーマットを受け付けるmarkdownブロックが追加されました。AI機能を搭載したアプリの開発での利用を意図したものと説明されています。
- 2026年3月6日: さらにサポート範囲が拡大され、「言語別シンタックスハイライトつきコードブロック、テーブル、チェックボックス、区切り線などが可能になりました。
本稿執筆時の2026年3月の1年以上前に既にMarkdownが使えるようになっていただけでなく、mrkdwnでは対応していなかった表にもつい最近になって対応されていました。
Python SDKでの例
使い方は非常にシンプルです。 type: markdown と指定するだけです。LLMなどで生成されたテキストを変換処理なしでそのまま text に渡せるため、コードが非常にクリーンになります。ここではPython Slack SDKの例を見てみましょう。
import os
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
client = WebClient(token=os.environ.get("SLACK_BOT_TOKEN"))
channel = os.environ.get("SLACK_CHANNEL")
# Markdownテキスト
markdown_content = """
## Markdownブロックのテスト
これは **Slack公式** のMarkdownブロックを利用したテストです。
### シンタックスハイライト
```python
def hello_slack():
print('Hello, Markdown Block!')
```
### テーブル表示
| ユーザー | ステータス |
| -------- | ---------- |
| Alice | 🟢 Active |
| Bob | 🔴 Offline |
### タスクリスト
- [x] Block Kitのリファレンスを読む
- [ ] アプリのコードを書き直す
"""
try:
response = client.chat_postMessage(
channel=channel,
text="Markdown通知のフォールバックテキスト",
blocks=[
{
"type": "markdown",
"text": markdown_content
}
]
)
print("Message sent successfully")
except SlackApiError as e:
print(f"Error sending message: {e.response['error']}")
これを実行すると次のようにきれいに表示されます。

ちなみに同じメッセージをmrkdwnで表示すると次のようになってしまいます。

まとめ
本稿では、Slackのmarkdownブロックにを見てみました。
本稿執筆時点の2026年3月より、1年以上前には既に実装されておりMarkdownフォーマットをそのまま投稿できるようになっていたこと、さらに最近になってテーブルなどにも対応できるようになっていたことがわかりました。
mrkdwnからMarkdownに変換する必要がなくなったことで、自前処理を取り除いたり、サードパーティライブラリへの依存を減らしたりと、技術的負債を減らすことができるようになったと考えられます。Slackチャットボットと生成AIを連携させている方はコードを見直し、Markdownブロックに置き換えが可能かどうかぜひ検討してみてください。
