Firebase + BoltではじめるSlackアプリ開発

Ff1e356e879c9a03c73e7891cb9d63a6?s=47 mako_makok
November 21, 2020

Firebase + BoltではじめるSlackアプリ開発

この資料は2020/11/18に行われた、「自動化大好きエンジニアLT会」の発表資料です。
https://rakus.connpass.com/event/192101/

Ff1e356e879c9a03c73e7891cb9d63a6?s=128

mako_makok

November 21, 2020
Tweet

Transcript

  1. Firebase + Boltで始める 自動化のススメ @mako_makok 2020/11/18 自動化大好きエンジニア LT会

  2. 自己紹介 • 名前: 小林允(@mako_makok) • 所属: 株式会社ラクス • メインはバックエンドエンジニア •

    フロントエンドもかじってる • Spring/Java/Kotlin/TypeScript/React
  3. 勉強会の情報を毎日通知してくれるSlackアプリを 作った

  4. None
  5. 使ったもの • Cloud Functions(Firebase) • Firebase FireStore • Bolt For

    JavaScript
  6. Cloud Functions For Firebase • イベントをトリガーにしてバックエンドのコードを実行 • 200万/月 イベントまで無料 •

    有料プラン(Blaze)じゃないと使えない
  7. Firestore • NoSQL データベース • 無料プラン(Spark)でも使える • 容量: 1GB •

    Read: 50000/日 • Write, Delete: それぞれ20000/日
  8. 正直botレベルでこんなに使わないので実質無料

  9. Bolt For JavaScript • Slackアプリ構築用のフレームワーク • Slack API Team謹製 •

    Slack API Client + Receiver + 便利な型定義 • TypeScriptで書かれている • For JavaScriptとあるだけあり多言語のSDKも提供されている ◦ Python, Java
  10. Firestore slash command でモーダル 表示をRequest Functions モーダルを返却

  11. Firestore slash command でモーダル 表示をRequest モーダルを生成 Formを送信 Formの内容を登録 Functions

  12. Firestore slash command でモーダル 表示をRequest モーダルを返却 Formを送信 Formの内容を登録 Functions 1.

    ユーザごとのパラ メータを取得 2. APIを叩く 3. webhookでそれぞれ のユーザにDM送信
  13. なぜFirebase? • 他のmBaaSだとAWS Amplifyがある ◦ ちょっと前までAmplifyにはemulatorがなかった ▪ 今はAmplifyにもlocal emulatorがある ◦

    AmplifyだとAppSyncがある ▪ Slack bot開発では特に使う必要がない • 個人的にFirebaseのほうが慣れている
  14. Boltの利点 • slackアプリ作成に必要なものが全部入ってくる ◦ Receiver(express)も内包されているので別途インストールの必要 なし • 便利な関数 ◦ ack()

    ◦ say() ◦ etc... export const expressReceiver = new ExpressReceiver ({ signingSecret: config.slack.secret, endpoints: '/events', processBeforeResponse: true }) export const app = new App({ receiver: expressReceiver , token: config.slack.token, processBeforeResponse: true })
  15. Bolt for JavaScriptの利点 • Slackアプリのviewを作成するBlock Kitという仕組みがある ◦ section一個につきプロパティ5~10個程度書くので物量がある • 便利な型定義

    ◦ Blockの型定義 ◦ 他にもSlackは色々できる分Payloadが長くなりがち ◦ 型定義のおかげで補完を効かせながら書ける
  16. None
  17. FaaSでBolt利用時の注意点 export const expressReceiver = new ExpressReceiver({ signingSecret: config.slack.secret, endpoints:

    '/events', processBeforeResponse: true }) これをつけ忘れない!
  18. まとめ • Firebaseでは安く簡単で早くアプリ開発ができる • Boltを使うことでSlackアプリ開発に集中できる • processBeforeResponseは絶対に忘れないようにしましょう(戒め)