Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ためしてmBaaS
Search
yospig
December 24, 2019
Programming
89
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ためしてmBaaS
社内勉強会の公開用。
Firebaseの入門記録。
yospig
December 24, 2019
Other Decks in Programming
See All in Programming
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
610
AmebaブログはKMPから卒業します
kmars0605
0
200
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
すこし踏み込む CancellationToken
htkym
2
1.7k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
1.5k
JIS keyboard support in Omarchy
lef237
0
120
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Featured
See All Featured
Believing is Seeing
oripsolob
1
240
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
The untapped power of vector embeddings
frankvandijk
2
1.9k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Practical Orchestrator
shlominoach
192
12k
The SEO Collaboration Effect
kristinabergwall1
1
590
Design in an AI World
tapps
1
350
Transcript
2019/12/24 業務システム開発 @yospig ためしてmBaaS
ためすこと(目標) 2 • サーバレス開発 • NoSQL • ネイティブアプリ • なにかの認証
mBaaS is 何 3 • mBaaS(mobile backend as a Service)
• モバイル向けのバックエンドの面倒な部分をイロイロ提供 ◦ ユーザ認証(google, Twitter, Facebook, LINE, Mail, etc…) ◦ プッシュ通知 ◦ 監視 ◦ Webサイトホスティング ◦ リアルタイムデータベース
mBaaSいっぱいある 4 • Parse ◦ Facebook買収 • Firebase ◦
Google買収
5 • Microsoft Azure ◦ Azureのサービスのひとつ • AWS Mobile ◦
さらにAWS AppSync, AWS Amplifyなんてのもある • Cloud Endpoints ◦ FirebaseがあるのにGCPにもある ◦ GAEも似たような機能がある mBaaSいっぱいある
6 わけがわからない →軽く調べたことがある + 使ってる人がいる mBaaSいっぱいある
入門します 7
8 • GCPのプロジェクトと連携 ◦ Firebaseプロジェクト作成時にGCPプロジェクトを選択 ◦ GCPと連携しているとBlazeプラン(従量制)で固定らしい? ◦ google analyticsの連携推奨とのこと
◦ 注)Firebaseプロジェクトを消すとGCPも消える
9 • 開発環境 ◦ Firebase CLI, SDKをインストール ▪ % npm
install -g firebase-tools ▪ npm install firebase-functions@latest firebase-admin@latest --save ◦ ログイン ▪ % firebase login ▪ % firebase list リファレンス:https://firebase.google.com/docs/cli/?hl=ja
10 • 使うサービス ◦ Cloud Firestore ◦ Functions ◦ Authentication
(予定) ◦ ML Kit (予定)
11 • Cloud Firestore ◦ NoSQL ◦ Realtime Databaseよりも多彩で高速なクエリ ◦
設定 ▪ DatabaseはGCPのリージョンを指定する ▪ 一度決めると変更ができない ▪ 基本は `asia-northeast1(東京)` ▪ 注) Realtime Databaseは常に `us-central1`
Cloud Firestore is 何 12 • ドキュメント指向データベース ◦ 「テーブル」「行」はない ◦
「ドキュメント」に格納され「コレクション」にまとめる • データの型は用意されている ◦ e.g. ブール値, 数値, 文字列, 地理的位置, blob, timestamp ◦ 型の追加ができる(サイズは1MB制限) ◦ 型はあるが制約ではない
Cloud Firestore is 何 13 • ドキュメントのID取得と検索による取得はオブジェクトがちがう ◦ ID取得したオブジェクトに更新をかけることができない •
Where句の条件をor指定できない • Like検索が無い • joinの概念が無い(クライアントjoin)
14 • ドキュメント ◦ jsonによく似てる ◦ ネストされたオブジェクトはマップと呼ぶ ◦ 同一ドキュメントを1秒間に何度も更新できない Cloud
Firestore
15 • コレクション ◦ ドキュメントだけを格納するコンテナ ◦ コレクション内のドキュメント名は一意 ◦ ユーザID的な独自キーを指定 or
ランダムID ◦ コレクションは作成/削除はしない ◦ ドキュメントが作られればコレクションは勝手に作られる ◦ ドキュメントがなくなればコレクションも無くなる Cloud Firestore
16 • サブコレクション ◦ 設計思想的にドキュメントを軽量にする必要がある ◦ ドキュメントにサブコレクションを作って階層化できる ◦ 上位ドキュメントを削除してもサブコレクションは自動ではなくなら ない
手動削除する必要がある Cloud Firestore
17 `users` コレクションに `ishimaru` を表わすドキュメントを格納する + Users + Ishimaru
+ birth:1983/07/12 + Name + First:Yosuke + Last:Ishimaru ← コレクション ← ドキュメント ← フィールド ← フィールド(マップ)
18 date - 20191224 - year: 2019 - month: 12
- day: 24 - user - ishimaru - clock_in: ‘09:00’ - clock_out: ‘17:30’ REST イメージ パターンA 日付から引く /date/20191224/user/ishimaru/ 出退勤のデータ構造を表すなら?
19 date - 20191224 - year: 2019 - month: 12
- day: 24 - user - ishimaru - clock_in: ‘09:00’ - clock_out: ‘17:30’ RESTイメージ パターンA 日付から引く /date/20191224/user/ishimaru/ 出退勤のデータ構造を表すなら? 特定ユーザで期間を指定したい場合 - 日付のdocを絞り込む - 疑似likeか?orができないので制約が不安) - 対象のdateDocから更にユーザを絞り込むために ループする? → 面倒くさい
20 User - ishimaru - date - 20191224 - year:
2019 - month: 12 - day: 24 - clock in: ‘09:00’ - clock out: ‘17:30’ RESTイメージ パターンB 人から引く /user/ishimaru/date/20191224/ 出退勤のデータ構造を表すなら?
21 User - ishimaru - year - 2019 - year:
2019 - month - 12 - month: 12 - day: 24 - clock in: ‘09:00’ RESTイメージ パターンC サブコレクションネスト /user/ishimaru/year/2019/month/12/ 出退勤のデータ構造を表すなら?
22 DB設計が道半ばで解らない とりあえず作ってみたものデモ https:/ /github.com/yospig/checkin-fire
• モバイル • 認証 • ML Kit 23 To be
continued..