Book description
今日では多くのWebサービスがRESTアーキテクチャスタイルで実装されています。RESTは2000年にフィールディングの論文で提唱された後に爆発的に普及し洗練されてきました。一方で、本書で紹介するGraphQLは2015年にFacebookによって公開されたRESTとは異なるアプローチのアーキテクチャです。GraphQLの最大の特徴はクエリ言語を用いてデータを操作する点です。クエリ言語の表現力の高さによりクライアントは本当に必要なリクエストを送ることができます。本書ではGraphQLの概要とGraphQLを用いたWebサービスの開発方法を実装例に沿って紹介します。認証やファイルアップロードといった実践的なトピックまで踏み込んだGraphQLの実用的な入門書です。
Table of contents
- 大扉
- 原書大扉
- クレジット
- 賞賛の声
- 訳者まえがき
- 翻訳にあたって
- GraphQLの概観
- 謝辞
- まえがき
- 本書の構成
- 対象読者
- 表記上のルール
- サンプルコードの使用について
- 意見と質問
- 謝辞
- 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
- 奥付
Product information
- Title: 初めてのGraphQL ―Webサービスを作って学ぶ新世代API
- Author(s):
- Release date: November 2019
- Publisher(s): O'Reilly Japan, Inc.
- ISBN: 9784873118932
You might also like
book
ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化
現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。
book
詳説 イーサネット 第2版
イーサネット技術についての解説書。本書では、ファーストイーサネットやギガビットイーサネットなどの従来技術だけでなく、10ギガ、40ギガ、100ギガビットなど最新のイーサネット仕様を詳しく解説します。また、全二重イーサネット、オートネゴシエーション、Power over Ethernet、Energy Efficient Ethernet、構造化ケーブリングシステム、スイッチを用いたネットワークの設計、ネットワーク管理、ネットワークのトラブルシューティングのテクニックなども解説します。ネットワークの設計、監視、保守、障害時対応までを網羅し、信頼性の高いネットワークの構築を支援します。
book
アイソモーフィックJavaScript
アイソモーフィックJavaScriptは、クライアントサイド(ブラウザ)とサーバーサイドで同じコードを実行できるようにするためのフレームワークの総称。本書では、従来のアプリケーションが持つ問題点(読み込みの遅さ、SEO対策の困難さなど)を明らかにするところから始め、アイソモーフィックなアプリケーションの分類やアイソモーフィックさの度合いについて理解したうえで、アイソモーフィックなJavaScriptフレームワークを構築するための実践手法を解説し、Walmart、Airbnb、Facebook、Netflixといった大企業がアイソモーフィックJavaScriptを選んだ理由を明らかにします。読者は、なぜこのアプリケーションアーキテクチャーが、ページ読み込み速度やSEOコンパチビリティといった、ビジネス面でクリティカルな問題を解決するためのソリューションとして人気上昇中なのかを学べます。
book
脳に収まるコードの書き方 ―複雑さを避け持続可能にするための経験則とテクニック
ソフトウェアは複雑さを増すばかりですが、人間の脳は限られた複雑さしか扱えません。ソフトウェアが思い通りに動くようするには、脳に収まり、人間が理解できるコードを書く必要があります。 本書は、拡張を続けても行き詰ることなくコードを書き、複雑さを回避するための実践的な方法を解説します。最初のコードを書き始めるところから機能を追加していくところまでを解説し、効率的で持続可能なペースを保ちながら、横断的な問題への対処やトラブルシューティング、最適化を行なう方法を説明します。自分のチェックリストからチームワーク、カプセル化から分解、API設計から単体テストまで、ソフトウエア開発の重要な課題に対する考え方やテクニックを紹介します。サンプルプロジェクトで使うコードは、Gitリポジトリの形で入手でき、試しながら学べます。 有効に機能するプロセスを選び、効果のない方法論から脱却する方法。チェックリストを使うことで、すでに持っているスキルを活用する方法。アプリケーションのバーティカルスライス(ひとつの機能をUIからバックエンドまで一通り実装したもの)を作成しデプロイすることで、分析による停滞から脱却する方法を学びます。さらに、コードの腐敗や不必要な複雑さにつながる要因を避ける方法、コードの振る舞いを変更するためのテクニック、コードの問題を迅速かつ効果的に解決する方法について解説します。