Katashin .info

GraphQL の情報を雑にまとめる

最近 GraphQL を使うことがあり、いろいろ調べたりしていることをメモしておきます。自分が必要なものしかまとめてないので情報には偏りがあります (具体的には Apollo、TypeScript や Ruby あたりに偏ってます)。

GraphQL / Apollo まわりのテストの話は別の記事で詳しく書くかもしれないです。

基本知識 #

GraphQL | A query language for your API #

公式サイト。GraphQL のコンセプトやできることを知りたいときに見る。

GraphQL Concepts Visualized – Apollo GraphQL #

GraphQL のコンセプトを図を交えて説明。アプリケーションのデータをグラフで表し、その一部を取得するために GraphQL を使う。効率的なキャッシュを行うこともできる。Apollo Client のキャッシュの実装についても解説。

JavaScript / TypeScript 関連 #

Apollo GraphQL #

GraphQL サーバー、クライアントを作るための JavaScript ライブラリ。各種 UI ライブラリのバインディング、キャッシュなどがデフォルトで対応されてて便利。個人的には TypeScript の型定義がパッケージに含まれてるのが良い。

apollographql/apollo-cli #

クエリから各種言語のコード (d.ts とか) を生成したり、クエリのバリデーションができる CLI ツール。

dotansimha/graphql-code-generator #

スキーマやクエリからコード生成ができるツール。apollo-cli とは異なり、テンプレートを作ることで様々な形式のコードを生成することができる。

Getting started with TypeScript and Apollo – Apollo GraphQL #

Apollo + TypeScript でどのように書くのか解説。apollo-cli でクエリの型定義を生成し、それを Apollo の型パラメータに付与する。

Mocking | GraphQL Tools #

GraphQL クライアントのモックの仕方。graphql-tools を使って Resolver をモックにできる。

Apollo のリクエストとレスポンスをモックするために使う。

How to manage file uploads in GraphQL mutations using Apollo/Graphene #

multipart/formdata を使って GraphQL でファイルアップロードを実現する仕様。Apollo の実装がすでにある。

facebook/dataloader #

DB などへのリクエストをバッチ化するためのライブラリ。N+1 問題を避けるために使う。

Ruby 関連 #

GraphQL Ruby #

GraphQL のスキーマを Ruby の DSL で書けるようにするやつ。GraphQL のスキーマファイルを生成する Rake Task も提供されている。

GraphQL - Lazy Execution #

N+1 問題を避けるために DB アクセスのバッチ化をどのようにするかの解説。解説のための単純な実装なので、実際のアプリではちゃんとしたライブラリを使ったほうが良さそう。

sheerun/dataloader #

facebook/dataloader の Ruby 実装。これ系のやつの中では一番単純で使いやすそう。