Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Firestoreを使ってメディアアプリを作ってみた

98 views

Published on

「集まれKotlin好き!Kotlin愛好会 vol.11 」で発表された資料です。

https://love-kotlin.connpass.com/event/130013/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Firestoreを使ってメディアアプリを作ってみた

  1. 1. Firestoreを使ってメディアアプリを 作ってみた
  2. 2. Masahiro Higuchi / 樋口雅拓 ● グリーグループのリミア株式会社で、LIMIA という住まい領域のメディアを 作っています。ゲーム会社ですが、最近はメディアに力を入れています。 ● 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何でも屋 です。4歳の娘のパパ。twitter: @mahiguch1 ● https://limia.jp/ ● https://arine.jp/ ● https://aumo.jp/ ● https://www.mine-3m.com/mine/
  3. 3. LIMIAとは? ● メディアサービス ● 記事一覧を表示し、タップすると 記事詳細を閲覧できる。 ● 記事詳細の最下部に別の記事 への回遊導線が付いている
  4. 4. 興味があること LIMIAに最も適したシステムは、何だろう? ● インフラ: Kubernetes/ECS/Lambda/CF/Firebase ● Backend FW: gin/Laravel/Django/Rails/protobuf/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ 選択肢が多すぎて、よくわからない! → とりあえず色々試してみよう。
  5. 5. 今回試したこと ● インフラ: Kubernetes/ECS/Lambda/CF/Firebase ● Backend FW: gin/Laravel/Django/Rails/protobuf/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ Firebase/Firestoreを使って、メディアアプリを作ってみました。 インフラ構築面倒なので、まずはアプリだけでできるものを。w
  6. 6. Firestoreの説明
  7. 7. Firestoreとは? ● FirestoreはFirebaseの機能の一つ。Document Databaseと呼ばれるも の。2019年1月31日にGAになった。 ● SDKがあり、iOS/Androidから直接アクセス可能。 ● データの入力はFirebase管理画面から可能。 —> つまり、アプリ実装のみで、ClientServer型のシステムを構築できる!
  8. 8. Firestoreのモデル ● Document DatabaseとはNoSQLの一種。 ● OracleやMySQLといったRDBでは事前にSchemaを定義しておくが、Document Databaseで は後から自由に変更できる。 jsonをそのまま格納できるイメージ。 ● データはDocumentという場所に格納され、それが Collectionでまとめられている。 ● 分かりやすくMySQLで例えると、Collectionがテーブル、Documentがレコード。 —> 正直分かりづらいと思うので、画面とコードを見ながら説明していきます!
  9. 9. Firestoreへのデータ入力方法 ● 左: コレクション ● 中: ドキュメント ● 右: ドキュメントの中身 管理画面があるので、ここから 入力できる。
  10. 10. Firestoreからのデータ取得方法 Collectionと Documentを指 定することで取得 可能。
  11. 11. Firestoreから複数データ取得方法 SQLのように whereで絞り込み が可能
  12. 12. では本題
  13. 13. 今回作った検証アプリについて 記事の一覧を表示したい。画面には、記事画像、記事タイトル、ユーザ名が表示され ている。Modelとしては、Firestoreで次のように持つ。 ● Article: id, title, image_url, user_id ● User: id, name つまり、ArticleとUserの両方のデータを使って一覧表示を作る。 普通はRDBでjoinするかBFF APIを作るが、Firestoreで実装するとどうなるか試して みた。
  14. 14. まとめ ● 体感速度は思ったより早い。 ● データ取得処理がかなり複雑になる。 ● 次は同じモデルをgolang+grpcのサーバと通信させて速度比較してみた い。 ご静聴、ありがとうございました!

×