タグ別アーカイブ: GraphQL

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-link/packages/apollo-link-schema

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 実装。これ系のやつの中では一番単純で使いやすそう。