LoginSignup
0
1

More than 5 years have passed since last update.

ProtocolBuffersとサブモジュールを使った通信・パースの仕組み

Last updated at Posted at 2018-07-18

ProtocolBuffersとは

ProtocolBuffersとは、簡単にいうと、言語や型定義が異なるアプリ(swift,java,kotlin)とサーバー(Railsなど)間の通信を、より簡単に、意思疎通ロスなく、便利にしてくれる仕組み、概念、ツール。

Googleが提唱したらしく、swiftでいうと、Himotokiライブラリなどを使って、サーバー側からJSONで送られてきたデータを、都度都度、型やmapなどを考えながら、手でコードを書いていかなければならない。そのコードや型が間違っていたらswiftだとアプリ落ちてしまうし。

そもそも、サーバー側とhttpで通信させないのは、当時スマートフォンなどPC以外のデバイスで、サーバーから送られてきたhttpなどのデータをブラウザを使って、形式通りにパースして表示させようにも、スペックが足りなくて重い。それほどブラウザという仕組みはW3Cなどの機関によって、がっちり固められて複雑で重い。

そのため、アプリという、もっとデータ→画面表示の部分を、俺たちで自由にやって、かつサクサク動くようにしようぜってのが、アプリの考え方。現代ではデバイスの性能が上がってきたので、Webアプリをブラウザで使う形でも問題なくなってきたが、元を辿ると、モバイルデバイス⇄サーバー間の通信形式がhttpでなく、JSON+アプリといった形なのはそういう理由。

型変換などの手書きしていたコードも自動生成?

サーバーサイドとのやり取りするデータ・型は、口頭で話し合うか、ドキュメントにまとめて、フロント(アプリ側)と共有しなければいけない。

それをみながら、ここではこのかたで、とHimotoki(デコード)を手動で書かなければいけなかった。

ProtocolBuffersを使うとそれが自動生成されるっぽい。なんかbinaryっぽい。

サブモジュールとは

サブモジュールはgitの仕組みであり、gitの各リポジトリ同士をハッシュキーによって、結びつけ、共有する仕組み。

アプリのリポジトリには、サブモジュールのリポジトリのハッシュ値のみの記載があり、それぞれ別リポジトリからデータをダウンロードしてくる。

サブモジュールのリポジトリが更新されると、それと紐づけられているiOS, Android, サーバー側のリポジトリは、そのハッシュ値を更新してコミットするだけで、最新版のサブモジュール(今回の場合はProtocolBuffers)のデータを正確に更新・同期でき、iOS, Android, サーバー間で、ドキュメントの作成や口頭での確認などなく、同じパースの仕組みを共有できる。

ドキュメントをオンラインで共有することの違いとしては、サブモジュールの仕組みを使った方が、色々とプログラムでのやり取りが便利だからだ。

参考URL

0
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
0
1