You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
こんにちは、JapanTaxi SREチームの水戸です。 インフラからアプリケーションまでサービスの安定性向上のための改善を日々行っています。 今年9月のリニューアルで、JapanTaxiアプリ向けのAPIにGraphQLを導入しました。この記事では実際にGraphQL導入したことで感じたメリットと課題を書いていきたいと思います。 現在のJapanTaxiアプリにおけるGraphQLの導入状況 今回は数年間開発を続けてきたアプリのリニューアルプロジェクトということで、既存部分を使いまわしている部分も多々あり全てのAPIを一斉に置き換えるのは難しい状況でした。そのためリリース時点ではアプリの変更に合わせて改修が必要になった参照系のAPIにのみGraphQLを導入しました。 リリース後は順次RESTからGraphQLに切り替えを進めており、一部では更新系でもGraphQLを使い始めています。
RailsのモデルをフロントのJavaScriptで持っているデータとリアルタイム同期させるためのgem(ar_sync)を作っている。 そのために、俺の考えた最強のシリアライザ(ar_serializer)を作っていたら、ほぼGraphQL互換(mutationはないけど)ぽい作りになった。 せっかくなのでGraphQLのパーサを書いて、GraphiQLが動くところまでできた。 GraphQLは良いぞ ar_serializerについて https://github.com/tompng/ar_serializer queryは、as_jsonとかincludesの引数みたいな(見慣れたものに近い)記法で書く GraphQLのqueryと機能的にはだいたい同じ モデルにガリガリfield書いてく 個人的には書きやすいと思う(typeも指定しなければ適当にassociationとかから引っ
Integration Test / Request Spec ではあくまでもactionのカバレッジを満たすために実行しています つまり疎通確認とactionにおける例外処理のみ spec/graphql/ に、KibelaSchema.execute() を行うspecを追加して必要な単位(queryのfieldやtype)ごとにテストしています test patternのカバレッジはargumentsの違いのみで、たとえばフィールドは全部指定するパターンを1つだけ行ってます .execute() の戻り値は #to_json() して rspec-json_matcher でexpectationを書いています resolverを直接呼ぶテストはしていません tips: RubyMineの場合、 queryを書くときのheredoc tokenを GRAQPHQL にすると、quer
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く