gRPCを使ったメディアサービス

gree_tech
gree_techgree_tech
gRPCを使ったメディアサービス
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/EC2/CF/Firebase
● Backend FW: gin/Laravel/Django/Rails/gRPC/使わない
● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ
選択肢が多すぎて、よくわからない! → とりあえず色々試してみよう。
今回試したこと
● インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase
● Backend FW: gin/Laravel/Django/Rails/gRPC/使わない
● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ
gRPCを使って、KotlinでgRPC Serverとメディアアプリを作ってみました
。
gRPCの説明
gRPCとは?
● RPCを実現する通信方式の一つ
● Googleが作っている
● Protocol buffersという形式で
データをシリアライズして送受
信している。
Protocol bufferとは?
● Request/Responseのフォーマットを
指定すると、それでシリアライズして
くれる。
● 通信部分のコードを自動生成してくれ
るので、そこに時間を割かれるのを防
げる。
● ただし、エラー定義は書けないので、
そこはコメントで書いておくなど、チ
ーム内でルールを決めておく必要があ
る。
では本題
今回作った検証アプリについて
記事の一覧を表示したい。画面には、記事画像、記事
タイトル、ユーザ名が表示されている。Modelとしては
、次のように持つ。
● Article: Id, Title, ImageUrl, User
● User: Id, Name
これをprotobufに定義し、gRPCで通信するとどうなる
か試してみた。
User.proto / Article.proto
ArticleList.proto
build.gradleに以下のような
記述をしておくと、コード
の自動生成とそれを含めた
buildを自動でやってくれる
。便利!
Android Client
Kotlin Server
Server側は、Clientから呼び出したmethodをoverrideする形で実装する。
Client/Server共にかなりシンプルに実装できる。
Tips
予想外にサクッと書けてしまったので、Tipsが無かった。
強いて挙げれば、gRPCが自動生成したコードは、javax.annotation-apiを
使っている。これをgradleに書いて置かないとbuildが通らないので注意
。
まとめ
● 他のパターンを試した時より実装工数が少なかった。
● 動作速度は体感で明らかに早い。
● 動作速度を計測して、複数パターンの比較を行いたい。
ご静聴、ありがとうございました!
1 of 17

Recommended

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

More Related Content

What's hot

LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化 by
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化gree_tech
2.2K views27 slides
公式部活動技術書典部の活動紹介 by
公式部活動技術書典部の活動紹介公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介gree_tech
1.9K views22 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
【mBaaS体験会】 Android datastore demo by
【mBaaS体験会】 Android datastore demo【mBaaS体験会】 Android datastore demo
【mBaaS体験会】 Android datastore demoニフクラ mobile backend
2.5K views18 slides

What's hot(20)

LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化 by gree_tech
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
gree_tech2.2K views
公式部活動技術書典部の活動紹介 by gree_tech
公式部活動技術書典部の活動紹介公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介
gree_tech1.9K 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
SoftLayerで始めるデジタルマーケティング by Kohei Nishikawa
SoftLayerで始めるデジタルマーケティングSoftLayerで始めるデジタルマーケティング
SoftLayerで始めるデジタルマーケティング
Kohei Nishikawa2.9K views
【サンプル】 Instagram開設マニュアルサービス資料 by AAsolution
【サンプル】 Instagram開設マニュアルサービス資料【サンプル】 Instagram開設マニュアルサービス資料
【サンプル】 Instagram開設マニュアルサービス資料
AAsolution18.5K views
Realtime database、Clean Architectureを組み合わせた導入事例 by Tatsuya Kikuchi
Realtime database、Clean Architectureを組み合わせた導入事例Realtime database、Clean Architectureを組み合わせた導入事例
Realtime database、Clean Architectureを組み合わせた導入事例
Tatsuya Kikuchi603 views
Webエンジニアに贈る、正しい番犬の飼い方 by Innova Inc.
Webエンジニアに贈る、正しい番犬の飼い方Webエンジニアに贈る、正しい番犬の飼い方
Webエンジニアに贈る、正しい番犬の飼い方
Innova Inc.3.4K 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
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text - by 典子 松本
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
典子 松本1.5K views
マルチテナントに対応したシラサギグループウェアのご紹介 by Shinji Tanimoto
マルチテナントに対応したシラサギグループウェアのご紹介マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介
Shinji Tanimoto1.7K views
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」 by Yusuke KUROIWA
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
Yusuke KUROIWA6.2K views
Monacaとニフティクラウドmobile backendでwebコンテンツのスマホアプリ化を体験してみよう by ニフクラ mobile backend
Monacaとニフティクラウドmobile backendでwebコンテンツのスマホアプリ化を体験してみようMonacaとニフティクラウドmobile backendでwebコンテンツのスマホアプリ化を体験してみよう
Monacaとニフティクラウドmobile backendでwebコンテンツのスマホアプリ化を体験してみよう
ノンコーディングでここまでできる!LINE BOT を作ってみよう! by 典子 松本
ノンコーディングでここまでできる!LINE BOT を作ってみよう!ノンコーディングでここまでできる!LINE BOT を作ってみよう!
ノンコーディングでここまでできる!LINE BOT を作ってみよう!
典子 松本1K views
Matcherの紹介@ITリーダー育成キャンプ by noriyaz
Matcherの紹介@ITリーダー育成キャンプMatcherの紹介@ITリーダー育成キャンプ
Matcherの紹介@ITリーダー育成キャンプ
noriyaz369 views

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
727 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_tech727 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_tech599 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

概要.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
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
onewedge_companyguide1 by
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1ONEWEDGE1
54 views22 slides
SSH超入門 by
SSH超入門SSH超入門
SSH超入門Toru Miyahara
457 views21 slides

Recently uploaded(6)

JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦208 views
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo10 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1
ONEWEDGE154 views

gRPCを使ったメディアサービス