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

はじめに

Slackアプリやボット開発において、Slack独自のmrkdwn形式が多くの開発者を悩ませてきたと思います(筆者もその一人です)。LLMなどから生成された一般的なMarkdown形式のテキストを流し込もうとしても微妙に表記方法が異なるため、サードパーティのライブラリや独自実装でMarkdownをmrkdwnに変換しなければなりませんでした。

要素Markdownmrkdwn
太字**テキスト**
__テキスト__
*テキスト*
斜体*テキスト*
_テキスト_
_テキスト_
取り消し線~~テキスト~~~テキスト~
リンク[表示テキスト](https://example.com)<https://example.com|表示テキスト>
見出し# 見出し1
## 見出し2
(非対応)
リスト- アイテム
* アイテム
- アイテム
• アイテム
テーブル| セル1 | セル2 |(非対応)

しかしいつの間にか、Slack公式のBlock KitMarkdown ブロックが追加されており、Markdown形式のテキストをそのまま流し込めるようになっていました!

本稿では、Slack Markdownブロックについて見ていきます。

いつから使えるように?

Slack Developer DocsのChangelogによると、この機能はAIアプリ連携を見据えて段階的に追加・強化されてきました。

本稿執筆時の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で表示すると次のようになってしまいます。

まとめ

本稿では、Slackmarkdownブロックにを見てみました。

本稿執筆時点の2026年3月より、1年以上前には既に実装されておりMarkdownフォーマットをそのまま投稿できるようになっていたこと、さらに最近になってテーブルなどにも対応できるようになっていたことがわかりました。

mrkdwnからMarkdownに変換する必要がなくなったことで、自前処理を取り除いたり、サードパーティライブラリへの依存を減らしたりと、技術的負債を減らすことができるようになったと考えられます。Slackチャットボットと生成AIを連携させている方はコードを見直し、Markdownブロックに置き換えが可能かどうかぜひ検討してみてください。

Author

Chef・Docker・Mirantis製品などの技術要素に加えて、会議の進め方・文章の書き方などの業務改善にも取り組んでいます。「Chef活用ガイド」共著のほか、Debian Official Developerもやっています。

Daisuke Higuchiの記事一覧

新規CTA