こんにちは。 技術本部研究開発部の高橋寛治です。
最近、簡単なデモレベルの Slack アプリを初めて作成しました。 いろいろな設定をしたり、リファレンスを見たりと、やることが多かったです。
次回に作る際に迷わないように、まとめておきたいと思います。
おさえておくこと
- フレームワーク Bolt を使うこと
- デモレベルではソケットモードで作うこと
- メッセージの作成には Block Kit Builder を使うこと(textも設定すること)
- Slack APIも利用すること
- 簡素にすること
- テスト環境を用意しておくこと
フレームワーク Bolt を使う
Slack アプリを開発するためのフレームワーク Bolt を使います。
各種設定を簡略化できたり、Slack 上でのイベントの扱いが容易にできます。
公式の入門ガイドが実行できることを確認します。 内容は大事なことばかり書いているため、理解した上である程度覚えます。
使い方の要点を列挙すると、ざっくり以下かと思います。
- デコレータにより、リッスンするメッセージやイベントを決める
- リッスンしたものごとに、お作法が異なるのでドキュメントを見ること(例えば、利用可能なメソッド引数や、ackを返さないといけないなど)
- ソケットモードは10並列までしか処理しないこと
- リッスンしたい対象(スコープ)について、Slack上で権限を与えること。権限に変更があった場合は アプリケーションの再インストールを必ず行い 反映させること
特に最後の権限については、入門ガイドの後で任意のことを行う際にハマりがちだと思います。 リッスンできているか?できていないなら権限を見直しインストールし直します。
Block Kit Builder でメッセージ(blocks)を試行錯誤できる
Block Kit Builderで、メッセージのJSONを作成します。
モーダルやセレクトボックスなど、アプリケーションの入力となる UI を定義する JSON を作ることができます。
Blockを作って利用する際に、text も設定します。プッシュ通知で表示される文字列は、text がフォールバックとして利用されます。
Slack APIを利用する
Bolt がメソッドに対して、client 引数を提供しています。 これにより、Slack SDK の WebClient が利用可能となります。
例えば、対象イベントのスレッドメッセージを全部取得する際には、Slack API のドキュメントにある conversations_replies
を使用します。
他にも、あるメッセージに絵文字リアクションしたい場合は、reactions_add
です。
作るものは簡単にする
基本的には、単一の処理で完結する簡単なものがいいと思います。
例えば、メッセージのやりとりを蓄積し、その結果から何か出力するというのは難しいです。 取得できるのはあくまでイベントやスレッドです。そのスレッド内のどの情報が対象のやりとりかを特定するには、工夫が必要です。
テスト環境を用意しておくこと
別のワークスペースや、テスト用チャネルを用意します。 また、アプリケーションもテスト用のものを用意します。
おわりに
Slack 上のメッセージを元に、何か処理させることができるアプリは、非常に便利な枠組みだと思います。
フレームワーク、API、Block Kit Builder といくつか把握することで、任意のアプリケーションを作ることができます。
小さな Slack アプリを作ってみてはいかがでしょうか。
Slack Bolt を使ったアプリについては、他記事でも触れられています。参考にどうぞ。
執筆者プロフィール
高橋寛治 Sansan株式会社 技術本部 研究開発部 Data Analysisグループ
阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。同大学大学院電気電子情報工学専攻修了。在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。大学院を卒業後、2017年にSansan株式会社に入社。キーワード抽出など自然言語処理を生かした研究に取り組む。
▼執筆者による連載記事はこちら