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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
620
nuxt.js で plugins を作る
mikakane
0
820
@ionic/vue で Web アプリを作ってみる
mikakane
0
3k
Laravel Package Development
mikakane
16
7k
Nuxt.js x Firebase で非同期に開発する
mikakane
0
2.2k
フロントエンドで作る理由
mikakane
1
1.3k
技術顧問の現場から - 制作と教育、学習と生産
mikakane
0
730
Other Decks in Programming
See All in Programming
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
990
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
270
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.5k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
310
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
170
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
Webフレームワークの ベンチマークについて
yusukebe
0
140
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
650
New "Type" system on PicoRuby
pocke
1
480
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
380
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.3k
Amusing Abliteration
ianozsvald
1
200
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
Balancing Empowerment & Direction
lara
6
1.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Between Models and Reality
mayunak
4
330
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Tell your own story through comics
letsgokoyo
1
950
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
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!