Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINEミニアプリ/LIFFアプリを サクッと作りたいならFirebase

LINEミニアプリ/LIFFアプリを サクッと作りたいならFirebase

このセッションのねらい

・LINEミニアプリ / LIFFアプリを作るときにFirebaseを選択肢に入れていただくこと
・Firebaseを使う場合の良い点・つらい点を抑えていただくこと

まとめ

Firebaseの良い点
・Firebaseは All in One
 ・自分でシステム構成を考えなくて良い
・Firebaseは認証が楽
 ・LINEミニアプリのめんどうな認証も突破できる
・Firebaseならリアルタイムにデータ更新
 ・Firebaseの一番の目玉機能。めちゃくちゃ楽できます。

Firebaseのつらい点
・ベンダーロックイン
 ・長い付き合いになる覚悟はしよう
・Firestoreはスキーマレス
 ・プロジェクトが大きくなったら、アプリケーションを工夫しよう
・コールドスタート(解決済み)
 ・お金で解決できるようになりました
・Emulatorが弱い(解決済み)
 ・最近ようやく、まともに動くようになりました

C9237e9aa6c8fe028a484c9621991423?s=128

捧隆二

June 29, 2022
Tweet

More Decks by 捧隆二

Other Decks in Programming

Transcript

  1. LINE Developer Community LINEと繋がるプラットフォーム集合〜サーバレス特集 LINEミニアプリ/LIFFアプリを サクッと作りたいならFirebase 2022.06.19 捧 隆⼆ 1

  2. ⾃⼰紹介 捧 隆⼆ (ささげ りゅうじ) ITエンジニア ⼤学院在学中に⼤阪でITスタートアップを起業。 上京後、外資系ITコンサル、フィンテック企業を経験。 2019年にボイスアップラボの創業メンバーとして参画。LINE関連 の開発に従事。

    LINE BOOT AWARDS 2018 部⾨賞受賞。2021年よりLINE API Expert。 趣味は温泉めぐり。 2 Arahabica @Arahabica1
  3. ⽬次 1. ⾃⼰紹介 2. このセッションの狙い 3. LINEミニアプリに載せるサービスの特徴 4. Firebaseの良い点 5.

    Firebaseのつらい点 6. まとめ 3
  4. このセッションのねらい • LINEミニアプリ / LIFFアプリを作るときにFirebaseを選択肢に⼊れてい ただくこと • Firebaseを使う場合の良い点・つらい点を抑えていただくこと 4

  5. LINEミニアプリに載せるサービスの特徴 5

  6. LINEミニアプリに載せるサービスの特徴 • ⽐較的シンプルなサービス • オフラインでQRコードを読んでサクッと実⾏ 6

  7. LINEミニアプリに載せるサービスの特徴 • ⽐較的シンプルなサービス • オフラインでQRコードを読んでサクッと実⾏ Ø 開発もサクッと作りたい 7

  8. インフラはどこにしよう🤔 8

  9. Firebaseが良いらしいよ🔥 9

  10. Firebaseの良い点 10

  11. Firebaseの良い点 • Firebaseは All in One • Firebaseは認証が楽 • Firebaseならリアルタイムにデータ更新

    11
  12. Firebaseは All in One 12

  13. Firebaseは All in One • Firebase以外のクラウドでシステム構築する時 13

  14. Firebaseは All in One • Firebase以外のクラウドでシステム構築する時 1. システム構成を考える 14 CDN

    LB Auth App App Storage DB
  15. Firebaseは All in One • Firebase以外のクラウドでシステム構築する時 1. システム構成を考える 2. システム構成をYAMLで記述する

    15
  16. Firebaseは All in One • Firebase以外のクラウドでシステム構築する時 1. システム構成を考える 2. システム構成をYAMLで記述する

    3. デプロイツールを使ってデプロイする 16
  17. Firebaseは All in One • Firebaseでシステム構築する時 17

  18. Firebaseは All in One • Firebaseでシステム構築する時 1. システム構成は最初からできています 18 Firestore

    (DB) Cloud Functions Authentication Cloud Storage Hosting
  19. Firebaseは All in One • Firebaseでシステム構築する時 1. システム構成は最初からできています 2. 使いたい機能を有効化します

    19 Firestore (DB) Cloud Functions Authentication Cloud Storage Hosting
  20. Firebaseは All in One • Firebaseでシステム構築する時 1. システム構成は最初からできています 2. 使いたい機能を有効化します

    3. デプロイします 20
  21. Firebaseは All in One • Firebaseでシステム構築する時 1. システム構成は最初からできています 2. 使いたい機能を有効化します

    3. デプロイします Ø ⾃分でシステム構成を考えなくて良いし書かなくて良い 21
  22. Firebaseは All in One • Firebaseでシステム構築する時 1. システム構成は最初からできています 2. 使いたい機能を有効化します

    3. デプロイします Ø ⾃分でシステム構成を考えなくて良いし書かなくて良い 22 拡張性が気になる… 😅
  23. Firebaseは All in One • Firebaseでシステムを拡張したいとき • FirebaseはGCPの⼀員なのでGCPの 他のサービスと連携可能 23

    Firestore (DB) Cloud Functions Authentication Cloud Storage Hosting Google Cloud の他のサービス
  24. Firebaseは認証が楽 24

  25. Firebaseは認証が楽 • LINEミニアプリは認証が楽 25

  26. Firebaseは認証が楽 • LINEミニアプリは認証が楽 • そもそもユーザー登録画⾯がありません • LINE内のユーザー情報を使えるから 26 Excellent Mini

    App すぐ使える
  27. Firebaseは認証が楽 • LINEミニアプリはユーザーにとって認証が楽 • そもそもユーザー登録画⾯がありません • LINE内のユーザー情報を使えるから 27 Excellent Mini

    App すぐ使える
  28. Firebaseは認証が楽 • LINEミニアプリは開発者にとって認証がたいへん 28

  29. Firebaseは認証が楽 • LINEミニアプリは開発者にとって認証がたいへん 1. ミニアプリを初期化 29 LINE ミニアプリ Server 1.

    初期化
  30. Firebaseは認証が楽 • LINEミニアプリは開発者にとって認証がたいへん 1. ミニアプリを初期化 2. トークン取得 30 LINE ミニアプリ

    Server 1. 初期化 2. トークン取得
  31. Firebaseは認証が楽 • LINEミニアプリは開発者にとって認証がたいへん 1. ミニアプリを初期化 2. トークン取得 3. トークン送付 31

    LINE ミニアプリ Server 1. 初期化 2. トークン取得 3. トークン送付
  32. Firebaseは認証が楽 • LINEミニアプリは開発者にとって認証がたいへん 1. ミニアプリを初期化 2. トークン取得 3. トークン送付 4.

    トークン検証 32 LINE ミニアプリ Server 1. 初期化 2. トークン取得 3. トークン送付 4. トークン検証
  33. Firebaseは認証が楽 • LINEミニアプリは開発者にとって認証がたいへん 1. ミニアプリを初期化 2. トークン取得 3. トークン送付 4.

    トークン検証 5. 認証情報共有 33 LINE ミニアプリ Server 1. 初期化 2. トークン取得 3. トークン送付 4. トークン検証 5. 認証情報共有
  34. Firebaseは認証が楽 • LINEミニアプリは開発者にとって認証がたいへん 1. ミニアプリを初期化 2. トークン取得 3. トークン送付 4.

    トークン検証 5. 認証情報共有 Ø ここが⼀番たいへん Ø 認証ライブラリが想定していない 34 LINE ミニアプリ Server 1. 初期化 2. トークン取得 3. トークン送付 4. トークン検証 5. 認証情報共有
  35. Firebaseは認証が楽 • Firebase Authenticationのカスタムトークン作成機能を使うと対応可能 35

  36. Firebaseは認証が楽 • Firebase Authenticationのカスタムトークン作成機能を使うと対応可能 1. ミニアプリを初期化 2. トークン取得 3. トークン送付

    4. トークン検証 36 LINE Cloud Functions Authentication 1. 2. 3. 4.
  37. Firebaseは認証が楽 • Firebase Authenticationのカスタムトークン作成機能を使うと対応可能 1. ミニアプリを初期化 2. トークン取得 3. トークン送付

    4. トークン検証 5. カスタムトークン作成 37 LINE Cloud Functions Authentication 1. 2. 3. 4. 5. トークン作成
  38. Firebaseは認証が楽 • Firebase Authenticationのカスタムトークン作成機能を使うと対応可能 1. ミニアプリを初期化 2. トークン取得 3. トークン送付

    4. トークン検証 5. カスタムトークン作成 6. カスタムトークン取得 38 LINE Cloud Functions Authentication 1. 2. 3. 4. 5. トークン作成 6. トークン取得
  39. Firebaseは認証が楽 • Firebase Authenticationのカスタムトークン作成機能を使うと対応可能 1. ミニアプリを初期化 2. トークン取得 3. トークン送付

    4. トークン検証 5. カスタムトークン作成 6. カスタムトークン取得 7. カスタムトークンで認証 39 LINE Cloud Functions Authentication 1. 2. 3. 4. 5. トークン作成 6. トークン取得 7. トークンで認証
  40. Firebaseは認証が楽 • Firebase Authenticationのカスタムトークン作成機能を使うと対応可能 1. ミニアプリを初期化 2. トークン取得 3. トークン送付

    4. トークン検証 5. カスタムトークン作成 6. カスタムトークン取得 7. カスタムトークンで認証 • 詳細は記事参照 • https://qiita.com/Arahabica/items/8f5c7472ded92128535f 40 LINE Cloud Functions Authentication 1. 2. 3. 4. 5. トークン作成 6. トークン取得 7. トークンで認証
  41. Firebaseならリアルタイムにデータ更新 41

  42. Firebaseならリアルタイムにデータ更新 • Firestore • Firebaseの提供するNoSQLデータベース • クライアントから直接DBを読める • データの変更をリアルタイムで監視できる 42

  43. Firebaseならリアルタイムにデータ更新 • Firestore • Firebaseの提供するNoSQLデータベース • クライアントから直接DBを読める • データの変更をリアルタイムで監視できる Ø

    Firebaseの⼀番の⽬⽟機能。めちゃくちゃ楽できます。 43
  44. Firebaseならリアルタイムにデータ更新 • Firestore • Firebaseの提供するNoSQLデータベース • クライアントから直接DBを読める • データの変更をリアルタイムで監視できる Ø

    Firebaseの⼀番の⽬⽟機能。めちゃくちゃ楽できます。 44 セキュリティ的にちょっと 😅
  45. Firebaseならリアルタイムにデータ更新 • Firestore • Firebaseの提供するNoSQLデータベース • クライアントから直接DBを読める • データの変更をリアルタイムで監視できる •

    誰がどのデータを読み書きできるかを設定できる 45
  46. Firebaseのつらい点 • ベンダーロックイン • Firestoreはスキーマレス • コールドスタート • エミュレーターが弱い 46

  47. Firebaseのつらい点 • ベンダーロックイン • Firestoreはスキーマレス • コールドスタート(解決済み) • エミュレーターが弱い(解決済み) 47

  48. ベンダーロックイン • Firestoreの挙動がかなり特殊 • ただ、NoSQLは基本的にそれぞれ特徴があって互換性なし Ø 覚悟して使うしかない 48

  49. ベンダーロックイン • Firestoreの挙動がかなり特殊 • ただ、NoSQLは基本的にそれぞれ特徴があって互換性なし Ø 覚悟して使うしかない • 余談 •

    Supabase • FirebaseのOSS代替を⾃称するプロダクト • “Supabase is an open source Firebase alternative.” • 実際はRDBベースでちょっと違いそう Ø 気になる⽅は調べてみてください 49
  50. Firestoreはスキーマレス • Firestoreは事前にスキーマ(テーブル定義)を定義する必要なし • 多くのNoSQLに共通の特徴 50

  51. Firestoreはスキーマレス • Firestoreは事前にスキーマ(テーブル定義)を定義する必要なし • 多くのNoSQLに共通の特徴 • 開発開始当初は楽だが、⻑くなるとむしろ負担に Ø プロジェクトが成⻑したらアプリケーションレイヤーでスキーマを管 理しよう

    51
  52. コールドスタート • Cloud Functions for Firebaseはコールドスタート • アクセスがないときにはサーバが停⽌ • 初回アクセス時にはサーバの⽴ち上げに2秒ほどかかる

    52 今どき、アクセスして2秒以上待つのは… 😅
  53. コールドスタート(解決済み) 53 • Cloud Functions for Firebaseはコールドスタート • アクセスがないときにはサーバが停⽌ •

    初回アクセス時にはサーバの⽴ち上げに2秒ほどかかる • 最⼩インスタンスが設定可能に🎉 (2021/08) • 最⼩インスタンスを1に設定しておけば、常に1インスタンス起動 • ただ、その分コストはかかります
  54. エミュレーターが弱い • 開発中の動作確認・テストでいちいちデプロイするのは⾯倒 Ø Firebase Emulator Suiteを使う Ø ローカルで動くFirebaseのエミュレーター 54

  55. エミュレーターが弱い • 開発中の動作確認・テストでいちいちデプロイするのは⾯倒 Ø Firebase Emulator Suiteを使う Ø ローカルで動くFirebaseのエミュレーター •

    Firebase Emulator Suiteの制限 • Firestoreの変更をトリガーにCloud Functionを実⾏できない • Firebase Authenticationを実⾏できない • Firebase Storageを実⾏できない • Firebase Extentionsを実⾏できない 55
  56. エミュレーターが弱い • 開発中の動作確認・テストでいちいちデプロイするのは⾯倒 Ø Firebase Emulator Suiteを使う Ø ローカルで動くFirebaseのエミュレーター •

    Firebase Emulator Suiteの制限 • Firestoreの変更をトリガーにCloud Functionを実⾏できる🎉 (2019/05 ~ ) • Firebase Authenticationを実⾏できない • Firebase Storageを実⾏できない • Firebase Extentionsを実⾏できない 56
  57. エミュレーターが弱い • 開発中の動作確認・テストでいちいちデプロイするのは⾯倒 Ø Firebase Emulator Suiteを使う Ø ローカルで動くFirebaseのエミュレーター •

    Firebase Emulator Suiteの制限 • Firestoreの変更をトリガーにCloud Functionを実⾏できる (2019/05 ~ ) • Firebase Authenticationを実⾏できる🎉 (2020/10 ~ ) • Firebase Storageを実⾏できない • Firebase Extentionsを実⾏できない 57
  58. エミュレーターが弱い • 開発中の動作確認・テストでいちいちデプロイするのは⾯倒 Ø Firebase Emulator Suiteを使う Ø ローカルで動くFirebaseのエミュレーター •

    Firebase Emulator Suiteの制限 • Firestoreの変更をトリガーにCloud Functionを実⾏できる (2019/05 ~ ) • Firebase Authenticationを実⾏できる (2020/10 ~ ) • Firebase Storageを実⾏できる🎉 (2021/05 ~ ) • Firebase Extentionsを実⾏できない 58
  59. エミュレーターが弱い • 開発中の動作確認・テストでいちいちデプロイするのは⾯倒 Ø Firebase Emulator Suiteを使う Ø ローカルで動くFirebaseのエミュレーター •

    Firebase Emulator Suiteの制限 • Firestoreの変更をトリガーにCloud Functionを実⾏できる (2019/05 ~ ) • Firebase Authenticationを実⾏できる (2020/10 ~ ) • Firebase Storageを実⾏できる (2021/05 ~ ) • Firebase Extentionsを実⾏できる🎉 (2022/05 ~ ) 59
  60. Emulatorが弱い(解決済み) • 開発中の動作確認・テストでいちいちデプロイするのは⾯倒 Ø Firebase Emulator Suiteを使う Ø ローカルで動くFirebaseのエミュレーター •

    Firebase Emulator Suiteの制限(解決済み) • Firestoreの変更をトリガーにCloud Functionを実⾏できる (2019/05 ~ ) • Firebase Authenticationを実⾏できる (2020/10 ~ ) • Firebase Storageを実⾏できる (2021/05 ~ ) • Firebase Extentionsを実⾏できる (2021/05 ~ ) 60
  61. まとめ 61

  62. Firebaseの良い点 • Firebaseは All in One Ø ⾃分でシステム構成を考えなくて良い • Firebaseは認証が楽

    Ø LINEミニアプリのめんどうな認証も突破できる • Firebaseならリアルタイムにデータ更新 Ø Firebaseの⼀番の⽬⽟機能。めちゃくちゃ楽できます。 62
  63. Firebaseのつらい点 • ベンダーロックイン Ø ⻑い付き合いになる覚悟はしよう • Firestoreはスキーマレス Ø プロジェクトが⼤きくなったら、アプリケーションを⼯夫しよう •

    コールドスタート(解決済み) Ø お⾦で解決できるようになりました • Emulatorが弱い(解決済み) Ø 最近ようやく、まともに動くようになりました 63
  64. ご静聴ありがとうございました 64