初めての GraphQL

ハジメテノグラフキューエル

Web サービスを作って学ぶ新世代 API

初めての GraphQL の表紙
プログラミング
著者:
Eve Porcello / Alex Banks / 尾崎 沙耶 / あんどう やすし(エバ ポロッセロ / アレックス バンクス / オザキ サヤ / アンドウ ヤスヒ)
出版社:
オライリー・ジャパン
出版日:
2019年11月13日頃
ISBN:
9784873118932
在庫:
在庫あり
3.75(6 件 / 楽天ブックス)

なぜ注目されているか

言及数
174位
総合387位 ↑ 6 ランクアップ 言及 21 件・うち記事 15 件を掲載
04820222023202420252026

書籍紹介

GraphQL は 2015 年に Facebook により公開された、REST とは異なるアプローチのアーキテクチャ。クエリ言語を用いてデータを操作し、その表現力の高さにより本当に必要なリクエストを送ることができる。本書では GraphQL の概要と、GraphQL を用いた Web サービスの開発方法を実装例に沿って紹介。

技書の森解説

REST の API でデータを取りすぎたり、逆に足りずに何度もリクエストを重ねたりする問題に対して、GraphQL という別の設計を基礎から学び、実際に Web サービスを組み立てるところまで進む入門書が『初めての GraphQL』 (Eve Porcello、Alex Banks 著、尾崎 沙耶、あんどうやすし 訳、オライリー・ジャパン、2019 年 11 月 13 日発行) です。原書は Learning GraphQL で、副題は「Web サービスを作って学ぶ新世代 API」です。版元の紹介では、GraphQL を 2015 年に Facebook によって公開された、クエリ言語を用いてデータを操作する REST とは異なるアプローチのアーキテクチャと位置づけ、その概要と開発方法を実装例に沿って紹介し、認証やファイルアップロードといった実践的なトピックにまで踏み込んだ実用的な入門書と案内しています。

全 7 章の構成、なぜ GraphQL かから実戦投入まで

1 章「GraphQL へようこそ」は、言語仕様と設計原則、誕生の経緯に続いて、RPC、SOAP、REST というデータ通信の歴史をたどり、REST の課題として過剰な取得、過小な取得、エンドポイントの管理を挙げます。2 章は「グラフ理論」で、用語と歴史、木というグラフ、実世界のグラフを扱います。3 章で問い合わせ言語 (クエリ、ミューテーション、サブスクリプション、イントロスペクション、抽象構文木) を学び、4 章「スキーマの設計」で型定義、一対一から多対多までの接続、引数、入力型と返却型、スキーマのドキュメント化へ進みます。5 章でサーバー、6 章でクライアントを実装し、7 章「GraphQL の実戦投入にあたって」でサブスクリプション、ファイルアップロード、セキュリティ、次の段階への進み方をまとめます。巻末の付録 A は Relay の各仕様の解説です。まず考え方と言語を押さえ、そのあとで設計と実装に移る順序と読めます。

REST の課題とクエリ 1 本で取る設計

REST API では、資源ごとに URL を用意し、サーバーが返すデータの形はエンドポイントごとに決まっています。画面に必要な項目が一部だけでも決められた形のまま全部を受け取る過剰な取得と、1 回では足りずに関連する資源を何度も取りに行く過小な取得は、この構造から生まれる問題です。GraphQL では、サーバーが型の付いたスキーマで取得できるデータの全体を公開し、クライアントは必要な項目と関係の深さをクエリで指定して 1 回で受け取ります。本書が実装の前に 2 章をグラフ理論に割き、4 章で接続の種類を一対一、一対多、多対多と分けて設計させるのは、データ同士の関係をグラフとして捉えることが、この設計の出発点だからと読めます。一方で、クライアントが自由に深い問い合わせを書けることは、サーバーの負荷を読みにくくする面も持ちます。7 章のセキュリティの節がリクエストタイムアウト、データの制限、クエリ深さの制限、クエリの複雑さ制限を並べているのは、この性質への備えです。

Apollo と React、MongoDB で組む写真共有の題材

実装の章では、5 章でプロジェクトのセットアップからリゾルバ、apollo-server-express、MongoDB を使ったコンテキストへのデータベースの追加へ進み、GitHub の OAuth を使った認可とユーザーの認証までを組み込みます。6 章はフェッチリクエストと graphql-request による API の利用から始まり、Apollo Client を React と組み合わせた画面の実装、ユーザー認可、フェッチポリシーやキャッシュの永続化と更新を扱います。7 章では GraphQL のサブスクリプション によるリアルタイムの通知と、Apollo Client を使った写真の新規投稿を通じたファイルアップロードを実装します。版元の正誤表では題材が写真共有アプリケーションと表記されており、サーバーとクライアントの両側を同じ題材で通して作る構成です。各ライブラリは 2019 年時点の構成を前提にしているため、別の版で試す場合はそれぞれの公式ドキュメントで手順を確かめながら進める必要があります。

GraphQL の導入を検討する Web 開発者に向く一冊

目次に出てくるサーバーのライブラリは apollo-server-express の 1 つなので、別の言語やフレームワークで導入する人は、本書で設計の考え方を押さえたうえで、その言語のライブラリの資料を併用することになります。REST の API を運用していて、取りすぎと取り足りなさ、エンドポイントの増加に悩んでいる人、あるいは GraphQL を採用するかどうかを判断する材料を設計と実装の両面から集めたい人にとって、考え方から認可、キャッシュ、セキュリティまでを 1 つの題材で通して体験できる本書は、検討の出発点として手に取る価値があります。

言及した記事 (15 件)

関連記事

関連用語

共有: