Slackの次世代プラットフォームが2022年9月下旬にオープンベータのステータスになりました。
有料ワークスペースでの利用が可能となったので、GASで稼働している簡単なBOTを移植してみます。
本記事ではその記録をまとめていきます。
記事の執筆時点で、移植は8割程度完了しています。
ただ、調べながら作業をしていたために内容が行ったり来たりしており、そのまま記事に起こすと読みにくいため、
テーマごとに整理して記事をアップしていきたいと思います。
- 予定
- 開発環境準備(Hello World動かしてみる) ←イマココ
- 次世代プラットフォームの特徴
- 移植するBOTについて
- 実際に移植した結果
- 移植した感想と疑問点
では、早速、開発環境の準備とHello Worldをやってみましょう。
記事執筆のために使用しているOSはWindows11なので、LinuxやMacユーザの方は適宜公式サイトの案内に従ってください。
Step1. Slack CLIのインストール
Slackの次世代プラットフォームには、丁寧なQuickstartが用意されています。
それに従って進めていくことで、ローカルでの開発環境の準備から、簡単なSlackアプリのデプロイまでを経験することができます。
最初の一歩は、Slack CLIのインストールです。プロジェクトの作成から、デプロイまでこのCLIを使って行います。
LinuxやMacにはインストーラが用意されているのようなのですが、Windowsはマニュアルインストールするよう書かれているので、
そちらに従って進めていきます。
1. gitが依存関係にあるので、インストールを行う
2. Denoのインストールを行う
3. DenoがインストールされてPATHが通っているか確認する
> deno --version
deno 1.26.* (release, x86_64-pc-windows-msvc)
v8 10.*
typescript 4.*
4. Slack CLIのインストールを行う
5. Slack CLIがインストールされてPATHが通っているか確認する
> slack version
Using slack v1.14.0
6. 他の依存関係が問題ないかチェックする(errorが出た場合は、内容に従って解決してください)
> slack doctor
7. (任意) VSCodeのDeno拡張をインストール
Step2. CLIの認証
開発環境のコマンドプロンプトから、以下のコマンドを実行する。
> slack login
下記のような出力がされるため、その文字列をコピーし、開発に使用するSlackワークスペースのチャンネルかDMに入力し、送信を行う。
/slackauthticket ABC123defABC123defABC123defABC123defXYZ
アクセス許可フローが開始されるので、フローに従い許可を行う。
許可が完了したら、以下のようにコマンドを確認し、対象のワークスペースとの紐付けが行えたことを確認する。(対象のワークスペースのリストに[ACTIVE]が付いている)
> slack auth list
[ACTIVE] myworkspace (Team ID: T1TK12345)
User ID: U1234567
Last update: 2022-05-24 12:00:00 Z
To change your active workspace authorization run slack login
>
Step3. Slack appを作成する
次のコマンドを実行して、プロジェクトテンプレートを作成する。
デフォルトで選択されている「Hello World」テンプレートを選択します。
slack create [appName]
> slack create hello-world
? Select a template to build from:
> Hello World
A simple workflow that sends a greeting
Scaffolded project
A solid foundation to start building upon
Blank starter project
A, well.. blank project
Step4. Slack appの実行トリガーを作成する
Step3. で作成されたプロジェクトディレクトリに入る。
> cd hello-world
次回以降の記事で詳細は説明しますが、アプリは以下の3つの要素で構成されています。
- Functions: 関数単位のビジネスロジック
- Workflows: Functionsの関数を処理の流れに沿って配置したもの
- Triggers: Workflowを呼び出すもの
Hello Worldテンプレートにはこれらが一式用意されています。
まず、アプリを試す前に、Triggerを作成する必要があります。
以下のコマンドを実行すると、アプリの選択が表示されます。
開発中のワークスペースの後に(dev)がついているアプリを選択します。
> slack trigger create --trigger-def "triggers/greeting_trigger.ts"
? Choose an app [Use arrows to move, type to filter]
my-app
App ID: N/A Status: Not installed
Workspace: myworkspace Team ID: T123456789
> my-app (dev)
App ID: N/A Status: Not installed
Workspace: myworkspace Team ID: T123456789
コマンドの実行に成功すると、以下のような出力がされます。
📚 App Manifest
Created app manifest for "my-app (dev)" in "myworkspace" workspace
🏠 Workspace Install
Installed "my-app (dev)" app to "myworkspace" workspace
Finished in 1.5s
⚡ Trigger created
Trigger ID: Ft0123ABC456
Trigger Type: shortcut
Trigger Name: Send a greeting
Shortcut URL: https://slack.com/shortcuts/Ft0123ABC456/XYZ123... // このURLを手元に控えておく
出力されたTreggerの「Shortcut URL」を手元に控えておきます。
Step5. ローカル開発モードでアプリを実行する
slack run
コマンドを実行すると、ローカルでサーバが起動して、ワークスペースの開発アプリに変更点が同期されます。
開発中のワークスペースを選択します。
> slack run
? Choose a workspace [Use arrows to move, type to filter]
Workspace: myworkspace Team ID: T123456789
App ID: N/A Status: Installed
ここで、Step.4 で手元に控えたShortcut URLをSlackワークスペースのパブリックチャンネルに投稿します。
投稿したチャンネルに、ショートカットが「実行」ボタン付きで表示されます。
実行ボタンを選択して、表示されたモーダルで、ユーザー、チャンネルを選択し、挨拶文を入力します。
送信ボタンを選択すると、指定したチャンネルに挨拶が表示されるはずです。
ローカルサーバーを停止させるには、Ctrl+cで停止することができます。
まとめ
今回は、Slack次世代プラットフォームの開発環境を整備し、Hello Worldを実行するまでを紹介しました。
ここまで進めることで、ローカル環境でSlackアプリを開発して、テスト、デプロイまですることができるようになります。
次回は、Slack次世代プラットフォームの特徴をまとめたいと思います。