Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Firebase + BoltではじめるSlackアプリ開発
Search
mako_makok
November 21, 2020
Technology
0
14k
Firebase + BoltではじめるSlackアプリ開発
この資料は2020/11/18に行われた、「自動化大好きエンジニアLT会」の発表資料です。
https://rakus.connpass.com/event/192101/
mako_makok
November 21, 2020
Tweet
Share
More Decks by mako_makok
See All by mako_makok
Kotlinにおける型の世界と エラーハンドリング / Type World and Error Handling in Kotlin
makomakok
2
560
Javaでも使えるKotlin OSSを目指すためのkotlin.jvmの利用とインターフェース設計/Use of kotlin.jvm and interface design for Kotlin OSS that can also be used in Java
makomakok
0
570
Slack_API_Wrapper_BoltでBotを爆速開発.pdf
makomakok
0
250
退屈なことはバッチにやらせよう
makomakok
1
480
Other Decks in Technology
See All in Technology
マルチテナントの実現におけるDB設計とRLS / Utilizing RSL in multi-tenancy
soudai
20
5k
AIエージェントが変えるソフトウェアのパラダイム
masahiro_nishimi
0
200
第131回 雲勉【オンライン】AWSを9年触ってきて経験した落とし穴、ハマったポイント
iret
6
480
ChatGPTのLT会-メモソフトにChatGPT入れると結構便利
okada_fuutass
0
150
プロデザ! BY リクルートvol.17_『じゃらんnet』公式アプリの高速リニューアル事例を大公開
recruitengineers
PRO
5
110
あなたの知らないバグバウンティの世界
eurekaberry
1
1.4k
Pass On What You Have Learned: Deploying to Production
ianlee1521
0
150
Simplifying Data Analysis & Visualization with Developer Tools & AI
nitya
1
220
Node-AI のリッチな WEB フロントエンドを支える技術
nenonaninu
2
970
How to Build a Strong Engineering Culture
alperhankendi
0
120
サーバーとは何かを理解して、コンテナ1つで実行しよう | PHPerKaigi2024
sadnessojisan
31
11k
We Fear Change, for DevOpsDays LA 2024
cote
PRO
0
130
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
319
20k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
67
38k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.2k
VelocityConf: Rendering Performance Case Studies
addyosmani
319
23k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
101
6.6k
Web development in the modern age
philhawksworth
201
10k
It's Worth the Effort
3n
180
27k
Stop Working from a Prison Cell
hatefulcrawdad
265
19k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
272
12k
Adopting Sorbet at Scale
ufuk
66
8.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
219
21k
Ruby is Unlike a Banana
tanoku
95
10k
Transcript
Firebase + Boltで始める 自動化のススメ @mako_makok 2020/11/18 自動化大好きエンジニア LT会
自己紹介 • 名前: 小林允(@mako_makok) • 所属: 株式会社ラクス • メインはバックエンドエンジニア •
フロントエンドもかじってる • Spring/Java/Kotlin/TypeScript/React
勉強会の情報を毎日通知してくれるSlackアプリを 作った
None
使ったもの • Cloud Functions(Firebase) • Firebase FireStore • Bolt For
JavaScript
Cloud Functions For Firebase • イベントをトリガーにしてバックエンドのコードを実行 • 200万/月 イベントまで無料 •
有料プラン(Blaze)じゃないと使えない
Firestore • NoSQL データベース • 無料プラン(Spark)でも使える • 容量: 1GB •
Read: 50000/日 • Write, Delete: それぞれ20000/日
正直botレベルでこんなに使わないので実質無料
Bolt For JavaScript • Slackアプリ構築用のフレームワーク • Slack API Team謹製 •
Slack API Client + Receiver + 便利な型定義 • TypeScriptで書かれている • For JavaScriptとあるだけあり多言語のSDKも提供されている ◦ Python, Java
Firestore slash command でモーダル 表示をRequest Functions モーダルを返却
Firestore slash command でモーダル 表示をRequest モーダルを生成 Formを送信 Formの内容を登録 Functions
Firestore slash command でモーダル 表示をRequest モーダルを返却 Formを送信 Formの内容を登録 Functions 1.
ユーザごとのパラ メータを取得 2. APIを叩く 3. webhookでそれぞれ のユーザにDM送信
なぜFirebase? • 他のmBaaSだとAWS Amplifyがある ◦ ちょっと前までAmplifyにはemulatorがなかった ▪ 今はAmplifyにもlocal emulatorがある ◦
AmplifyだとAppSyncがある ▪ Slack bot開発では特に使う必要がない • 個人的にFirebaseのほうが慣れている
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 })
Bolt for JavaScriptの利点 • Slackアプリのviewを作成するBlock Kitという仕組みがある ◦ section一個につきプロパティ5~10個程度書くので物量がある • 便利な型定義
◦ Blockの型定義 ◦ 他にもSlackは色々できる分Payloadが長くなりがち ◦ 型定義のおかげで補完を効かせながら書ける
None
FaaSでBolt利用時の注意点 export const expressReceiver = new ExpressReceiver({ signingSecret: config.slack.secret, endpoints:
'/events', processBeforeResponse: true }) これをつけ忘れない!
まとめ • Firebaseでは安く簡単で早くアプリ開発ができる • Boltを使うことでSlackアプリ開発に集中できる • processBeforeResponseは絶対に忘れないようにしましょう(戒め)