Slide 1

Slide 1 text

Persisted-queryをやってみた @indigolain

Slide 2

Slide 2 text

Who am I? ● indigolain / 上原拓也 ● Rails / React / GraphQL ● 最近個人プロジェクトでUnityで3Dサウンドを使ったゲーム を作ろうと試行錯誤しています

Slide 3

Slide 3 text

Automatic Persisted Queries ● Apolloが提供しているPersisted Queryの仕組み ● リクエストを小さくする、もしくはcacheを使うことを目的としたもの ○ 望まないクエリの排除などの機能はない ● apollo-server, apollo-clientなどapolloなライブラリを組み合わせると ある程度動くものがさらっとできます

Slide 4

Slide 4 text

Automatic Persisted Queries https://www.apollographql.com/docs/apollo-server/performance/apq/

Slide 5

Slide 5 text

Automatic Persisted Queries https://www.apollographql.com/docs/apollo-server/performance/apq/

Slide 6

Slide 6 text

Automatic Persisted Queries https://www.apollographql.com/docs/apollo-server/performance/apq/

Slide 7

Slide 7 text

Automatic Persisted Queries https://www.apollographql.com/docs/apollo-server/performance/apq/

Slide 8

Slide 8 text

Automatic Persisted Queries https://www.apollographql.com/docs/apollo-server/performance/apq/

Slide 9

Slide 9 text

Automatic Persisted Queries https://www.apollographql.com/docs/apollo-server/performance/apq/

Slide 10

Slide 10 text

すごい、便利

Slide 11

Slide 11 text

でも・・・ ● 登録されているクエリ-ハッシュのペアをコードで管理したい ● 登録されるクエリ-ハッシュのペアをレビューできるようにして、どのような クエリが呼ばれる可能性があるのか把握したい リクエストされるクエリを把握し、 新しく送られるクエリについてPRなどで議論できるようにしたい

Slide 12

Slide 12 text

でも・・・ クライアントのコードから クエリ-ハッシュがペアになっている JSONを自動生成できるようになれば コード化 && レビュー できるのでは ● 登録されているクエリ-ハッシュのペアをコードで管理したい ● 登録されるクエリ-ハッシュのペアをレビューできるようにして、どのような クエリが呼ばれる可能性があるのか把握したい

Slide 13

Slide 13 text

{ "version": 2, "operations": [ { "signature": "e5f…...", "document": "query UpdateQuery….", "metadata": { "engineSignature": "" } }, ….. ] } query UpdateQuery($courseId: ID!) { updateQuery(id: $id) { …... } } Query JSON apollo client:extract https://github.com/apollographql/apollo-tooling#apollo-clientextract-output query UpdateQuery2($courseId: ID!) { updateQuery2(id: $id) { …... } } JSON生成 & PR化

Slide 14

Slide 14 text

JSONを参照して hash → クエリする処理 https://www.apollographql.com/docs/apollo-server/performance/apq/

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

TODO ● 生成したJSONの管理の仕方 ○ NativeアプリのバージョンによってJSONを分離する? ○ Nativeクライアントの種類によってJSONを分離する? ● etc…. 話したこと ● ApolloのAutomatic Persisted Queriesの仕組みを活用しつつ、 persistするクエリをJSONで自由に登録できるようにした ● JSONで発行されるクエリをコード化することによって、クライアントから呼 ばれるクエリをレビューするための仕組みができた

Slide 21

Slide 21 text

fin