コマンドラインインターフェースを使用してアプリのライフサイクルを管理する
学習の目的
この単元を完了すると、次のことができるようになります。
- Slack オートメーションの作成とデバッグを行うために Slack CLI、TypeScript、ロギングツールを使用する状況と方法を特定する。
- オートメーションでデータストアを使用する状況と方法を理解する。
Slack コマンドラインインターフェース
Slack CLI (コマンドラインインターフェース) は、Slack オートメーションを作成するために欠かせないツールセットです。Slack CLI を使用すれば、コマンドラインを介してアプリを操作できます。メインの slack コマンドを使用することで、アプリを作成、管理、実行、デプロイできるのに加えて、トリガーを作成したり、データストアに照会したりできます。たとえば、CLI をインストールした後に、slack login コマンドを使用して Slack ワークスペースを承認できます。その後、slack auth list コマンドを実行して、CLI が設定済みであることを確認できます。
slack help を実行すると、使用できるコマンドがターミナルウィンドウに表示されます。CLI クイックリファレンスページには、Slack プラットフォームで開発するときに特によく使用されるコマンドが記載されています。Slack CLI コマンド、サブコマンド、使用できるパラメーターやフラグの包括的なガイドが含まれています。

TypeScript SDK
TypeScript はオープンソースのオブジェクト指向プログラミング言語です。TypeScript は JavaScript の構文的なスーパーセットです。TypeScript の基本構文は JavaScript と同じですが、その上に独自の構文が追加されており、開発者は静的型付けを使用したり、省略可能な型アノテーションを追加したりできます。これは、JavaScript では動的型付けが使用されており、実行時に変数値に基づいてインタープリタによって各変数に型が割り当てられるのとは異なっています。
Slack オートメーションを作成するときには、Typescript SDK を使用してファイルを作成し、TypeScript 対応の型定義を使用できます。TypeScript を使用すれば、ドキュメントとコードエディターを行き来しなくても、API メソッドが受け入れる引数やオプションのガイダンスが表示されます。TypeScript は JavaScript が基盤となっているため、任意の規模で優れたツールが提供され、大規模なアプリ開発向けに設計されており、大規模な Web アプリにも対応できます。また、TypeScript は JavaScript よりも読みやすく、管理しやすくなっています。さらに JavaScript にトランスパイル (コンパイルして変換) できます。

オートメーションのためのログ
Slack オートメーションをローカルで開発するときには、アプリコード内で console.log 関数をコールすることで、開発サーバーを実行しているターミナルウィンドウのコンソールに出力を表示できます。たとえば、実行をログに記録して情報をデータストアに保存する関数に console.log コールを追加すれば、データストア項目を出力して、適切な型のデータが保存されていることを検証できます。
console.log はアプリで生成するように指定した情報を表示します。一方、アプリのアクティビティのログを確認したい場合は、アプリをインストールした後に slack activity を実行し、 ワークスペースとローカルアプリ環境を選択します。出力には、ワークフローステップや関数が起動および実行したタイミング、外部認証情報、アプリ内で発生したエラーなどの詳細が含まれています。
アプリをデプロイした後は、 console.log へのコールはリモートで捕捉されます。また、そのデータは slack activity コマンドを介してのみ、過去 7 日間のアプリアクティビティと共に出力されます。

データストア
オートメーションでは、データを簡単に保存したり取得したりする方法としてデータストアの概念を使用できます。そのデータはオートメーションの後続のステップで使用できます。たとえば、オートメーションのステップの実行中に、メッセージ、チャンネル、ユーザー名などの入力を収集することが考えられます。その後、後続のステップでそれらの詳細を使用して、マネージャーにレビューのためのメッセージを送信できます。
データストアは、キャッシュ目的であれ長期的なデータ保存目的であれ、アプリでデータを保存する場所が必要な場合に便利です。データは Slack の管理されたインフラストラクチャ内に保存されるため、この情報をどこでホストするかを悩む必要はありません。また、セキュアで高性能な NoSQL データベースである DynamoDB が基盤となっており、そのデータモデルでは次の 3 種類のデータ単位が使用されています。
-
テーブル: 項目のコレクション
-
項目: 属性のコレクション
-
属性: 項目をほかのすべての項目の中で一意に識別する基本的なデータ要素であり、それ以上分解することはできません。
データストアを使用する前に初期化するには、次の手順を実行します。
- ソースファイルでデータストアを定義します。
- データストアのプロパティをマニフェストファイルに追加します。datastore:read や datastore:write などの必要なデータストアボットスコープを botScopes プロパティに含めます。
データストアを初期化したら、slack run コマンドを使用してローカルでインスタンス化するか、slack deploy コマンドを使用して本番環境でインスタンス化できます。slack run を使用してデータストアをインスタンス化した場合に保存される情報は、slack deploy を使用した場合にデータストアに保存される情報とは分離されます。
Slack では CLI カスタム関数と API が提供されています。アプリ内でデータストアを管理するには、apps.datastore.* 形式が使用されます。このようなツールを使用することで、オートメーションのデータを作成、取得、更新、削除、照会できます。
これで、効果的に Slack CLI コマンドを使用してオートメーションを作成できるようになり、TypeScript SDK の利点、ロギングを有効にして解釈する方法、オートメーションプロジェクト内のデータストアの目的と実装について理解を深めることができました。
リソース
- Slack 開発者ドキュメント: Getting started with the Deno Slack SDK (Deno Slack SDK の使用開始)
- Slack 開発者ドキュメント: Authorizing the Slack CLI (Slack CLI の承認)
- Slack 開発者ドキュメント: Developing with TypeScript (TypeScript を使用した開発)
- Slack 開発者ドキュメント: Logging Function and App Behavior (関数とアプリの動作のロギング)
- Slack 開発者ドキュメント: Slack CLI errors reference (Slack CLI エラーリファレンス)
- Slack 開発者ドキュメント: Using datastores (データストアの使用)