LoginSignup
1
1

More than 1 year has passed since last update.

Slackの次世代プラットフォームがオープンベータになったので、GASで稼働しているBOTを移植してみる。その1(環境準備)

Posted at

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次世代プラットフォームの特徴をまとめたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1