Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
in-process GraphQL のすすめ #ginzajs
Search
izumin5210
August 17, 2026
Programming
1.6k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
in-process GraphQL のすすめ #ginzajs
izumin5210
August 17, 2026
More Decks by izumin5210
See All by izumin5210
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
970
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
2.3k
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
2
1.1k
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
8
3.2k
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
2.4k
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.9k
Web エンジニアが JavaScript で AI Agent を作る / JSConf JP 2025 sponsor session
izumin5210
4
3.7k
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
3.8k
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
1.4k
Other Decks in Programming
See All in Programming
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
510
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
400
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
190
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.6k
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.5k
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
160
GraphQL の onError と Nullability のこれから
quramy
0
200
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
140
Railsバージョンを4倍にした話
optim
0
920
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
190
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
460
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
650
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.7k
Navigating Weather and Climate Data
rabernat
0
580
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
740
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
420
Tell your own story through comics
letsgokoyo
1
1.1k
Transcript
in-process GraphQL のすすめ 2026-08-17 ginza.js #11 @izumin5210
whoami @izumin5210 LayerX バクラク事業部 (2022-09 -) Platform Engineering 部 Enabling
チーム / Dev Infrastructure チーム Staff Software Engineer バックエンドや Web フロントエンドが専門 ISUCON14 4位 好きなリポジトリは vercel-labs/wterm © LayerX Inc.
単に「GraphQL の API サーバをデプロイしてフロントエンドから叩く」以上の GraphQL の使い方を紹介します © LayerX Inc. 3
前提 | GraphQL サーバの構成要素 © LayerX Inc.
前提 | GraphQL サーバの構成要素 GraphQL サーバの構成要素 NestJS Pothos GraphQL, GraphQL
Nexus, TypeGraphQL, graphql-js SDL (*.graphql) Schema Definition @graphql-codegen/ typescript-resolvers Resolver Execution Engine Apollo Server Envelop Execution Middleware graphql-http, GraphQL Yoga Transport Adapter Hono, Express, Fastify, Next.js, … Transport ※ @izumin5210 による独自の分類です © LayerX Inc. https://speakerdeck.com/izumin5210/graphql-server-technology-selection 5
GraphQL を Next.js に乗せる © LayerX Inc.
GraphQL を Next.js に乗せる API が引くのは サーバ・クライアントの論理的な境界線 GraphQL がもたらすのは、view と
presentation logic の間の契約 それは物理的に異なるサーバである必要はない 同一プロセスに置いても、境界線はそのまま引ける 開発チームが小さい場合など、 初期はデプロイメントを1つにまとめると運用負荷が抑えられる © LayerX Inc. 7
GraphQL を Next.js に乗せる GraphQL Yoga を Next.js に乗せる GraphQL
Yoga: The Guild 製の GraphQL サーバライブラリ 層でいうと Transport Adapter Envelop(Execution Middleware)も同梱 スキーマの作り方にも、下の HTTP サーバにも依存しない 実体は Request を受けて Response を返す関数 ひとつ yoga.fetch(request) © LayerX Inc. で実行できる スキーマ + resolver graphql-js GraphQL Yoga HTTP サーバ Schema Definition Resolver Execution Engine Execution Middleware Transport Adapter Transport 8
GraphQL を Next.js に乗せる Route Handler にそのまま乗る Yoga の interface
は Fetch API の / Next.js の Route Handler もまったく同じ interface Request © LayerX Inc. Response 9
GraphQL を Next.js に乗せる Transport が Next.js になっただけ スキーマ +
resolver graphql-js GraphQL Yoga Next.js Route Handler Schema Definition Resolver Execution Engine Execution Middleware Transport Adapter Transport 差し替わったのは一番外側の層だけ。中身はどのデプロイ形態でも同じ © LayerX Inc. 10
GraphQL を Next.js に乗せる 運用が増えてから切り出せばいい 初期はデプロイするのが Next.js だけで済む 監視・デプロイ・権限まわりの 面倒が増えない
切り出すときも、 差し替わるのは Transport だけ スキーマと resolver はそのまま © LayerX Inc. 11
RSC / SSR から GraphQL を直接呼ぶ © LayerX Inc.
RSC / SSR から GraphQL を直接呼ぶ Transport を飛ばして直接実行する スキーマ +
resolver execute({ schema, document, … }) yoga.fetch(request) → → graphql-js GraphQL Yoga Next.js Route Handler 必要な層だけ着けて、その層を直接呼べばよい © LayerX Inc. Schema Definition Resolver Execution Engine Execution Middleware Transport Adapter Transport 13
RSC / SSR から GraphQL を直接呼ぶ RSC — yoga.fetch yoga.fetch
Request を直接呼ぶ はグローバルの fetch ではなく、Yoga インスタンスのメソッド を渡すとその場で GraphQL が走り、 Response が返る Server Component は async 関数なので、これを await するだけ © LayerX Inc. 14
RSC / SSR から GraphQL を直接呼ぶ SSR — Apollo Client
の YogaLink Apollo Client の API はそのまま。差し替わるのは link だけ Client Component と同じ書き味のまま、サーバ側でも実行できる © LayerX Inc. 15
メール・Slack から呼ぶ © LayerX Inc.
メール・Slack から呼ぶ メールも Slack も、Web ページと同じ view 出てくるものは同じ 「表示用の氏名」「ステータスの表示名」「金額の書式」… 本質的に同じ
presentation logic が使われるはず ならば Web frontend と同じ方法論が使えるはず © LayerX Inc. 17
メール・Slack から呼ぶ Web frontend の方法論をそのまま持ち込む ① component 指向で view を組む
jsx-slack — Slack Block Kit react-email — メール HTML vercel/chat — チャット UI fragment colocation もそのまま ② presentation logic は API の裏に隠蔽されている 表示のためのロジックは、Web frontend 向けの resolver にすでにある 「この view に何が必要か」の宣言 (query + DataLoader)ごと再利用できる GraphQL が in-process で呼べればオーバーヘッドを最小にしつつ再利用できる © LayerX Inc. 18
メール・Slack から呼ぶ component が自分の依存データを宣言する © LayerX Inc. https://speakerdeck.com/izumin5210/using-typescript-plus-jsx-outside-of-web-frontend-number-tskaigikansai 19
メール・Slack から呼ぶ 呼び出し側 メールなら render(<ReportEmail data={data.contentReport} />) に変わるだけ © LayerX
Inc. 20
まとめ © LayerX Inc.
まとめ in-process GraphQL のすすめ GraphQL サーバは層に分解できて、Transport は一番外側の層でしかない API が引くのは論理的な境界線。物理的に分けなくても成立する Next.js
に相乗りさせれば、デプロイメントを増やさずに始められる 必要な層だけ着けて、その層を直接呼べる RSC / SSR、そしてメール・Slack のような push 型 view からも 結果として「view のためのデータ取得と presentation logic」を、 Web frontend の外へほぼコストゼロで持ち出せる © LayerX Inc. 22