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 で作る Web アプリケーション
Search
mikakane
November 17, 2018
Programming
180
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Firebase で作る Web アプリケーション
mikakane
November 17, 2018
More Decks by mikakane
See All by mikakane
NestJS で始める怖くないバックエンド開発
mikakane
1
1.4k
コーディングがわからない
mikakane
0
160
Web制作現場のディレクションを支えるGitHub
mikakane
0
630
nuxt.js で plugins を作る
mikakane
0
830
@ionic/vue で Web アプリを作ってみる
mikakane
0
3k
Laravel Package Development
mikakane
16
7.1k
Nuxt.js x Firebase で非同期に開発する
mikakane
0
2.3k
フロントエンドで作る理由
mikakane
1
1.3k
技術顧問の現場から - 制作と教育、学習と生産
mikakane
0
730
Other Decks in Programming
See All in Programming
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
180
Go 1.27 における memory allocation の高速化
andpad
0
180
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
190
数百円から始めるRuby電子工作
tarosay
0
150
仕様駆動開発の消費期限
watany
20
8.3k
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
130
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
660
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
220
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Mind Mapping
helmedeiros
PRO
1
310
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
Deep Space Network (abreviated)
tonyrice
0
260
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
470
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
660
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Transcript
chatbox.inc 後藤 知宏 Firebase で作る Web アプリケーション
chatbox.inc 後 藤 知 宏 株式会社chatbox 代表取締役 関西フロントエンドUG代表 Twitter :
@_mikakane エンジニア / 技術顧問
chatbox.inc firebase google のアプリケーションプラットフォーム
chatbox.inc Firebase Authentication Realtime Database Storage Hosting Functions
chatbox.inc Firebase Authentication ユーザ認証の機能を提供するバックエンド コードを書かずに認証基盤を構築可能 Github や Google などの Oauth
認証アプリ開発も Redirect URL 向けの ngrok など構築不要 管理ユーザは Web GUI で一覧確認可能で、 各ユーザに割り振られる UID でユーザ管理可能
chatbox.inc 多様な認証フロー
chatbox.inc Setup Firebase firebase.initializeApp({ apiKey: process.env.FB_APIKEY, authDomain: process.env.FB_AUTHDOMAIN, databaseURL: process.env.FB_DATABASEURL,
projectId: process.env.FB_PROJECTID, storageBucket: process.env.FB_STORAGEBUCKET, messagingSenderId: process.env.FB_MESSAGINGSENDERID }) ▷ firebase.initializeApp で 作成したプロジェクトのヒモ付を行う。 ▷ ドメイン単位の認証制限が可能
chatbox.inc Login with Github const provider = new firebase.auth.GithubAuthProvider() provider.addScope("admin:org")
provider.addScope("repo") const result = await firebase.auth().signInWithPopup(provider) console.log(result.credential.accessToken) console.log(result.user) ▷ provider を作成して、signInWithPopup でポップアップの認証が可能 ▷ Promise ベースで認証結果が受け取れる ◦ ユーザ情報に加えてサービスの access token も
chatbox.inc Login Persistance firebase.auth().onAuthStateChanged(user => { if(user){ // ... }else{
// ... } }) ▷ ログインの永続化も可能 ▷ 一度ログインした状態であれば、再度認証を実行しなくても上記で true の if ブロックが走る
chatbox.inc Web上でのユーザ管理
chatbox.inc Firebase Realtime Database クラウド上に操作可能なデータストレージを展開 WebSockets を利用してリアルタイム性の高い同期が行える データベースはアプリケーション全体で共有 JSON 形式で階層化可能だが、深くするより横に広くするのが設
計上のベスト・プラクティス 認証ユーザとの連携も可能で、 uid ベースで 指定キーへの読み書き制限を行うことで ユーザ private なデータストアとしても利用可能
chatbox.inc vuexfire Vue.js / Nuxt.js で Firebase Realtime Database を利用する際のおすすめプラグイン
WS と JS フレームワークのストア連携は 自力で頑張るよりライブラリに頼ったほうが良さげ https://github.com/posva/vuexfire
chatbox.inc vuexfire import { firebaseMutations } from 'vuexfire' export const
store = () => { state: { ... }, mutations: { ...firebaseMutations }, actions: setTokenRef = firebaseAction(({bindFirebaseRef}) => { bindFirebaseRef(‘token’,firebase.database().ref(‘/token’)) }) } ▷ Vuex Store のルートの mutations に firebaseMutations をマッピング ▷ firebaseAction をコールして state と database のヒモ付を行う。 ▷ firebase.database().ref(‘/token’).set(token) のコールで、自動的に Vuex にも反映される形式
chatbox.inc 読み書きの管理と認証の連携
chatbox.inc 使ってみて Hosting / Functions あたりは Netlify を利用したほうが便利そう Authentication は想像以上に簡単で便利
あとから剥がす際のコストは気になる ( auth:export で csv 出力は可能なよう ) RealtimeDatabase は考え方に慣れが必要そう Rule の設定ミスでのお漏らしが怖い
chatbox.inc Thanks!