Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GraphQL スキーマで支えるレジアプリ開発 / "hey Talk" Engineers #4
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ta-chibana
August 31, 2021
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GraphQL スキーマで支えるレジアプリ開発 / "hey Talk" Engineers #4
ta-chibana
August 31, 2021
More Decks by ta-chibana
See All by ta-chibana
STORES で GraphQL について考えた話
tachibana
1
370
わたしの知らなかった超絶技巧プログラミングの世界
tachibana
2
810
Other Decks in Technology
See All in Technology
Bill One 開発エンジニア 紹介資料
sansan33
PRO
7
19k
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
140
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
220
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
180
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
130
第3回しろおびセキュリティスポンサーセッション
log0417
0
170
システム思考で問題に対処する
yussak
0
230
事業価値と Engineering 2026年度版
recruitengineers
PRO
47
23k
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
210
Webアクセシビリティ入門 2026
recruitengineers
PRO
3
530
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
250
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
3
710
Featured
See All Featured
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
260
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Being A Developer After 40
akosma
91
590k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
990
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.5k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
850
Bash Introduction
62gerente
615
220k
ラッコキーワード サービス紹介資料
rakko
1
4.3M
Building the Perfect Custom Keyboard
takai
2
840
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
Skip the Path - Find Your Career Trail
mkilby
1
180
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Transcript
GraphQL スキーマで支える レジアプリ開発 Takuma Chibana 2021-08-18 "hey Talk" Engineers #4
自己紹介 • 知花 卓磨 • https://github.com/ta-chibana • バックエンドエンジニア • STORES
レジ や EC の 開発をやっています
「STORES レジ」を リリースしました!
「STORES レジ」を 支えるエンジニアリング
None
• レジ用 API は EC(Rails)のコードベースに乗る形で実装 • graphql-ruby を使って実装 • GraphQL
スキーマやそれを使った開発の進め方について話します
なぜ GraphQL ? • アプリチームから GraphQL を使いたいという相談 • API スキーマ・ドキュメントの管理がいい感じにできそう
(検討当時は EC の API スキーマが管理されていなかった) • その他 GraphQL にすることによるメリット (もちろんデメリットも) • バックエンドとして利用するにあたって 大きな問題はなさそうだと判断
アプリチームとどのように お仕事を進めたか
「初めての GraphQL」読書会をやった • 初めて GraphQL に関わる メンバーが多かった • レジの開発に関わるメンバーと そうでないメンバー数名が
参加した
「初めての GraphQL」読書会をやった API 開発に関する思い出が 語られるなどした
API スキーマの設計・共有方法
API スキーマの設計・共有方法 1. バックエンドで API のインターフェースを設計・実装する (この間アプリチームは UI の実装を並行して進める) 実装
API スキーマの設計・共有方法 2. GraphQL::RakeTask を利用した rake タスクを用意し 定義された rake タスクを実行して実装からスキーマを生成する
bin/rails graphql:schema:idl
API スキーマの設計・共有方法 3. アプリチームは生成された schema.graphql ファイルを 利用して開発を進める 開発に利用
EC での API 開発の流れと比較する
EC での API 開発の流れ 1. フロントエンドエンジニアと議論してスキーマを定義する
EC での API 開発の流れ 2. スキーマ定義にあうように API を実装する
両者の違い レジ • 実装から始める • スキーマは実装から生成 • スキーマの設計は バックエンドエンジニアが行う EC
• スキーマ定義から始める • スキーマは Stoplight Studio などで YAML を作成して定義 • スキーマの設計は バックエンド・フロントエンド 両チームで議論して行う
Q. やってみてどうだった?
Q. やってみてどうだった? • A. 良かったと思う • スキーマの自動生成が楽で、API 開発を素早く進めることができた • 実装とスキーマ定義に乖離がなくて良い
• API スキーマの用語で議論できた
Q. スキーマ定義が最初ではない?
Q. スキーマ定義が最初ではない? • A. はい • アプリチームメンバーはこれまで EC と関わったことがない •
EC のことを知っているバックエンドチームのメンバーで 設計した方が早そうだと判断 • 不明点あれば適宜コミュニケーションをとった • 両チームとも要件定義段階で関わっていた & ドキュメントもあるので認識のズレは起こりづらかった • 仲が悪くならなかった
Q. スキーマ定義から始めることは できない?
Q. スキーマ定義から始めることはできない? • A. いいえ • graphql-ruby の DSL を使いながら議論して
先にスキーマ定義を作ることはできそう(今回はやっていない) 実装経験なくても理解はできそう ...? ↑ココ
Q. スキーマ生成タスクの実行漏れは?
Q. スキーマ生成タスクの実行漏れは? • A. テストで防いでいます • この辺りは graphql-ruby のドキュメントを参考にしました https://graphql-ruby.org/testing/schema_structure.html
まとめ • スキーマが実装から生成できるので乖離なく、 スキーマ定義と実装が同時にできるので開発速度向上が狙えた • 生成されるスキーマ・ドキュメントによって共通言語が作られ、 コミュニケーションコストが下がった • 必要になったらスキーマ定義から始めることもできそうなので そのうち試してみても良さそう
ありがとうございました!