Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

【Techの道も一歩から】第49回「SlackアプリをPythonで作成する際の備忘録」

こんにちは。 技術本部研究開発部の高橋寛治です。

最近、簡単なデモレベルの 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 を使ったアプリについては、他記事でも触れられています。参考にどうぞ。

buildersbox.corp-sansan.com

執筆者プロフィール

高橋寛治 Sansan株式会社 技術本部 研究開発部 Data Analysisグループ

阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。同大学大学院電気電子情報工学専攻修了。在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。大学院を卒業後、2017年にSansan株式会社に入社。キーワード抽出など自然言語処理を生かした研究に取り組む。

▼執筆者による連載記事はこちら

buildersbox.corp-sansan.com

© Sansan, Inc.