Upgrade to Pro — share decks privately, control downloads, hide ads and more …

@slack/bolt on Cloud Functions for Firebase

@slack/bolt on Cloud Functions for Firebase

gotanda.js #12 LT登壇スライド

Roadagain

July 26, 2019
Tweet

More Decks by Roadagain

Other Decks in Programming

Transcript

  1. @slack/bolt on
    Cloud Functions for Firebase
    Roadagain

    View Slide

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

    View Slide

  3. はじめに

    View Slide

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

    View Slide

  5. ここから本編

    View Slide

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

    View Slide

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

    View Slide

  8. Kosen 13s’ slackでの出来事

    View Slide

  9. 「bolt使ってみようぜ」

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. bolt firebase cloud functions

    View Slide

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

    View Slide

  17. 今はそうでもないみたい

    View Slide

  18. slack bolt firebase cloud functions

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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



    View Slide

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



    View Slide

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



    View Slide

  27. 早速パクる

    View Slide

  28. 早速パクる

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. View Slide

  33. // ここでデモする

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide