DenoでSlackアプリを作ったら新人が入社しました

この記事は株式会社ヘンリー Advent Calendar 2024の19日目の記事です。
前回は@tyamaguc07ドメインエキスパートの使う表現を可能な限りコードに落とし込む大切さでした。
最近はドキュメントばかり書く仕事が多かったのでブログに書けるようなことやるぞ!!!ということでSlackアプリを最新のアーキテクチャで作ることにしました。

Slackアプリを作るにあたって、最近のトレンドを追っかけてみるとSlack次世代プラットフォームというものでアプリケーションを構築する、ということでした。

  • 開発はDenoで行う
  • Slack CLIと組み合わせて開発できる
  • ローカル環境でデバッグを行える
  • Slackのワークスペースにデプロイし、サーバレスで運用できる
  • Slack APIに対してのRate limitはあるが、費用は発生しない

ということで、さっそくやっていきましょう。
とはいっても、Slack次世代プラットフォームはリリースから年月が経過していてそれなりにドキュメントはあったので、今回はお世話になった記事を紹介したいと思います。 https://tech.travelbook.co.jp/posts/slack-deno-api/ サンプルアプリも用意されていて、Hello Worldをするにあたって大変助かりました。

Slackアプリを作るうえで苦戦したのが、構築している要素としてあるFunction,Workflow,Triggerの概念でした。

  • FunctionsとWorkflowの関係性
  • Triggerの関連性がよくわからない

手を動かしながら作ってるときは気づかなかったのですが、これらはSlack上で作成できるSlack Workflowそのもので、それらをコードで表現できるというものでした。
(デプロイ後にSlackのWorkflowsを見るとTriggerやWorkflowがみれます)
そこに気づけていればもう少し理解が早まったかもしれません。
書くほどではないかもですが、せっかくなので図を書いてみました。

Functions - Workflow - Triggerの関係図

いくつか調べている中でEvents APIを使ったいい感じのサンプルがみつけられなかったので用意してみました。
(みつけらなかっただけなので既によさげなサンプルあったらごめんなさい)
https://github.com/jigyakkuma/slack-app-events-api-sample.git

Events APIで一番最初に作りたくなるものといえばチャンネルが作成されたら通知されるBotですよね。
サンプルの文言とiconに少し手を加えて…

新人社員の熊野くん

あっという間にCorporate ITチームの新人社員、熊野くんの出来上がりです。
私より働き者の新人に期待したいですね。


ということでいかがでしたでしょうか。
わかってしまえばSlackアプリも難なく作れると思いますので是非チャレンジしてみてください。
皆様の創作意欲を少しでも掻き立てられたなら幸いです。

Built with Hugo
Theme Stack designed by Jimmy