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
390
gRPCを使ったメディアサービス
potatotips #62 (iOS/Android開発Tips共有会)でのLT資料です。
mahiguch
June 18, 2019
Tweet
Share
More Decks by mahiguch
See All by mahiguch
爆速で成長する おでかけ情報サービスの成長を支えるデザインと開発の取り組みについて
mahiguch
0
39
WebView認証連携
mahiguch
0
61
メディアアプリLIMIAにおけるプッシュ通知配信システム
mahiguch
0
89
公式部活動技術書典部の活動紹介
mahiguch
0
100
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
mahiguch
1
1k
PHPからgoへの移行で分かったこと
mahiguch
2
3.9k
BigQueryを使った機械学習プロジェクトの分析とオフライン検証
mahiguch
2
1.2k
gRPCを使ったメディアサービス2
mahiguch
0
200
LIMIAでのBigQuery活用事例
mahiguch
0
190
Other Decks in Programming
See All in Programming
AWS で実現する安全な AI エージェントの作り方 〜 Bedrock Engineer の実装例を添えて 〜 / how-to-build-secure-ai-agents
gawa
8
830
The Nature of Complexity in John Ousterhout’s Philosophy of Software Design
philipschwarz
PRO
0
120
Ruby's Line Breaks
yui_knk
2
1.2k
Do Dumb Things
mitsuhiko
0
440
これだけは知っておきたいクラス設計の基礎知識 version 2
masuda220
PRO
24
6.5k
AWSで雰囲気でつくる! VRChatの写真変換ピタゴラスイッチ
anatofuz
0
160
Building Scalable Mobile Projects: Fast Builds, High Reusability and Clear Ownership
cyrilmottier
2
290
AI時代の開発者評価について
ayumuu
0
160
音声プラットフォームのアーキテクチャ変遷から学ぶ、クラウドネイティブなバッチ処理 (20250422_CNDS2025_Batch_Architecture)
thousanda
0
220
Enterprise Web App. Development (1): Build Tool Training Ver. 5
knakagawa
1
120
Golangci-lint v2爆誕: 君たちはどうすべきか
logica0419
1
130
Make Parsers Compatible Using Automata Learning
makenowjust
2
5.1k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
49
7.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
530
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
The Cult of Friendly URLs
andyhume
78
6.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.6k
Fireside Chat
paigeccino
37
3.4k
Agile that works and the tools we love
rasmusluckow
328
21k
Become a Pro
speakerdeck
PRO
27
5.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
670
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が通らないので注意。
まとめ • 他のパターンを試した時より実装工数が少なかった。 • 動作速度は体感で明らかに早い。 • 動作速度を計測して、複数パターンの比較を行いたい。 ご静聴、ありがとうございました!