匠の相駕籠

ソフトウェア開発者の日常 - メメントモリ公式ブログ『匠の相駕籠(たくみのあいかご)』

JSON:API について学んだこと

 以下、すこしソフトウェアの技術的な話です。

 

 ここ2年ほどは、ずっと Android のアプリケーション開発をしてきたので、いまの仕事で、ひさしぶりにバックエンドを触っています。幸い、わりと手に馴染んでいる Ruby on Ralis を使っているので、助かっています。

 

 今回のプロジェクトの構成は、完全な SPA 構成になっていて、バックエンドサーバーは json のみ返却します。

 

 わりと json の設計を我流で進めていたのですが、今回 fast_jsonapi という gem を採用しているのですが、これによってシリアライズされるオブジェクトのフォーマットが、あまり見慣れない...。{data: {type: 'xxx', attributes: {'key': 'value'}}} という構成で自動的に作成されます。

 

 いろいろ調べてみて理解できたのですが、JSON:API という、HTTP request と response の json のフォーマットを定義しようという試みがあるようで、これがある程度の市民権を得ており、fast_jsonapi についてもこれに(ある程度)準拠していたというのがわかりました。

 

 JSON:API の仕様を時間を作って読んでみたのですが、いろいろなケースにも対応できるように汎用性をもって設計されているのはよくわかりました。けど JSON:API に完全に準拠した形で、API の response や request を作るのは結構大変だなというのが、素直な感想です。

 

 fast_jsonapi は、自然と JSON:API の reponse の仕様に準拠した形で出力してくれるので、扱いが楽なのですが、例えば gem やライブラリ、フレームワークレベルで準拠が進んでこないと、なかなか正しく用いるのは、しんどいだろうなと感じました。

 

 

 Google が json のスタイルガイドを提供しています。

 こちらもネット上でたまに引き合いに出されていたので、読んでみました。JSON:API の仕様を尊重しているなという感じで、でもわりと構造をシンプルに保とうとしているのが読み取れました。

 

 実際に自分で API を作るとなると、どちらかというとこの Google のスタイルガイドのほうが、扱いやすいだろうなという気はしました。

 

 

 今回関わっているプロジェクトでは、基本的に fast_jsonapi の挙動に任せて、その他自分たちでフォーマットを決めなければいけないところは、JSON:API もしくは Google スタイルガイドからつまみ食いするような感じで進めようと思っています。

 

 

 しかし、しばらくバックエンドから離れていただけで、いろいろと早いスピードで技術が変化し続けているのだなというのを、改めて痛感しました。