Bolt 開発フレームワークについて
学習の目的
この単元を完了すると、次のことができるようになります。
- Bolt とは何かを説明する。
- Slack アプリで使用される一般的な API を説明する。
- メッセージの読み取りと書き込みを Slack アプリに許可するスコープを挙げる。
始める前に
このモジュールでは、Bolt for JavaScript 開発フレームワークを使用して簡単な Slack アプリを構築する手順を説明します。この手順の実行は必須ではなく、ハンズオン Challenge はありません。ただし、実際に手順を実行してみたい方は、次を用意する必要があります。
- 個人用の Slack ワークスペース。まだ設定していない場合は、個人用の Slack ワークスペースを設定できます。雇用者が提供するワークスペースまたはアセットを使用する場合は、会社のポリシーを確認してください。
-
Glitch、ngrok、または Slack アプリの開発とテストに使用する別のホスティング環境。このモジュールでは Glitch を使用します。Glitch アカウントをお持ちでない場合は、無料でアカウントを作成できます。
Bolt とは
Bolt は Slack の最新プラットフォーム機能を使用して Slack アプリの構築を容易にする開発フレームワークです。型に関係なく、Slack からの要求を処理するときに共通のパターンを有効にするリスナーインターフェースを使用しています。
また Bolt には、OAuth サポートやイベントの検証などがデフォルトで組み込まれており、アプリのワークフローステップのような機能の簡素化インターフェースがあります。このモジュールでは、Slack の API の概要、Bolt のリスナーパターン、Bolt for JavaScript アプリの作成について説明します。
Slack API の概要
Bolt を使用して構築する前に、アプリケーションプログラミングインターフェース (API) の概要を理解しておきましょう。API についてご存じない方は、「API の基礎」モジュールを参照してください。
Slack アプリは、Slack でのデータの読み取り、書き込み、更新を可能にするさまざまな API にアクセスできます。アプリで最もよく使用される API は、Web API と Events API の 2 つです。これらはピンポンゲームのように機能します。Slack は Events API を使用してアプリにイベントを送信します。アプリは Web API を使用してインタラクションを返します。
Events API
Events API は、イベント登録を使用して JSON ペイロードを HTTP を介してアプリに送信します。アプリはイベントを受信すると、ペイロードを確認し、実行するアクションを決定します。イベントは、チャンネルにメッセージが投稿された、ユーザーがアプリのホームタブを開く、新しいユーザーがワークスペースに参加するなど、ワークスペース内で起こっているあらゆる事柄を指します。サンプルのペイロードを含むイベントの詳細なリストは Slack API サイトを参照してください。
Bolt には、イベントを受信してアプリのリスナーに転送したり、ワークスペースや関連ユーザーまたはチャンネルといった役立つ情報を公開したりするヘルパーが組み込まれています。リスナーについては、このモジュールの後半で説明します。
Web API
Web API は、チャンネル、会話、イベントなど、Slack のオブジェクトを操作するために、類似の呼出規約を使用する HTTP メソッドのコレクションです。この操作には、チャンネルや他のサーフェスへのさまざまなインタラクティブメッセージの送信や、ユーザーリストのようなワークスペース情報の照会が含まれます。Web API メソッドの詳細なリストは API サイトを参照してください。Bolt には、Web API 要求の応答の呼び出しと処理を簡素化するレート制限処理や再試行ロジックといった機能を持つクライアントが組み込まれています。
ワークスペースの管理やセキュリティ監査の実行などのニッチな使用事例については、こちらのドキュメントでその他の API を参照してください。
Bolt を使ってアプリを構築する準備はできましたか? それでは始めましょう。
Slack アプリを作成する
はじめに新しい Slack アプリ作成する必要があります。アプリはゼロから作成するか、マニフェストテンプレートを使用できます。このモジュールでは、権限とイベントがすでに設定されたマニフェストを使用します。必要であれば、後でアプリを変更できます。
-
マニフェストテンプレートを使用して新しい Slack アプリを作成します。このリンクをクリックすると、アプリの構築とテストを行う開発ワークスペースを選択するドロップダウンが表示されます。
- ワークスペースを選択し、[Next (次へ)] をクリックします。この例では、SeaMoss ワークスペースが選択されています。
- ワークスペースを選択すると、[Review summary & create your app (概要を確認してアプリを作成する)] という別のポップアップが表示されます。ここにはアプリケーションに含まれる権限とイベントに関する情報が表示されます。これについては後ほど詳しく説明します。問題がなければ、[Create (作成)] をクリックします。
- Sample app というアプリの [Basic Information (基本情報)] ページに自動的に移動します。ようこそメッセージで [Got It (了解)] をクリックします。
[Basic Information (基本情報)] ページには、Events API や Web API を使用するために必要な重要な認証情報 ([App Credentials (アプリの認証情報)] ヘッダーの下に表示される [Signing Secret (秘密の署名)] など) をはじめ、アプリの概要が表示されます。
このページの内容を確認し、アプリのアイコンと説明を追加してみてください。次に他の設定オプションを見ていきます。
スコープを要求してアプリをインストールする
スコープは、インストールされたワークスペースで Web API コール (メッセージの投稿など) を実行する権限をアプリに付与します。サイドバーから [OAuth & Permissions (OAuth & 権限)] ページに移動して、アプリに追加するスコープを選択します。
- アプリのページで、サイドバーから [OAuth & Permissions (OAuth & 権限)] を選択します。
- [Scopes (スコープ)] まで下にスクロールします。ここに、マニフェストから作成するアプリの一部として含まれたボットトークンのスコープ
channels:history
とchat:write
が表示されます。これらのスコープは、メンバーになっているパブリックチャンネルでメッセージを読み取り、投稿する権限をアプリに付与します。メンバーになっているプライベートチャンネルのメッセージやダイレクトメッセージをリスンするには、チャンネルのタイプに対応する*:history
スコープを追加で登録する必要があります。
- [OAuth & Permissions (OAuth & 権限)] ページの上部に戻り、[Install to Workspace (ワークスペースにインストールする)] をクリックします。
- 次に [Allow (許可する)] をクリックします。
インストールされると、[OAuth & Permissions (OAuth & 権限)] ページに再び戻ります。[Bot User OAuth Access Token (ボットユーザーの OAuth アクセストーク)] には新しいトークンが入力されます。
アクセストークンは重要な機能を持ちます。アクセストークンは、インストールユーザー (この場合はあなた) によってアプリに付与された権限を表します。
アクセストークンは知られないようにしてください。少なくとも公開されているバージョン管理にアクセストークンをチェックインすることは避け、環境変数を使用してアクセスするようにしてください。API のドキュメントにもアプリケーションセキュリティのベストプラクティスが記載されています。
チャンネルに自分のアプリを追加する
アプリをホスト、開発、テストする前に (これについては次に単元で説明します)、アプリをパブリックチャンネルに追加する必要があります。この例では、SeaMoss Sample app が #general チャンネルに追加されます。
- Slack ワークスペースを開きます。
- 個人用のワークスペースにあるチャンネルを右クリックします。
-
[チャンネル詳細を開く] をクリックします。
- 次に、[インテグレーション] タブをクリックします。
-
[アプリを追加する] をクリックします。
- アプリが表示されていない場合は、検索項目を使用して検索します。アプリの横にある [追加] をクリックします。
#general チャンネルに戻ると、アプリが追加されているはずです。これで、アプリケーションのホストと開発に進むことができます。
リソース
-
Slack: Slack ワークスペースを作成する
-
Trailhead: API の基礎
-
Slack API: Using the Slack Web API (Slack Web API を使用する)
-
Slack API: Using the Slack Events API (Slack Events API を使用する)
-
Slack API: Web API Methods (Web API メソッド)
-
Slack API: Permission scopes (権限のスコープ)
-
Slack API: Retrieving messages (メッセージを取得する)
-
Slack API: Best practices for security (セキュリティのベストプラクティス)