『初めてのGraphQL』
https://gyazo.com/53e509c07ee172a374198baf8b917d56
2019/11
原著
Learning GraphQL
2018/9/11
著者
Eve Porcello
Alex Banks
GraphQLの本
オライリー
オライリーのサブスクに日本語である
github
読もうと思った動機
業務で使いそうだから
オライリーのサブスクにあったから
miyamonz.iconが読んでるのを見て、日本語のやつが存在することを知った
本について
GraphQL全く知らない人が想定読者だと思う
だいぶ読みやすい
250ページぐらい
言語はJavaScript(Node.js/React)
この本が書かれた当時は、Schema Firstが流行っていた時期であったことに注意
この本の中で「コードファースト」という単語は出てこない
ref GraphQL ServerのCode frist→ Schema first→ Code firstの遍歴
1章 GraphQLへようこそ
GraphQLの概要
GraphQLの誕生の背景
2章 グラフ理論
おもろそうだけど、いったんスルーmrsekut.icon
2.1 グラフ理論の用語
2.2 グラフ理論の歴史
2.3 木というグラフ
2.4 実世界でのグラフ
3章 GraphQLの問い合わせ言語
A Relational Model of Data for Large Shared Databanks
https://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf
RDBMSとかSEQUELの元になった論文?
GraphQLのquery
3.2.2.1 ユニオン型から
3.2 GraphQLのクエリ
3.2.1 エッジと接続
3.2.2 フラグメント
3.3 ミューテーション
3.3.1 クエリ変数
3.4 サブスクリプション
3.5 イントロスペクション
3.6 抽象構文木
4章 スキーマの設計
GraphQL Schemaの設計
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サーバーの実装
Node.jsを使う
@apollo/serverを使って、graphql serverを作る
5.2.3 InputとEnumの使用
5.2.4 エッジと接続
5.2.5 カスタムスカラー型
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クライアントの実装
GraphQL Client
Reactを使う
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の実戦投入にあたって
5,6章の続き
GraphQLのSubscriptionを使う
プッシュ通知を作る?
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 IR各仕様解説
A.1 Global Object Identification
A.2 Cursor Connections
A.3 Input Object Mutations
A.4 Mutations updater