Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
gRPCを使ったメディアサービス2
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
mahiguch
September 11, 2019
Programming
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
gRPCを使ったメディアサービス2
「グリーグループモバイルアプリ勉強会 Vol.1」でのLT資料です。
https://gree.connpass.com/event/142728/
mahiguch
September 11, 2019
More Decks by mahiguch
See All by mahiguch
爆速で成長する おでかけ情報サービスの成長を支えるデザインと開発の取り組みについて
mahiguch
0
85
WebView認証連携
mahiguch
0
91
メディアアプリLIMIAにおけるプッシュ通知配信システム
mahiguch
0
120
公式部活動技術書典部の活動紹介
mahiguch
0
140
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
mahiguch
1
1.1k
PHPからgoへの移行で分かったこと
mahiguch
2
4.4k
BigQueryを使った機械学習プロジェクトの分析とオフライン検証
mahiguch
2
1.3k
LIMIAでのBigQuery活用事例
mahiguch
0
230
機械学習輪講会資料
mahiguch
0
200
Other Decks in Programming
See All in Programming
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
270
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
190
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
230
Verilogで学ぶCPU自作入門.pdf
uyuki234
2
590
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
140
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
160
Agents on Rails - Rails at Scale 2026
irinanazarova
0
140
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
200
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
490
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
200
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
Writing Fast Ruby
sferik
630
63k
How STYLIGHT went responsive
nonsquared
100
6.3k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
First, design no harm
axbom
PRO
2
1.3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
Navigating Weather and Climate Data
rabernat
0
530
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Transcript
Copyright © LIMIA, Inc. All Rights Reserved. gRPCを使った メディアサービス2
Copyright © LIMIA, Inc. All Rights Reserved. • グリーグループのリミア株式会社で、LIMIA という住まい領域のメディア
を作っています。ゲーム会社ですが、最近はメディアに力を入れていま す。 • 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何でも 屋です。5歳の娘のパパ。twitter: @mahiguch1 • 部活動でグリー技術書典部というのを立ち上げました。 • https://limia.jp/ • https://arine.jp/ • https://aumo.jp/ • https://www.mine-3m.com/mine/ Masahiro Higuchi/樋口雅拓 技術書典7@い05C 2
Copyright © LIMIA, Inc. All Rights Reserved. 背景と目的
Copyright © LIMIA, Inc. All Rights Reserved. LIMIAとは? 4 •
メディアサービス • Android, iOS, Web • 記事一覧を表示し、タップすると 記事詳細を閲覧できる。 • 記事一覧はパーソナライズ。 • 記事詳細読了後に関連記事を出 している。 • AWS:90%、GCP:10%。 • PHP/EC2 → Go/ECS移行中 • コンテナ間はgRPC+NLB • 偏りが激しいのでEnvoy使いたい
Copyright © LIMIA, Inc. All Rights Reserved. 興味があること 5 LIMIAに最も適したシステムは、何だろう?
• インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase • Backend FW: gin/Laravel/Django/Rails/gRPC/使わない 選択肢が多すぎて、よくわからない! → とりあえず色々試してみよう。 試した結果、gRPCが良さそう。 https://speakerdeck.com/mahiguch/grpcwoshi-tutamedeiasabisu もう一度、これを試してみます。
Copyright © LIMIA, Inc. All Rights Reserved. 【前回試したこと:とりあえず動くか】 起動直後(MainFragment::onActivityCreated)、gRPC Serverにリクエ
ストして、callbackでViewに追加。 【今回試したこと:実際使おうとしたときの問題点】 リストの末尾まで到達(PagedList::BoundaryCallback)したら、gRPC Serverにリクエスト、LiveDataでViewを更新。 今回試すこと 6
Copyright © LIMIA, Inc. All Rights Reserved. 今回試すことの図 左図のRetrofitをgRPCに置き換えたのが右図 7
Copyright © LIMIA, Inc. All Rights Reserved. 要素技術の説明
Copyright © LIMIA, Inc. All Rights Reserved. gRPCとは? 9 •
RPCを実現する通信方式の一つ • Googleが作っている • Protocol buffersという形式で データをシリアライズして送受信 している。
Copyright © LIMIA, Inc. All Rights Reserved. Protocol Bufferとは? 10
• Request/Responseのフォーマットを指定 すると、それでシリアライズしてくれる。 • 通信部分のコードを自動生成してくれる ので、そこに時間を割かれるのを防げ る。 • ただし、エラー定義は書けないので、そこ はコメントで書いておくなど、チーム内で ルールを決めておく必要がある。
Copyright © LIMIA, Inc. All Rights Reserved. AAC(Android Architecture Components)とは、便利なライブラリ集。使う
と便利なのは分かっているが、既存アプリへの導入は工数がかかるため、みん な少しづつ入れている。今回利用するAACは、次の4つ。 • LiveData: 基盤となるデータベースが変更されたときにビューに通知する • Paging: データソースからオンデマンドで情報を徐々に読み込む • Room: SQLite データベースにスムーズにアクセスする • ViewModel: ライフサイクルを意識した方法で UI 関連のデータを管理 する AACの説明 11
Copyright © LIMIA, Inc. All Rights Reserved. 本題
Copyright © LIMIA, Inc. All Rights Reserved. • 一覧を取ってきて表示するアプリ において、RetrofitをgRPCに置
き換えてみた。 • ベースは、AACのサンプルアプ リ。見た目は同じ。 https://github.com/googlesamples/android-architecture-co mponents/tree/88747993139224a4bb6dbe985adf652d557 de621/PagingWithNetworkSample 今回作った検証アプリについて 13
Copyright © LIMIA, Inc. All Rights Reserved. .proto files 14
RPC IFをserviceに、データのフォーマットを messageに記載する。 エラーコードなど異常系は、ここでは管理できない。
Copyright © LIMIA, Inc. All Rights Reserved. 自動生成されたmethodを呼び出しているだけ。 API call
15
Copyright © LIMIA, Inc. All Rights Reserved. AAC Pagingを使うと、リスト開始や末尾でcallbackが呼ばれる。そこで、API call
methodを呼び出す。レスポンスの処理はRepositoryから渡された callbackで行う。 BoundaryCallback 16
Copyright © LIMIA, Inc. All Rights Reserved. Server側は、Clientから呼び出したmethodをoverrideする形で実装する。 Client/Server共にかなりシンプルに実装できる。 Server
17
Copyright © LIMIA, Inc. All Rights Reserved. • Retrofitに依存している部分が多く、思ったより大変だった。 •
今回はRetrofitからgRPCに切り替えたが、本番導入するなら共存する必 要がある。つまり、結構工数がかかりそう。 • gRPC対応するとIFの型が保証されるが、大きな工数をかけてでも解決し たい問題かというと。。。 • RetrofitがgRPC対応してくれれば、全て解決だが。 グリーグループの有志が集まって、技術書を書きました。 技術書典7で頒布しますので、ぜひ遊びに来てください。 https://techbookfest.org/event/tbf07/circle/5765683543539712 まとめ 18
Copyright © LIMIA, Inc. All Rights Reserved.