Slide 1

Slide 1 text

VSCode GraphQL + GraphQL Code Generator による快適なフロントエンド開発 フロントエンドカンファレンス福岡 スピンオフ

Slide 2

Slide 2 text

Noriyuki Shinpuku Frontend engineer Findy Co., Ltd. @puku0x 2

Slide 3

Slide 3 text

@puku0x FindyはREST→GraphQL移行中 3

Slide 4

Slide 4 text

@puku0x 型の自動生成が欲しい 4

Slide 5

Slide 5 text

@puku0x GraphQL Code Generator ● スキーマから型やロジックを生成 5 https://www.graphql-code-generator.com/

Slide 6

Slide 6 text

schema: http://localhost:3000/graphql documents: ./src/**/*.graphql generates: ./src/types.ts: plugins: - typescript - typescript-operations codegen.yml 6

Slide 7

Slide 7 text

@puku0x APIドキュメントは? 7

Slide 8

Slide 8 text

@puku0x GraphiQL 8 https://github.com/graphql/graphiql

Slide 9

Slide 9 text

@puku0x 良さそう 9

Slide 10

Slide 10 text

@puku0x コード補完も欲しい 10

Slide 11

Slide 11 text

@puku0x GraphiQLも良いけど VSCodeでコード補完したい (あとシンタックスハイライトも) 11

Slide 12

Slide 12 text

@puku0x VSCode GraphQL ● 公式のVS Code拡張 12 https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql

Slide 13

Slide 13 text

@puku0x 勝ったな 13

Slide 14

Slide 14 text

@puku0x 👀 設定 14

Slide 15

Slide 15 text

@puku0x 🤔 また設定...? 15

Slide 16

Slide 16 text

@puku0x GraphQL Config ● GraphQLツールの共通設定 16 https://www.graphql-config.com/

Slide 17

Slide 17 text

schema: http://localhost:3000/graphql documents: ./src/**/*.graphql extensions: codegen: generates: ./src/types.ts: plugins: - typescript - typescript-operartions codegen.yml → .graphqlrc.yml 17

Slide 18

Slide 18 text

@puku0x 設定ファイル統合できた 18

Slide 19

Slide 19 text

@puku0x HTTPSを使いたい 19

Slide 20

Slide 20 text

NODE_TLS_REJECT_UNAUTHORIZED=0 .env 20

Slide 21

Slide 21 text

@puku0x モノレポで使いたい 21

Slide 22

Slide 22 text

projects: my-app: schema: - https://localhost:3000/graphql documents: 'apps/my-app/src/**/*.graphql' extensions: … my-lib: schema: - https://localhost:3000/graphql documents: 'libs/my-lib/src/**/*.graphql' extensions: … Projects 22

Slide 23

Slide 23 text

$ graphql-codegen --project=my-lib プロジェクト単位で実行 23

Slide 24

Slide 24 text

@puku0x Nx + @graphql-codegen/near-operation-file-preset 24

Slide 25

Slide 25 text

@puku0x Nx ● モノレポ管理 + ビルド環境 25 https://nx.dev

Slide 26

Slide 26 text

アプリケーション側 ライブラリ側(型定義の元はこっち) 26 generates: apps/my-app/src/: preset: near-operation-file presetConfig: baseTypesPath: '~@workspace/my-lib folder: __generated__ plugins: - typescript-operations - typescript-react-apollo generates: libs/my-lib/src/__generated__/types.generated.ts: plugins: - typescript libs/my-lib/src: preset: near-operation-file presetConfig: baseTypesPath: '~./types.generated' folder: __generated__ plugins: - typescript-operations - typescript-react-apollo

Slide 27

Slide 27 text

@puku0x まとめ ● GraphQLはいいぞ ○ 型の自動生成が最高だった ○ VSCodeでコード補完 ○ モノレポ対応 ■ Nxはいいぞ 27

Slide 28

Slide 28 text

@puku0x 28 https://careers.findy.co.jp/ 採用のお知らせ

Slide 29

Slide 29 text

@puku0x Thank you! @puku0x Noriyuki Shinpuku