初めてのGraphQL

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

[cover photo]
TOPICS
Web
発行年月日
PRINT LENGTH
256
ISBN
978-4-87311-893-2
原書
Learning GraphQL
FORMAT
Print PDF EPUB
Ebook
2,860円
Ebookを購入する
Print
2,860円

今日では多くのWebサービスがRESTアーキテクチャスタイルで実装されています。RESTは2000年にフィールディングの論文で提唱された後に爆発的に普及し洗練されてきました。一方で、本書で紹介するGraphQLは2015年にFacebookによって公開されたRESTとは異なるアプローチのアーキテクチャです。GraphQLの最大の特徴はクエリ言語を用いてデータを操作する点です。クエリ言語の表現力の高さによりクライアントは本当に必要なリクエストを送ることができます。本書ではGraphQLの概要とGraphQLを用いたWebサービスの開発方法を実装例に沿って紹介します。認証やファイルアップロードといった実践的なトピックまで踏み込んだGraphQLの実用的な入門書です。

関連ファイル

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表(第1刷)



■P.vii L.9(下から)
  • 【誤】GrapghQL
  • 【正】GraphQL
■P.48  L.9(下から)
  • 【誤】List型の
  • 【正】Lift型の
■P.51  L.13(上から) ※https://www.graphqlbin.com/v2/new の共有URL生成機能が正常に動作していないため、こちらのURLからお試しください
  • 【誤】https://graphqlbin.com/v2/ANgjtr
  • 【正】https://72kppqr7kq.sse.codesandbox.io/
■P.53  L.10(下から) ※https://www.graphqlbin.com/v2/new の共有URL生成機能が正常に動作していないため、こちらのURLからお試しください
  • 【誤】https://graphqlbin.com/v2/yoyPfz
  • 【正】https://p79k2n635x.sse.codesandbox.io/
■P.71  L.8(上から)
  • 【誤】構成されるでデータになり
  • 【正】構成されるデータになり
■P.75  L.12(下から)
  • 【誤】DataTime
  • 【正】DateTime
■P.82  L.4(下から)
  • 【誤】エラーが帰ってきます
  • 【正】エラーが返ってきます
■P.138  L.12(下から)
  • 【誤】写真共有サービス
  • 【正】写真共有アプリケーション
■P.149  L.4(下から)
  • 【誤】写真管理サービス
  • 【正】写真共有アプリケーション
■P.213  L.7(上から)
  • 【誤】Amazon Web Service
  • 【正】Amazon Web Services

正誤表(第2刷)



■P.79 L.13(下から)
  • 【誤】pages = pageSize/total
  • 【正】pages = total/pageSize
■P.112 L.8(下から)
  • 【誤】query recentPhotos(after:DateTime) {
  • 【正】query recentPhotos($after:DateTime) {

目次

賞賛の声
訳者まえがき
まえがき

1章 GraphQLへようこそ
    1.1 GraphQLとは
        1.1.1 GraphQLの言語仕様
        1.1.2 GraphQLの設計原則
    1.2 GraphQLの誕生
    1.3 データ通信の歴史
        1.3.1 RPC
        1.3.2 SOAP
        1.3.3 REST
    1.4 RESTの課題
        1.4.1 過剰な取得
        1.4.2 過小な取得
        1.4.3 RESTのエンドポイント管理
    1.5 GraphQLの実情
        1.5.1 GraphQLのクライアント

2章 グラフ理論
    2.1 グラフ理論の用語
    2.2 グラフ理論の歴史
    2.3 木というグラフ
    2.4 実世界でのグラフ

3章 GraphQLの問い合わせ言語
    3.1 GraphQL APIの便利なツール
        3.1.1 GraphiQL
        3.1.2 GraphQL Playground
        3.1.3 公開GraphQL API
    3.2 GraphQLのクエリ
        3.2.1 エッジと接続
        3.2.2 フラグメント
    3.3 ミューテーション
        3.3.1 クエリ変数
    3.4 サブスクリプション
    3.5 イントロスペクション
    3.6 抽象構文木

4章 スキーマの設計
    4.1 型定義
        4.1.1 型
        4.1.2 スカラー型
        4.1.3 Enum
    4.2 コネクションとリスト
        4.2.1 一対一の接続
        4.2.2 一対多の接続
        4.2.3 多対多の接続
        4.2.4 異なる型のリスト
    4.3 引数
        4.3.1 データのフィルタリング
    4.4 ミューテーション
    4.5 入力型
    4.6 返却型
    4.7 サブスクリプション
    4.8 スキーマのドキュメント化

5章 GraphQLサーバーの実装
    5.1 プロジェクトのセットアップ
    5.2 リゾルバ
        5.2.1 ルートリゾルバ
        5.2.2 型リゾルバ
        5.2.3 InputとEnumの使用
        5.2.4 エッジと接続
        5.2.5 カスタムスカラー型
    5.3 apollo-server-express
    5.4 コンテキスト
        5.4.1 MongoDBのインストール
        5.4.2 コンテキストへのデータベースの追加
    5.5 GitHub認可
        5.5.1 GitHub OAuthのセットアップ
        5.5.2 認可プロセス
        5.5.3 githubAuthミューテーション
        5.5.4 ユーザーの認証
    5.6 まとめ

6章 GraphQLクライアントの実装
    6.1 GraphQL APIの利用
        6.1.1 フェッチリクエスト
        6.1.2 graphql-request
    6.2 Apollo Client
    6.3 Apollo ClientとReact
        6.3.1 プロジェクトの準備
        6.3.2 Apollo Clientの設定
        6.3.3 Queryコンポーネント
        6.3.4 Mutationコンポーネント
    6.4 認可
        6.4.1 ユーザー認可
        6.4.2 ユーザー識別
    6.5 キャッシュ
        6.5.1 フェッチポリシー
        6.5.2 キャッシュの永続化
        6.5.3 キャッシュの更新

7章 GraphQLの実戦投入にあたって
    7.1 サブスクリプション
        7.1.1 サブスクリプションの利用
        7.1.2 サブスクリプションの処理
    7.2 ファイルアップロード
        7.2.1 サーバーでアップロードを処理する
        7.2.2 Apollo Clientを使用した写真の新規投稿
    7.3 セキュリティ
        7.3.1 リクエストタイムアウト
        7.3.2 データの制限
        7.3.3 クエリ深さの制限
        7.3.4 クエリの複雑さ制限
        7.3.5 Apollo Engine
    7.4 次の段階にすすむ
        7.4.1 漸進的なマイグレーション
        7.4.2 スキーマファースト開発
        7.4.3 GraphQLイベント
        7.4.4 コミュニティ
        7.4.5 コミュニティのSlackチャンネル

付録A Relay各仕様解説
    A.1 Global Object Identification
    A.2 Cursor Connections
    A.3 Input Object Mutations
    A.4 Mutations updater

索引