kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

GraphQL入門

AWS amplifyを試しており、GraphQLも実践できるため挑戦しています。

GraphQLに触ってこなかったため、良い点や使い方について書いていきたいです。

まず、GraphQLの前にamplifyを使ってみてよかったことを書いてみます。

amplifyを使っていて良いところ

amplifyの機能というより、関連する技術面でいままで使用していなかった機能が簡単に利用できる点が個人的なメリットになっています。

DynamoDbやApiGateway、CognitoなどのAWSのサービスについて使い方を理解しながら試すことができ、アプリケーションを構築しながらGraphQLやNoSQLを使うことができるためいままで触ることがなかった技術に触れる機会になっているのがメリットです。

GraphQLの本を買ったので、読んでみた印象を書いてみます。

GraphQL

graphql.org

GraphQL(グラフQL)はAPI向けに作られたクエリ言語およびランタイムである Facebookが2015年に公開したAPIの規格であり、いままでのRESTやSOAPといったAPIとはパラダイムが違っています

個人的な認識として、

データにアクセスする手段として、サーバーでプログラムを書いてエンドポイントを指定してアクセスを行なっていました。サーバーでのプログラムが必要になるため、必要なデータが増えた場合、サーバーとクライアントを修正する必要がありました。

GraphQLはクライアントからCRADが可能であり、サーバーはGraphQLのアプリケーションが動作させることでクライアント側のみ修正することでアプリケーションを組むことができるようになります。

という感じです。

GraphQLの強い点

データ連携の取得に関してはSQLにない強みを感じました。配列でのデータ取得やデータ連携の取得部分は、ドキュメントをみたとき違和感を感じるぐらいに考え方が変わりそうです。

サブスクリプションは、リアルタイム連携に使用できる機能ですが、機能としてあることに驚いています。使ってみたい機能です。

GraphQLの型とスカラー

型がテーブルやオブジェクトみたいに扱われています。

スカラー型としてInt, Float, String, Boolean, IDが使えます。

またカスタムスカラー型として、宣言することも可能みたいです。

www.npmjs.com

よく使われるカスタムスカラーが実装されているリポジトリみたいです。

できること

  • ソート
  • ページング
  • 配列
  • null許可
  • ファイルアップロード

十分な機能がありますね。パッケージ次第という感じでしょうか。

雑記

簡単なアプリケーションを作っていますが、サーバーでAPI書かないのが新鮮。簡単なプログラムなら絶対にいいなー。

参考

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API