$30 off During Our Annual Pro Sale. View Details »

Persisted-queryをやってみた

indigolain
August 28, 2020

 Persisted-queryをやってみた

GraphQL Tokyo #10 発表資料

indigolain

August 28, 2020
Tweet

More Decks by indigolain

Other Decks in Technology

Transcript

  1. Persisted-queryをやってみた @indigolain

  2. Who am I? • indigolain / 上原拓也 • Rails /

    React / GraphQL • 最近個人プロジェクトでUnityで3Dサウンドを使ったゲーム を作ろうと試行錯誤しています
  3. Automatic Persisted Queries • Apolloが提供しているPersisted Queryの仕組み • リクエストを小さくする、もしくはcacheを使うことを目的としたもの ◦ 望まないクエリの排除などの機能はない

    • apollo-server, apollo-clientなどapolloなライブラリを組み合わせると ある程度動くものがさらっとできます
  4. Automatic Persisted Queries https://www.apollographql.com/docs/apollo-server/performance/apq/

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

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

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

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

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

  10. すごい、便利

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

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

    • 登録されるクエリ-ハッシュのペアをレビューできるようにして、どのような クエリが呼ばれる可能性があるのか把握したい
  13. { "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化
  14. JSONを参照して hash → クエリする処理 https://www.apollographql.com/docs/apollo-server/performance/apq/

  15. None
  16. None
  17. None
  18. None
  19. None
  20. TODO • 生成したJSONの管理の仕方 ◦ NativeアプリのバージョンによってJSONを分離する? ◦ Nativeクライアントの種類によってJSONを分離する? • etc…. 話したこと

    • ApolloのAutomatic Persisted Queriesの仕組みを活用しつつ、 persistするクエリをJSONで自由に登録できるようにした • JSONで発行されるクエリをコード化することによって、クライアントから呼 ばれるクエリをレビューするための仕組みができた
  21. fin