Slack 公式 SDK に関する情報のリンク集

こんにちは、Slack で公式 SDK 開発と日本の DevRel を担当しております @seratch と申します。

この記事では、私もその一員である Slack の Developer Relations チームが開発・メンテナンスしている公式 SDK についての情報をまとめておきます。

## SDK の一覧

現在、安定版として提供されている SDK は以下の通りです。

|名称・ドキュメント|ダウンロード|説明|
|-|-|-|
|Bolt for JavaScript<br/><br/>[slack.dev/bolt-js (日本語 :jp:)](https://slack.dev/bolt-js/ja-jp/tutorial/getting-started)|[github.com/slackapi/bolt-js](https://github.com/slackapi/bolt-js)<br/><br/>npm: [@slack/bolt](https://www.npmjs.com/package/@slack/bolt)|Node.js で動作するフル機能の Slack アプリ開発フレームワーク。2019 年に最初の Bolt としてリリースされ、最も広く利用されている。|
|Bolt for Python<br/><br/>[slack.dev/bolt-python (日本語 :jp:)](https://slack.dev/bolt-python/ja-jp/tutorial/getting-started)|[github.com/slackapi/bolt-python](https://github.com/slackapi/bolt-python)<br/><br/>PyPI: [slack-bolt](https://pypi.org/project/slack-bolt/)|Python 3.6+ で動作するフル機能の Slack アプリ開発フレームワーク。Python らしいデコレーターを用いたデザイン。Flask、Django はもちろん、Asyncio ベースのフレームワークにも対応。FaaS での実装をより簡便にする Lazy Listener という仕組みも提供。2020 年 11 月のリリースながら、この一年で利用が急拡大中。|
|Bolt for Java/Kotlin<br/><br/>[slack.dev/java-slack-sdk (日本語 :jp:)](https://slack.dev/java-slack-sdk/guides/ja/getting-started-with-bolt-socket-mode)|[github.com/slackapi/java-slack-sdk](https://github.com/slackapi/java-slack-sdk)<br/><br/>Maven Central: [g:com.slack.api a:bolt*](https://search.maven.org/search?q=g:com.slack.api%20bolt)|JDK 1.8+ で動作するフル機能の Slack アプリ開発フレームワーク。Java での利用を想定しているが Kotlin 向けの Block Kit DSL なども提供している。Spring Boot はもちろん、Micronaut、Ktor などのフレームワークにも対応。Java を多く利用する企業で幅広く利用されている。|
|Node Slack SDK<br/><br/>[slack.dev/node-slack-sdk/ (英語のみ)](https://slack.dev/node-slack-sdk/)|[github.com/slackapi/node-slack-sdk](https://github.com/slackapi/node-slack-sdk)<br/><br/>npm: [@slack/*](https://www.npmjs.com/search?q=%40slack)|Slack プラットフォームの機能を低レベルのインタフェースで提供するライブラリ群。bolt-js も内部的に web-api、oauth、types、socket-mode ライブラリを利用している。|
|Python Slack SDK<br/><br/>[slack.dev/python-slack-sdk/ (英語のみ)](https://slack.dev/python-slack-sdk/)|[github.com/slackapi/python-slack-sdk](https://github.com/slackapi/python-slack-sdk)<br/><br/>PyPI: [slack-sdk](https://pypi.org/project/slack-sdk/)|Slack プラットフォームの機能を低レベルのインタフェースで提供するライブラリ群。bolt-python も内部的に slack-sdk を利用している。|
|Java/Kotlin Slack SDK<br/><br/>[slack.dev/java-slack-sdk/ (日本語 :jp:)](https://slack.dev/java-slack-sdk/guides/ja/)|[github.com/slackapi/java-slack-sdk](https://github.com/slackapi/java-slack-sdk)<br/><br/>Maven Central: [g:com.slack.api](https://search.maven.org/search?q=g:com.slack.api)|Slack プラットフォームの機能を低レベルのインタフェースで提供するライブラリ群。bolt も内部的に slack-api-model、slack-api-client、slack-app-backend ライブラリを利用している。|
|Python Discovery API SDK<br/><br/>Discovery API ドキュメント (英語のみ)|[github.com/slackapi/python-slack-discovery-sdk](https://github.com/slackapi/python-slack-discovery-sdk)<br/><br/>PyPI: [slack-discovery-sdk](https://pypi.org/project/slack-discovery-sdk/)|Enterprise Grid プラン限定の Discovery API を利用するための SDK とサンプル実装。Discovery API の有効化等のお問い合わせは担当営業までお願いいたします。|

以下は引き続きメンテナンスしておりますが、新しいプロジェクトでの利用は推奨しておりません。

|名称・ドキュメント|ダウンロード|説明|
|-|-|-|
|Slack Events API adapter for Python (Flask required)<br/><br/>[github.com/slackapi/python-slack-events-api](https://github.com/slackapi/python-slack-events-api)|[github.com/slackapi/python-slack-events-api](https://github.com/slackapi/python-slack-events-api)<br/><br/>PyPI: [slackeventsapi](https://pypi.org/project/slackeventsapi/)|Events API リリース時に開発された Flask の拡張ライブラリ。このライブラリを使う場合 3 秒タイムアウトへの対応には別途非同期実行の仕組みが必要。新規の開発には Bolt for Python を推奨している。|
|Hubot Slack Adapter<br/><br/>[slack.dev/hubot-slack/ (英語のみ)](https://slack.dev/hubot-slack/)|[github.com/slackapi/hubot-slack](https://github.com/slackapi/hubot-slack)<br/><br/>npm: [hubot-slack](https://www.npmjs.com/package/hubot-slack)|Hubot 向けの Slack アダプター。内部的には RTM API を使っており、新規の開発にはソケットモードを推奨している。|

また、先日発表になったホスティング環境を提供する新しいプラットフォーム基盤については、現在クローズドベータ中です。

https://api.slack.com/future

こちらについては専用の CLI と Deno SDK を提供しておりますが、これらのツールのソースコードはこの記事時点で公開されていません。公開時期は未定です。

## 終わりに

新しいプラットフォームのツール以外は全て GitHub 上で OSS ライセンスでソースコードを公開しています。フィードバックがございましたら、ぜひお気軽に GitHub issues でお知らせください :wave: （ただし、日本語ではなく **英語で** お願いいたします :bow:）