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を使って簡単にサイト作成!半年でそれっぽい クイズアプリを作成する!
Search
YukiWatanabe
February 02, 2023
Programming
0
170
firebaseを使って簡単にサイト作成!半年でそれっぽい クイズアプリを作成する!
https://pwanight.connpass.com/event/194223/
で発表した資料です。
YukiWatanabe
February 02, 2023
Tweet
Share
More Decks by YukiWatanabe
See All by YukiWatanabe
Chrome拡張機能の新機能 Side Panel APIについて
yutaroud
0
1.9k
Other Decks in Programming
See All in Programming
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
180
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
240
Understanding Apache Lucene - More than just full-text search
spinscale
0
140
Java 21/25 Virtual Threads 소개
debop
0
280
Claude Codeログ基盤の構築
giginet
PRO
7
3.7k
20260315 AWSなんもわからん🥲
chiilog
2
180
KagglerがMixSeekを触ってみた
morim
0
320
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
110
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
160
飯MCP
yusukebe
0
370
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.1k
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
570
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Amusing Abliteration
ianozsvald
0
140
Skip the Path - Find Your Career Trail
mkilby
1
89
Joys of Absence: A Defence of Solitary Play
codingconduct
1
320
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
220
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
What's in a price? How to price your products and services
michaelherold
247
13k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
860
Claude Code のすすめ
schroneko
67
220k
Transcript
2020/11/18 PWA Night vol.22 firebaseで簡単にサイトを作りましょう! 半年でそれっぽい クイズアプリを作成する
サービスの紹介 ◦クイズを作ったり、解いたりできる ◦何かを「学びたい」時に使ってもらう ▪繰り返し解いて学べる ▪問題を作ることで学びになる ここからアクセスできます 🙂
今日話すこと 機能紹介 • クイズ解答機能 • クイズ作成機能 • マイページ • メディア
システムの裏側 • こんな技術を使いました • 工夫した箇所 \こんなことを話します!/
MDNでは 安全なコンテキスト (HTTPS)、1つ以上のサービスワー カー、マニフェストファイルを持つ※1 みんなのスタディはサービスワーカーは使ってません。 (オフライン利用等できないのでご認識お願いします) ※1 https://developer.mozilla.org/ja/docs/Web/Progressive_web_apps 前置き PWAの定義(諸説あります)
01 機能紹介
機能紹介① クイズを解く
機能紹介② クイズを作る マイページ
機能紹介③ メディア
02 システムの裏側 Behind the system
サイト構成 route53 firestore firebase Auth firebase hosting cloud function react
サイト構成 route53 firestore firebase Auth firebase hosting cloud function react
OGP対応 OGPの例 Botによっては、jsを正しく解釈できない可能性があるので、 予めビルドしたものを解釈させる必要がある。
OGP対応 "hosting": { "public": "build", "rewrites": [ { "source": "/answer/**",
"function": "returnHtmlWithOGP" }, ~~~~~~ ], ~~~~~~~ } firebase.jsonに特定のリクエストのときだけ、 別途定義したfunctionを使うように指定するだけ!
サイト構成 route53 firestore firebase Auth firebase hosting cloud function react
持っているデータ クイズデータ ユーザデータ
クイズデータについて クイズデータ quiz: { categories: { label: “ビジネス” value: “business”
} userId: 1 creater: “なべ” title: “マーケ用語検定” description: “〜〜〜” content: { 0: { question: “CTAはなんの略” explanation: “マーケ用語で~~” answer: “Call to Action” false1: “~~~” false2: “~~~” } 1: {~~} } limited: false createdAt: xxxx/xx/xx updatedAt: xxxx/xx/xx }
なぜこんなデータ構成? 1書き込み、読み込みあたりに料金がかかるため
キャッシュもできます cloud function firebase hosting 予めfirestoreから データ取得 キャッシュした データから読み込み
使ってみてよかったこと • 環境構築がかなり楽、スピードは早い。 • 関連機能がかなりあるので、簡単なアプリ作成はかなり 楽
使ってみてつらかったこと • 従量課金のため、いつ課金されるかが怖い ◦ Alertの設定はマスト 無料プランもあるが、cloud functionsが使えない。 • インフラ側の細かいチューニングがやりづらい
Thanks ありがとうございました!