Slide 1

Slide 1 text

@slack/bolt on Cloud Functions for Firebase Roadagain

Slide 2

Slide 2 text

自己紹介 export default { name: ‘Roadagain’, twitter: ‘@ringoh72’, age: 21, company: ‘Mobile Factory, Inc.’, organization: “Kosen 13s’”, }

Slide 3

Slide 3 text

はじめに

Slide 4

Slide 4 text

seratchさんがいらっしゃると聞いて ビビり散らしてます

Slide 5

Slide 5 text

ここから本編

Slide 6

Slide 6 text

@slack/boltとは slack botを開発するためのフレームワーク より簡単にbotが作れる 使った感じwebhookよりは楽だったけど、 他はやったことがないので比較対象がない…

Slide 7

Slide 7 text

Cloud Functions for Firebaseとは 公式ドキュメントによると Firebase機能やHTTPSリクエストによってトリガーされた イベントに応じて、バックエンドコードを自動的に実行できます。 つまりFirebaseのLambda https://firebase.google.com/docs/functions

Slide 8

Slide 8 text

Kosen 13s’ slackでの出来事

Slide 9

Slide 9 text

「bolt使ってみようぜ」

Slide 10

Slide 10 text

「bolt使ってみようぜ」 Iruyan-Zak「どこで動かそうか」 Roadagain「Firebaseがいい!」 Iruyan-Zak「じゃあそれでいこう」

Slide 11

Slide 11 text

「bolt使ってみようぜ」 Roadagain「とりあえずサンプルコードは写した」 Roadagain「繋ぎ込み…どうやるの…?」

Slide 12

Slide 12 text

requestとresponseを受け取ってcallback的にresponseを返す express的なやり方 Cloud Functions for Firebaseの書き方

Slide 13

Slide 13 text

eventを受け取ってなんやかやする requestやらresponseやらはラップされているっぽい @slack/boltの書き方

Slide 14

Slide 14 text

繋ぎ込み分からない Roadagain「分からない…ググろう」

Slide 15

Slide 15 text

bolt firebase cloud functions

Slide 16

Slide 16 text

bolt firebase cloud functions ヒットするのはfirebase-bolt Realtime Database用のセキュリティルールコンパイラ 今はもう開発止まってるっぽい? なんにせよ紛らわしい

Slide 17

Slide 17 text

今はそうでもないみたい

Slide 18

Slide 18 text

slack bolt firebase cloud functions

Slide 19

Slide 19 text

slack bolt firebase cloud functions boltじゃなくてbotでヒットしてる

Slide 20

Slide 20 text

「bolt使ってみようぜ」 Roadagain「もうだめだぁ…おしまいだぁ…」

Slide 21

Slide 21 text

Iruyan-Zakがissueを見つけてくる

Slide 22

Slide 22 text

Iruyan-Zakがissueを見つけてくる

Slide 23

Slide 23 text

Iruyan-Zakがissueを見つけてくる seratch/bolt-on-cloud-functions-for-firebase

Slide 24

Slide 24 text

ExpressReceiverでいけるらしい https://github.com/seratch/bolt-on-cloud-functions-for-firebase/blob/master/functions/index.js ・ ・ ・

Slide 25

Slide 25 text

ExpressReceiverでいけるらしい https://github.com/seratch/bolt-on-cloud-functions-for-firebase/blob/master/functions/index.js ・ ・ ・

Slide 26

Slide 26 text

ExpressReceiverでいけるらしい ExpressReceiver.appはexpressのインスタンス →つまりcloud functionsと形式が合う! https://github.com/slackapi/bolt/blob/master/src/ExpressReceiver.ts#L40 ・ ・ ・

Slide 27

Slide 27 text

早速パクる

Slide 28

Slide 28 text

早速パクる

Slide 29

Slide 29 text

各種トークン・シークレットの埋め込み firebase functions:config:set を利用して埋め込む https://firebase.google.com/docs/functions/config-env

Slide 30

Slide 30 text

各種トークン・シークレットの埋め込み 埋め込まれたconfigは firebase functions:config:get で取得可能 https://firebase.google.com/docs/functions/config-env

Slide 31

Slide 31 text

各種トークン・シークレットの埋め込み functionsのコードでは functions.config() を使って参照 https://firebase.google.com/docs/functions/config-env

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

// ここでデモする

Slide 34

Slide 34 text

まとめ ● boltは楽にbotが作れる ● ExpressReceiverを使えばCloud Functions for Firebaseでも動く ● Cloud Functionsからbolt⚡が届く

Slide 35

Slide 35 text

Special Thanks Kosen 13s’のslackを実験場に提供してくれたいるやん (@Iruyan_ZAK) firebaseでのサンプルを作ってくださっていたseratchさん (@seratch_ja) ありがとうございました

Slide 36

Slide 36 text

おまけ @slack/boltのlint通ってなかったのでissueを立てました プルリクチャンス