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
mahiguch
June 18, 2019
Programming
0
420
gRPCを使ったメディアサービス
potatotips #62 (iOS/Android開発Tips共有会)でのLT資料です。
mahiguch
June 18, 2019
Tweet
Share
More Decks by mahiguch
See All by mahiguch
爆速で成長する おでかけ情報サービスの成長を支えるデザインと開発の取り組みについて
mahiguch
0
54
WebView認証連携
mahiguch
0
68
メディアアプリLIMIAにおけるプッシュ通知配信システム
mahiguch
0
100
公式部活動技術書典部の活動紹介
mahiguch
0
120
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
mahiguch
1
1k
PHPからgoへの移行で分かったこと
mahiguch
2
4.1k
BigQueryを使った機械学習プロジェクトの分析とオフライン検証
mahiguch
2
1.2k
gRPCを使ったメディアサービス2
mahiguch
0
220
LIMIAでのBigQuery活用事例
mahiguch
0
210
Other Decks in Programming
See All in Programming
SidekiqでAIに商品説明を生成させてみた
akinko_0915
0
120
Towards Transactional Buffering of CDC Events @ Flink Forward 2025 Barcelona Spain
hpgrahsl
0
120
Making Angular Apps Smarter with Generative AI: Local and Offline-capable
christianliebel
PRO
0
100
AI時代に必須!状況言語化スキル / ai-context-verbalization
minodriven
2
320
When Dependencies Fail: Building Antifragile Applications in a Fragile World
selcukusta
0
120
AI 駆動開発におけるコミュニティと AWS CDK の価値
konokenj
5
320
Reactive Thinking with Signals and the Resource API
manfredsteyer
PRO
0
120
CSC305 Lecture 13
javiergs
PRO
0
350
ビルドプロセスをデバッグしよう!
yt8492
0
240
contribution to astral-sh/uv
shunsock
0
580
三者三様 宣言的UI
kkagurazaka
0
340
SODA - FACT BOOK(JP)
sodainc
1
9.2k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Writing Fast Ruby
sferik
630
62k
Scaling GitHub
holman
463
140k
Designing for humans not robots
tammielis
254
26k
Practical Orchestrator
shlominoach
190
11k
The World Runs on Bad Software
bkeepers
PRO
72
11k
RailsConf 2023
tenderlove
30
1.3k
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が通らないので注意。
まとめ • 他のパターンを試した時より実装工数が少なかった。 • 動作速度は体感で明らかに早い。 • 動作速度を計測して、複数パターンの比較を行いたい。 ご静聴、ありがとうございました!