SlideShare a Scribd company logo
Submit Search
Upload
gRPCを使ったメディアサービス
Report
Share
gree_tech
gree_tech
Follow
•
0 likes
•
2,117 views
1
of
17
gRPCを使ったメディアサービス
•
0 likes
•
2,117 views
Report
Share
Download Now
Download to read offline
Engineering
「potatotips #62 (iOS/Android開発Tips共有会)」で発表された資料です。
Read more
gree_tech
gree_tech
Follow
Recommended
RecommendWidgetを作った話 by
RecommendWidgetを作った話
gree_tech
982 views
•
14 slides
Fuelphpのテストをdocker-composeとJenkinsで実行 by
Fuelphpのテストをdocker-composeとJenkinsで実行
gree_tech
1.3K views
•
14 slides
Firestoreを使ってメディアアプリを作ってみた by
Firestoreを使ってメディアアプリを作ってみた
gree_tech
1.6K views
•
15 slides
機械学習輪講会資料 by
機械学習輪講会資料
gree_tech
2.3K views
•
24 slides
LIMIAでのBigQuery活用事例 by
LIMIAでのBigQuery活用事例
gree_tech
4.2K views
•
18 slides
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中 by
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
gree_tech
765 views
•
18 slides
More Related Content
What's hot
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化 by
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
gree_tech
2.2K views
•
27 slides
公式部活動技術書典部の活動紹介 by
公式部活動技術書典部の活動紹介
gree_tech
1.9K views
•
22 slides
携帯電話時代から続くモバイルゲームとアプリの関係 by
携帯電話時代から続くモバイルゲームとアプリの関係
gree_tech
1.4K views
•
155 slides
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa
2.6K views
•
25 slides
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
Members_corp
5.6K views
•
37 slides
【mBaaS体験会】 Android datastore demo by
【mBaaS体験会】 Android datastore demo
ニフクラ mobile backend
2.5K views
•
18 slides
What's hot
(20)
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化 by gree_tech
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
gree_tech
•
2.2K views
公式部活動技術書典部の活動紹介 by gree_tech
公式部活動技術書典部の活動紹介
gree_tech
•
1.9K views
携帯電話時代から続くモバイルゲームとアプリの関係 by gree_tech
携帯電話時代から続くモバイルゲームとアプリの関係
gree_tech
•
1.4K views
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by Daiki Hirozawa
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa
•
2.6K views
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by Members_corp
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
Members_corp
•
5.6K views
【mBaaS体験会】 Android datastore demo by ニフクラ mobile backend
【mBaaS体験会】 Android datastore demo
ニフクラ mobile backend
•
2.5K views
SoftLayerで始めるデジタルマーケティング by Kohei Nishikawa
SoftLayerで始めるデジタルマーケティング
Kohei Nishikawa
•
2.9K views
【サンプル】 Instagram開設マニュアルサービス資料 by AAsolution
【サンプル】 Instagram開設マニュアルサービス資料
AAsolution
•
18.5K views
Realtime database、Clean Architectureを組み合わせた導入事例 by Tatsuya Kikuchi
Realtime database、Clean Architectureを組み合わせた導入事例
Tatsuya Kikuchi
•
603 views
Webエンジニアに贈る、正しい番犬の飼い方 by Innova Inc.
Webエンジニアに贈る、正しい番犬の飼い方
Innova Inc.
•
3.4K views
How are AsakusaSatellite growing with mzp by Ryo Suetsugu
How are AsakusaSatellite growing with mzp
Ryo Suetsugu
•
9.4K views
【mBaaS 体験会】 Monaca datastore demo by ニフクラ mobile backend
【mBaaS 体験会】 Monaca datastore demo
ニフクラ mobile backend
•
4.8K views
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text - by 典子 松本
ノンコーディングでやってみよう!音声テキスト変換 - LINE × Logic Apps × Speech to text -
典子 松本
•
1.5K views
マルチテナントに対応したシラサギグループウェアのご紹介 by Shinji Tanimoto
マルチテナントに対応したシラサギグループウェアのご紹介
Shinji Tanimoto
•
1.7K views
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」 by Yusuke KUROIWA
20160820 iOSDC Lunch Session「東急ハンズのPOSから学んだ、業務iOSアプリの向き合い方」
Yusuke KUROIWA
•
6.2K views
Monacaとニフティクラウドmobile backendでwebコンテンツのスマホアプリ化を体験してみよう by ニフクラ mobile backend
Monacaとニフティクラウドmobile backendでwebコンテンツのスマホアプリ化を体験してみよう
ニフクラ mobile backend
•
1.9K views
ビッグデータを活用したSEO対策:検索エンジン最適化とは by 新潟コンサルタント横田秀珠
ビッグデータを活用したSEO対策:検索エンジン最適化とは
新潟コンサルタント横田秀珠
•
1.3K views
ノンコーディングでここまでできる!LINE BOT を作ってみよう! by 典子 松本
ノンコーディングでここまでできる!LINE BOT を作ってみよう!
典子 松本
•
1K views
Ruby会議08 倉貫発表資料 by Yoshihito Kuranuki
Ruby会議08 倉貫発表資料
Yoshihito Kuranuki
•
2.6K views
Matcherの紹介@ITリーダー育成キャンプ by noriyaz
Matcherの紹介@ITリーダー育成キャンプ
noriyaz
•
369 views
More from gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
727 views
•
36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
229 views
•
13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
1K views
•
18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
1.9K views
•
84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
347 views
•
116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
685 views
•
31 slides
More from gree_tech
(20)
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
•
727 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
•
229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
•
1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
•
1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
•
347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
•
685 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech
•
599 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech
•
626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験
gree_tech
•
593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み
gree_tech
•
305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
•
576 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
•
209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件について
gree_tech
•
308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジー
gree_tech
•
432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech
•
1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
•
1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
•
694 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
•
2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech
•
397 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
•
752 views
Recently uploaded
概要.pdf by
概要.pdf
Taira Shimizu
6 views
•
1 slide
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦
208 views
•
36 slides
Najah Matsuo Self Introduction by
Najah Matsuo Self Introduction
NajahMatsuo
10 views
•
29 slides
システム概要.pdf by
システム概要.pdf
Taira Shimizu
44 views
•
1 slide
onewedge_companyguide1 by
onewedge_companyguide1
ONEWEDGE1
54 views
•
22 slides
SSH超入門 by
SSH超入門
Toru Miyahara
457 views
•
21 slides
Recently uploaded
(6)
概要.pdf by Taira Shimizu
概要.pdf
Taira Shimizu
•
6 views
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦
•
208 views
Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self Introduction
NajahMatsuo
•
10 views
システム概要.pdf by Taira Shimizu
システム概要.pdf
Taira Shimizu
•
44 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1
ONEWEDGE1
•
54 views
SSH超入門 by Toru Miyahara
SSH超入門
Toru Miyahara
•
457 views
gRPCを使ったメディアサービス
1.
gRPCを使ったメディアサービス
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.
背景と目的
4.
LIMIAとは? ● メディアサービス ● 記事一覧を表示し、タップす ると記事詳細を閲覧できる。 ●
記事詳細の最下部に別の記事 への回遊導線が付いている
5.
興味があること LIMIAに最も適したシステムは、何だろう? ● インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase ●
Backend FW: gin/Laravel/Django/Rails/gRPC/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ 選択肢が多すぎて、よくわからない! → とりあえず色々試してみよう。
6.
今回試したこと ● インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase ●
Backend FW: gin/Laravel/Django/Rails/gRPC/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ gRPCを使って、KotlinでgRPC Serverとメディアアプリを作ってみました 。
7.
gRPCの説明
8.
gRPCとは? ● RPCを実現する通信方式の一つ ● Googleが作っている ●
Protocol buffersという形式で データをシリアライズして送受 信している。
9.
Protocol bufferとは? ● Request/Responseのフォーマットを 指定すると、それでシリアライズして くれる。 ●
通信部分のコードを自動生成してくれ るので、そこに時間を割かれるのを防 げる。 ● ただし、エラー定義は書けないので、 そこはコメントで書いておくなど、チ ーム内でルールを決めておく必要があ る。
10.
では本題
11.
今回作った検証アプリについて 記事の一覧を表示したい。画面には、記事画像、記事 タイトル、ユーザ名が表示されている。Modelとしては 、次のように持つ。 ● Article: Id,
Title, ImageUrl, User ● User: Id, Name これをprotobufに定義し、gRPCで通信するとどうなる か試してみた。
12.
User.proto / Article.proto
13.
ArticleList.proto build.gradleに以下のような 記述をしておくと、コード の自動生成とそれを含めた buildを自動でやってくれる 。便利!
14.
Android Client
15.
Kotlin Server Server側は、Clientから呼び出したmethodをoverrideする形で実装する。 Client/Server共にかなりシンプルに実装できる。
16.
Tips 予想外にサクッと書けてしまったので、Tipsが無かった。 強いて挙げれば、gRPCが自動生成したコードは、javax.annotation-apiを 使っている。これをgradleに書いて置かないとbuildが通らないので注意 。
17.
まとめ ● 他のパターンを試した時より実装工数が少なかった。 ● 動作速度は体感で明らかに早い。 ●
動作速度を計測して、複数パターンの比較を行いたい。 ご静聴、ありがとうございました!