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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
mako_makok
November 21, 2020
Technology
15k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Firebase + BoltではじめるSlackアプリ開発
この資料は2020/11/18に行われた、「自動化大好きエンジニアLT会」の発表資料です。
https://rakus.connpass.com/event/192101/
mako_makok
November 21, 2020
More Decks by mako_makok
See All by mako_makok
Kotlinにおける型の世界と エラーハンドリング / Type World and Error Handling in Kotlin
makomakok
3
1.2k
Javaでも使えるKotlin OSSを目指すためのkotlin.jvmの利用とインターフェース設計/Use of kotlin.jvm and interface design for Kotlin OSS that can also be used in Java
makomakok
0
960
Slack_API_Wrapper_BoltでBotを爆速開発.pdf
makomakok
0
360
退屈なことはバッチにやらせよう
makomakok
1
650
Other Decks in Technology
See All in Technology
【FinOps】データドリブンな意思決定を目指して
z63d
3
540
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
630
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
120
AIは、人間らしい仕事の夢を見るか?─ AI時代のtoB/toEプロダクトを再設計する
techtekt
PRO
0
190
デジタル・デザイン構想 by Sayaka Ishizuka
y150saya
0
140
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
210
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
160
4人目のSREはAgent
tanimuyk
0
320
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
1
940
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
250
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
230
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
990
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
290
Tell your own story through comics
letsgokoyo
1
980
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Building Adaptive Systems
keathley
44
3.1k
Evolving SEO for Evolving Search Engines
ryanjones
0
230
AI: The stuff that nobody shows you
jnunemaker
PRO
8
740
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
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は絶対に忘れないようにしましょう(戒め)