Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

gRPCを使ったメディアサービス

386 views

Published on

「potatotips #62 (iOS/Android開発Tips共有会)」で発表された資料です。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

gRPCを使ったメディアサービス

  1. 1. gRPCを使ったメディアサービス
  2. 2. Masahiro Higuchi / 樋口雅拓 ● グリーグループのリミア株式会社で、LIMIA という住まい領域のメ ディアを作っています。ゲーム会社ですが、最近はメディアに力を 入れています。 ● 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何で も屋です。4歳の娘のパパ。twitter: @mahiguch1 ● https://limia.jp/ ● https://arine.jp/ ● https://aumo.jp/ ● https://www.mine-3m.com/mine/
  3. 3. 背景と目的
  4. 4. LIMIAとは? ● メディアサービス ● 記事一覧を表示し、タップす ると記事詳細を閲覧できる。 ● 記事詳細の最下部に別の記事 への回遊導線が付いている
  5. 5. 興味があること LIMIAに最も適したシステムは、何だろう? ● インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase ● Backend FW: gin/Laravel/Django/Rails/gRPC/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ 選択肢が多すぎて、よくわからない! → とりあえず色々試してみよう。
  6. 6. 今回試したこと ● インフラ: Kubernetes/ECS/Lambda/EC2/CF/Firebase ● Backend FW: gin/Laravel/Django/Rails/gRPC/使わない ● アプリ: MVC/MVVM/VIPER/クリーンアーキテクチャ gRPCを使って、KotlinでgRPC Serverとメディアアプリを作ってみました 。
  7. 7. gRPCの説明
  8. 8. gRPCとは? ● RPCを実現する通信方式の一つ ● Googleが作っている ● Protocol buffersという形式で データをシリアライズして送受 信している。
  9. 9. Protocol bufferとは? ● Request/Responseのフォーマットを 指定すると、それでシリアライズして くれる。 ● 通信部分のコードを自動生成してくれ るので、そこに時間を割かれるのを防 げる。 ● ただし、エラー定義は書けないので、 そこはコメントで書いておくなど、チ ーム内でルールを決めておく必要があ る。
  10. 10. では本題
  11. 11. 今回作った検証アプリについて 記事の一覧を表示したい。画面には、記事画像、記事 タイトル、ユーザ名が表示されている。Modelとしては 、次のように持つ。 ● Article: Id, Title, ImageUrl, User ● User: Id, Name これをprotobufに定義し、gRPCで通信するとどうなる か試してみた。
  12. 12. User.proto / Article.proto
  13. 13. ArticleList.proto build.gradleに以下のような 記述をしておくと、コード の自動生成とそれを含めた buildを自動でやってくれる 。便利!
  14. 14. Android Client
  15. 15. Kotlin Server Server側は、Clientから呼び出したmethodをoverrideする形で実装する。 Client/Server共にかなりシンプルに実装できる。
  16. 16. Tips 予想外にサクッと書けてしまったので、Tipsが無かった。 強いて挙げれば、gRPCが自動生成したコードは、javax.annotation-apiを 使っている。これをgradleに書いて置かないとbuildが通らないので注意 。
  17. 17. まとめ ● 他のパターンを試した時より実装工数が少なかった。 ● 動作速度は体感で明らかに早い。 ● 動作速度を計測して、複数パターンの比較を行いたい。 ご静聴、ありがとうございました!

×