LoginSignup
4
1

More than 1 year has passed since last update.

【gRPC-Web】ネイティブアプリからgRPC-Webは使えるのか?!

Last updated at Posted at 2021-11-25

はじめに

深夜にラーメン屋に行くと100%お腹を壊すことがわかりました。ありがとうございます。(最近の出来事)

壊れる繋がりでいうとネイティブアプリからgRPC-Webを呼んでもクラッシュしないか気になりましたので、書いていこうと思います。

gRPC-Webってjsじゃん、どうやって呼ぶの?

ご安心ください。今回使用するのはReact Nativeなのでそのまま呼べちゃいます。

いざ検証

Envoy Proxyを建てる

ここにとてもわかりやすい記事があるので参考にして下さい。

gRPC-Webのビルドを行う

ここにわかりやすい素晴らしい記事があるので参考にして下さい。

gRPC Serverを用意する

今回は過去にこちらで紹介した僕の彼女(Botアプリ)をServerとして使用します。
https://qiita.com/taisei_otsuka/items/87adaf5f8ed19a8549c5

React Nativeのアプリを作る

チャットアプリ作ってみました (iPhone エミュレーター)

qiita1.gif

あれ...普通にgRPCが呼べる

と、僕もそう思ってたのですがAndroidアプリを作っていた時に事件は起きました。

500エラーが返ってくる

なんでだろうと調べていた時に公式のissuesを発見しました。

headerにcharset=utf-8がくっついている為とのことです。

The issue is fixed in 0.60 with 4a80776.

RNの0.60以降は治ってるとの話なのですが、自分の環境では同じエラーになりました。

結論

iPhoneからgRPC-Webは使える、しかしAndroidで使えない。

なので、別BFFアプリを建てる、もしくはEnvoy Proxyを建ててgRPC-JSON transcoderでhttpからgRPCにリバースプロキシした方が安牌かなと思います。

あとがき

Instagram・Facebook・Discord・Uber Eats・SkypeではReact Nativeが使われています。

今回作ったアプリも10分くらいで作れましたし、この記事を読んだきっかけでReact Nativeファンが増えたらと思ってます!

採用PR

大規模サイトので開発やマイクロサービス化・二次元コンテンツに興味がある、もしくはチャレンジしてみたいという方は是非一緒に働きましょう!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1