gotanda.js #12 LT登壇スライド
@slack/bolt onCloud Functions for FirebaseRoadagain
View Slide
自己紹介export default {name: ‘Roadagain’,twitter: ‘@ringoh72’,age: 21,company: ‘Mobile Factory, Inc.’,organization: “Kosen 13s’”,}
はじめに
seratchさんがいらっしゃると聞いてビビり散らしてます
ここから本編
@slack/boltとはslack botを開発するためのフレームワークより簡単にbotが作れる使った感じwebhookよりは楽だったけど、他はやったことがないので比較対象がない…
Cloud Functions for Firebaseとは公式ドキュメントによるとFirebase機能やHTTPSリクエストによってトリガーされたイベントに応じて、バックエンドコードを自動的に実行できます。つまりFirebaseのLambdahttps://firebase.google.com/docs/functions
Kosen 13s’ slackでの出来事
「bolt使ってみようぜ」
「bolt使ってみようぜ」Iruyan-Zak「どこで動かそうか」Roadagain「Firebaseがいい!」Iruyan-Zak「じゃあそれでいこう」
「bolt使ってみようぜ」Roadagain「とりあえずサンプルコードは写した」Roadagain「繋ぎ込み…どうやるの…?」
requestとresponseを受け取ってcallback的にresponseを返すexpress的なやり方Cloud Functions for Firebaseの書き方
eventを受け取ってなんやかやするrequestやらresponseやらはラップされているっぽい@slack/boltの書き方
繋ぎ込み分からないRoadagain「分からない…ググろう」
bolt firebase cloud functions
bolt firebase cloud functions ヒットするのはfirebase-boltRealtime Database用のセキュリティルールコンパイラ今はもう開発止まってるっぽい?なんにせよ紛らわしい
今はそうでもないみたい
slack bolt firebase cloud functions
slack bolt firebase cloud functions boltじゃなくてbotでヒットしてる
「bolt使ってみようぜ」Roadagain「もうだめだぁ…おしまいだぁ…」
Iruyan-Zakがissueを見つけてくる
Iruyan-Zakがissueを見つけてくるseratch/bolt-on-cloud-functions-for-firebase
ExpressReceiverでいけるらしいhttps://github.com/seratch/bolt-on-cloud-functions-for-firebase/blob/master/functions/index.js・・・
ExpressReceiverでいけるらしいExpressReceiver.appはexpressのインスタンス→つまりcloud functionsと形式が合う!https://github.com/slackapi/bolt/blob/master/src/ExpressReceiver.ts#L40・・・
早速パクる
各種トークン・シークレットの埋め込みfirebase functions:config:set を利用して埋め込むhttps://firebase.google.com/docs/functions/config-env
各種トークン・シークレットの埋め込み埋め込まれたconfigは firebase functions:config:get で取得可能https://firebase.google.com/docs/functions/config-env
各種トークン・シークレットの埋め込みfunctionsのコードでは functions.config() を使って参照https://firebase.google.com/docs/functions/config-env
// ここでデモする
まとめ● boltは楽にbotが作れる● ExpressReceiverを使えばCloud Functions for Firebaseでも動く● Cloud Functionsからbolt⚡が届く
Special ThanksKosen 13s’のslackを実験場に提供してくれたいるやん (@Iruyan_ZAK)firebaseでのサンプルを作ってくださっていたseratchさん (@seratch_ja)ありがとうございました
おまけ@slack/boltのlint通ってなかったのでissueを立てましたプルリクチャンス