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
gree_tech
PRO
June 20, 2019
Technology
0
370
gRPCを使ったメディアサービス
「potatotips #62 (iOS/Android開発Tips共有会)」で発表された資料です。
gree_tech
PRO
June 20, 2019
Tweet
Share
More Decks by gree_tech
See All by gree_tech
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
16
今この時代に技術とどう向き合うべきか
gree_tech
PRO
2
2.3k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
110
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
110
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
590
あうもんと学ぶGenAIOps
gree_tech
PRO
0
140
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
160
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
150
コンテンツモデレーションにおける適切な監査範囲の考察
gree_tech
PRO
0
86
Other Decks in Technology
See All in Technology
[CV勉強会@関東 ICCV2025 読み会] World4Drive: End-to-End Autonomous Driving via Intention-aware Physical Latent World Model (Zheng+, ICCV 2025)
abemii
0
130
明日から真似してOk!NOT A HOTELで実践している入社手続きの自動化
nkajihara
1
300
ユーザーストーリー x AI / User Stories x AI
oomatomo
0
180
Post-AIコーディング時代のエンジニア生存戦略
shinoyu
0
280
機密情報の漏洩を防げ! Webフロントエンド開発で意識すべき漏洩パターンとその対策
mizdra
PRO
8
3.1k
Datadog On-Call と Cloud SIEM で作る SOC 基盤
kuriyosh
0
170
CodexでもAgent Skillsを使いたい
gotalab555
9
4.5k
[mercari GEARS 2025] Keynote
mercari
PRO
0
210
[CV勉強会@関東 ICCV2025] WoTE: End-to-End Driving with Online Trajectory Evaluation via BEV World Model
shinkyoto
0
190
コード1ミリもわからないけど Claude CodeでFigjamプラグインを作った話
abokadotyann
1
160
『HOWはWHY WHATで判断せよ』 〜『ドメイン駆動設計をはじめよう』の読了報告と、本質への探求〜
panda728
PRO
5
1.6k
AIと共に開発する時代の組織、プロセス設計 freeeでの実践から見えてきたこと
freee
3
660
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Faster Mobile Websites
deanohume
310
31k
4 Signs Your Business is Dying
shpigford
186
22k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
320
Documentation Writing (for coders)
carmenintech
76
5.1k
How STYLIGHT went responsive
nonsquared
100
5.9k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
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が通らないので注意 。
まとめ • 他のパターンを試した時より実装工数が少なかった。 • 動作速度は体感で明らかに早い。 • 動作速度を計測して、複数パターンの比較を行いたい。 ご静聴、ありがとうございました!