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

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

Recommended

RecommendWidgetを作った話 by
RecommendWidgetを作った話RecommendWidgetを作った話
RecommendWidgetを作った話gree_tech
983 views14 slides
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中 by
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中gree_tech
766 views18 slides
LIMIAでのBigQuery活用事例 by
LIMIAでのBigQuery活用事例LIMIAでのBigQuery活用事例
LIMIAでのBigQuery活用事例gree_tech
4.2K views18 slides
gRPCを使ったメディアサービス by
gRPCを使ったメディアサービスgRPCを使ったメディアサービス
gRPCを使ったメディアサービスgree_tech
2.1K views17 slides
機械学習輪講会資料 by
機械学習輪講会資料機械学習輪講会資料
機械学習輪講会資料gree_tech
2.3K views24 slides
Fuelphpのテストをdocker-composeとJenkinsで実行 by
Fuelphpのテストをdocker-composeとJenkinsで実行Fuelphpのテストをdocker-composeとJenkinsで実行
Fuelphpのテストをdocker-composeとJenkinsで実行gree_tech
1.3K views14 slides

More Related Content

What's hot

公式部活動技術書典部の活動紹介 by
公式部活動技術書典部の活動紹介公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介gree_tech
1.9K views22 slides
PHPからgoへの移行で分かったこと by
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
6.4K views39 slides
携帯電話時代から続くモバイルゲームとアプリの関係 by
携帯電話時代から続くモバイルゲームとアプリの関係携帯電話時代から続くモバイルゲームとアプリの関係
携帯電話時代から続くモバイルゲームとアプリの関係gree_tech
1.4K views155 slides
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さまDaiki Hirozawa
2.6K views25 slides
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...Members_corp
5.6K views37 slides
WordPressとS3で落ちないコーポレートサイトを立ち上げよう by
WordPressとS3で落ちないコーポレートサイトを立ち上げようWordPressとS3で落ちないコーポレートサイトを立ち上げよう
WordPressとS3で落ちないコーポレートサイトを立ち上げようIchiro Tsuji
4.2K views26 slides

What's hot(20)

公式部活動技術書典部の活動紹介 by gree_tech
公式部活動技術書典部の活動紹介公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介
gree_tech1.9K views
PHPからgoへの移行で分かったこと by gree_tech
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech6.4K views
携帯電話時代から続くモバイルゲームとアプリの関係 by gree_tech
携帯電話時代から続くモバイルゲームとアプリの関係携帯電話時代から続くモバイルゲームとアプリの関係
携帯電話時代から続くモバイルゲームとアプリの関係
gree_tech1.4K views
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by Daiki Hirozawa
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa2.6K views
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by Members_corp
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
Members_corp5.6K views
WordPressとS3で落ちないコーポレートサイトを立ち上げよう by Ichiro Tsuji
WordPressとS3で落ちないコーポレートサイトを立ち上げようWordPressとS3で落ちないコーポレートサイトを立ち上げよう
WordPressとS3で落ちないコーポレートサイトを立ち上げよう
Ichiro Tsuji4.2K views
How are AsakusaSatellite growing with mzp by Ryo Suetsugu
How are AsakusaSatellite growing with mzpHow are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzp
Ryo Suetsugu9.4K views
Realtime database、Clean Architectureを組み合わせた導入事例 by Tatsuya Kikuchi
Realtime database、Clean Architectureを組み合わせた導入事例Realtime database、Clean Architectureを組み合わせた導入事例
Realtime database、Clean Architectureを組み合わせた導入事例
Tatsuya Kikuchi603 views
【サンプル】 Instagram開設マニュアルサービス資料 by AAsolution
【サンプル】 Instagram開設マニュアルサービス資料【サンプル】 Instagram開設マニュアルサービス資料
【サンプル】 Instagram開設マニュアルサービス資料
AAsolution18.5K views
Matcherの紹介@ITリーダー育成キャンプ by noriyaz
Matcherの紹介@ITリーダー育成キャンプMatcherの紹介@ITリーダー育成キャンプ
Matcherの紹介@ITリーダー育成キャンプ
noriyaz369 views
月間6アプリリリースの開発現場でのQiita:Team活用法 by Naoya Mouri
月間6アプリリリースの開発現場でのQiita:Team活用法月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法
Naoya Mouri9.1K views
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増 by 明穂 足立
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
明穂 足立227 views
Swiftビギナーズ倶楽部でのプレゼンver02 by Tomiji Suzuki
Swiftビギナーズ倶楽部でのプレゼンver02Swiftビギナーズ倶楽部でのプレゼンver02
Swiftビギナーズ倶楽部でのプレゼンver02
Tomiji Suzuki374 views
Androidの会のご紹介 by 高見 知英
Androidの会のご紹介Androidの会のご紹介
Androidの会のご紹介
高見 知英632 views
Trend of Augmented Reality (for Event tool Japan) 2013 by Etsuji Kameyama
Trend of Augmented Reality (for Event tool Japan) 2013Trend of Augmented Reality (for Event tool Japan) 2013
Trend of Augmented Reality (for Event tool Japan) 2013
Etsuji Kameyama3.2K views
NIFTYCloud C4SA FacebookNight vol.11 by Yuichi Saotome
NIFTYCloud C4SA FacebookNight vol.11NIFTYCloud C4SA FacebookNight vol.11
NIFTYCloud C4SA FacebookNight vol.11
Yuichi Saotome838 views
IoT.kyoto事例紹介(2017年9月) by Ichiro Tsuji
IoT.kyoto事例紹介(2017年9月)IoT.kyoto事例紹介(2017年9月)
IoT.kyoto事例紹介(2017年9月)
Ichiro Tsuji439 views
Yumemi.swift #6 2020.5.15 presentation tomiji suzuki by Tomiji Suzuki
Yumemi.swift #6 2020.5.15 presentation tomiji suzukiYumemi.swift #6 2020.5.15 presentation tomiji suzuki
Yumemi.swift #6 2020.5.15 presentation tomiji suzuki
Tomiji Suzuki219 views

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
729 views36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
229 views13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
1K views18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
1.9K views84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
347 views116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
685 views31 slides

More from gree_tech(20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech729 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech685 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech601 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
gree_tech305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
gree_tech576 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
gree_tech308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
gree_tech432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech694 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech397 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech752 views

Recently uploaded

ウォーターフォール開発で生 産性を測る指標 by
ウォーターフォール開発で生 産性を測る指標ウォーターフォール開発で生 産性を測る指標
ウォーターフォール開発で生 産性を測る指標Kouhei Aoyagi
55 views13 slides
Najah Matsuo Self Introduction by
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self IntroductionNajahMatsuo
10 views29 slides
システム概要.pdf by
システム概要.pdfシステム概要.pdf
システム概要.pdfTaira Shimizu
44 views1 slide
概要.pdf by
概要.pdf概要.pdf
概要.pdfTaira Shimizu
6 views1 slide
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私修治 松浦
208 views36 slides
onewedge_companyguide1 by
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1ONEWEDGE1
66 views22 slides

Recently uploaded(6)

ウォーターフォール開発で生 産性を測る指標 by Kouhei Aoyagi
ウォーターフォール開発で生 産性を測る指標ウォーターフォール開発で生 産性を測る指標
ウォーターフォール開発で生 産性を測る指標
Kouhei Aoyagi55 views
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo10 views
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦208 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1
ONEWEDGE166 views

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