Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
gRPCを使ったメディアサービス
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mahiguch
June 18, 2019
Programming
0
440
gRPCを使ったメディアサービス
potatotips #62 (iOS/Android開発Tips共有会)でのLT資料です。
mahiguch
June 18, 2019
Tweet
Share
More Decks by mahiguch
See All by mahiguch
爆速で成長する おでかけ情報サービスの成長を支えるデザインと開発の取り組みについて
mahiguch
0
63
WebView認証連携
mahiguch
0
79
メディアアプリLIMIAにおけるプッシュ通知配信システム
mahiguch
0
110
公式部活動技術書典部の活動紹介
mahiguch
0
120
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
mahiguch
1
1.1k
PHPからgoへの移行で分かったこと
mahiguch
2
4.3k
BigQueryを使った機械学習プロジェクトの分析とオフライン検証
mahiguch
2
1.2k
gRPCを使ったメディアサービス2
mahiguch
0
240
LIMIAでのBigQuery活用事例
mahiguch
0
220
Other Decks in Programming
See All in Programming
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
260
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
230
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
370
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.5k
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
5
940
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
180
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
160
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
130
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
400
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.1k
Rで始めるML・LLM活用入門
wakamatsu_takumu
0
180
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
180
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
640
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Limits of Empathy - UXLibs8
cassininazir
1
260
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
75
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
210
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Bash Introduction
62gerente
615
210k
Docker and Python
trallard
47
3.8k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
190
Navigating Weather and Climate Data
rabernat
0
140
A designer walks into a library…
pauljervisheath
210
24k
Transcript
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が通らないので注意。
まとめ • 他のパターンを試した時より実装工数が少なかった。 • 動作速度は体感で明らかに早い。 • 動作速度を計測して、複数パターンの比較を行いたい。 ご静聴、ありがとうございました!