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
Undocumented!? firebase
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jumpei Takiyasu
March 08, 2019
Technology
0
310
Undocumented!? firebase
Jumpei Takiyasu
March 08, 2019
Tweet
Share
More Decks by Jumpei Takiyasu
See All by Jumpei Takiyasu
BIRのアーキテクチャと データ処理
juntaki
0
1.3k
BIRのアーキテクチャと 技術選定
juntaki
0
820
ROSでSLAMラジコンをつくる
juntaki
0
3.7k
6足歩行ロボットをつくった
juntaki
0
760
GoでAPIサーバをはやくつくる
juntaki
26
13k
3Dプリンタと4足歩行プロトタイプ
juntaki
0
6.7k
アンケートの集計システムを作った
juntaki
0
3.8k
Goならわかる Linuxのメモリ管理
juntaki
13
6.2k
社内勉強会の管理ツール Sugoi Meetupをつくった
juntaki
0
830
Other Decks in Technology
See All in Technology
元エンジニアPdM、IDEが恋しすぎてCursorに全業務を集約したら、スライド作成まで爆速になった話
doiko123
1
580
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.2k
マルチアカウント環境でSecurity Hubの運用!導入の苦労とポイント / JAWS DAYS 2026
genda
0
430
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
8
7.2k
トップマネジメントとコンピテンシーから考えるエンジニアリングマネジメント
zigorou
4
840
スクリプトの先へ!AIエージェントと組み合わせる モバイルE2Eテスト
error96num
0
150
[JAWSDAYS2026][D8]その起票、愛が足りてますか?AWSサポートを味方につける、技術的「ラブレター」の書き方
hirosys_
3
120
Google系サービスで文字起こしから勝手にカレンダーを埋めるエージェントを作った話
risatube
0
130
8万デプロイ
iwamot
PRO
2
230
OpenClawで回す組織運営
jacopen
3
690
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
860
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
2.5k
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
410
From π to Pie charts
rasagy
0
150
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
460
AI: The stuff that nobody shows you
jnunemaker
PRO
3
370
Claude Code のすすめ
schroneko
67
220k
Optimizing for Happiness
mojombo
378
71k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
160
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
69
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
380
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
380
Transcript
Undocumented!? Firebase Jumpei Takiyasu @juntaki M3, Inc.
name <- "Jumpei Takiyasu" company <- "M3, Inc." web <-
"https://juntaki.com" Me
Firebaseははまりどころ多め あんまりドキュメントや情報が無い
今回やりたかったこと エムスリー:ファイルをアップロード&サイトURLお知らせ クライアント: URLアクセス→アカウント作成→ファイルダウンロード 関係ない人:アカウント作成するも、ログイン画面から進めない ファイル送信時点ではアカウントがないので、次のようにした • メールアドレスにファイルを紐付ける • ファイルを送られてない人はそもそも入ることすらできない
Hostingでアクセス制限したい IPアドレス制限(QA環境) Auth通った人だけ →できない
AppEngine + Admin SDKで静的ファイル配信 IPアドレス制限 →ファイヤウォールルールで設定 Auth通った人だけ →CookieでTokenIDを渡して、Admin SDKで検証 オーバースペック感はある
※ここはGoで書きました
FirestoreのクエリがPermission denied 一覧は全件取得しておけば、権限があるやつだけくるだろ〜 →できない
セキュリティルールはフィルタではない 権限があるものだけヒットするようにクエリを出さないといけない
メール確認したのに、emailVerified == false • セキュリティルールでファイルのemailとアカウントの一致をチェック • emailVerified == trueも条件にせざるを得ない メール確認のURLを踏んでも、Permission
denied しかも、しばらくするとアクセスが通るという謎の現象
Firebaseにクエリを投げる前にGetIdToken(true)しましょう(強制再取得) Token取得時にどうだったのかが大事 GetIdToken() emailVerified ==false (2hours) メール確認 emailVerified ==false Firebase側の状態
フロントエンドの状態 emailVerified ==true Firestoreクエリ Token側がfalseだ から権限はない 時間 時間
Storageにアップロードしたファイルが壊れる アップロードは成功するし、サイズもあるのに、ファイルが壊れる
カスタムメタデータ名に”@”はダメ どこにも書いてない!(メールアドレスをキーにしたかった) →ハッシュ値にすることで回避
Storageのダウンロードログ残したい →できない Cloud functionsでもトリガは4つだけ、Cloud Audit Loggingも対象外 • アーカイブ • 削除
• 作成 • メタデータ変更
解決策:操作ログをDBに書く じゃあ、”log”ってCollection作って、JavaScrpitから書くようにして・・ →できない
“log”というコレクションは作れるが使えない 解決策:なんかそれ以外の名前にしましょう
まとめ いろいろハマったが、結果的に2日もかからずに新しいサービスができた (QA・デザイン込でも5人日程度) Firebaseは便利
Thank you! Jumpei Takiyasu @juntaki M3, Inc. https://juntaki.com