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
3
990
Javaでも使えるKotlin OSSを目指すためのkotlin.jvmの利用とインターフェース設計/Use of kotlin.jvm and interface design for Kotlin OSS that can also be used in Java
makomakok
0
830
Slack_API_Wrapper_BoltでBotを爆速開発.pdf
makomakok
0
320
退屈なことはバッチにやらせよう
makomakok
1
580
Other Decks in Technology
See All in Technology
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
10
3.1k
Snowflake Summit 2025全体振り返り / Snowflake Summit 2025 Overall Review
mtpooh
2
170
TerraformをSaaSで使うとAzureの運用がこんなに楽ちん!HCP Terraformって何?
mnakabayashi
0
300
Claude Code Actionを使ったコード品質改善の取り組み
potix2
PRO
2
800
從四件事帶你見識見識 事件驅動架構設計 (EDA)
line_developers_tw
PRO
0
960
DroidKnights 2025 - Jetpack XR 살펴보기: XR 개발은 어떻게 이루어지는가?
heesung6701
1
160
DB 醬,嗨!哪泥嘎斯基?
line_developers_tw
PRO
0
1.1k
Oracle Cloud Infrastructure:2025年6月度サービス・アップデート
oracle4engineer
PRO
1
120
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
340
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
230
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
640
2025/6/21 日本学術会議公開シンポジウム発表資料
keisuke198619
2
470
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Building Applications with DynamoDB
mza
95
6.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
4 Signs Your Business is Dying
shpigford
184
22k
How to train your dragon (web standard)
notwaldorf
92
6.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
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は絶対に忘れないようにしましょう(戒め)