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
GraphQL スキーマで支えるレジアプリ開発 / "hey Talk" Engineers #4
Search
ta-chibana
August 31, 2021
Technology
1.8k
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
390
わたしの知らなかった超絶技巧プログラミングの世界
tachibana
2
820
Other Decks in Technology
See All in Technology
自治体AIコンタクトセンター、何をどこに任せる?~Amazon Connect Customer +Amazon Bedrockの実践知~ / 20261107 Satoshi Torano
shift_evolve
PRO
1
120
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
630
[General] 개발자로 해외 기업에서 일하기
skydoves
1
310
会社説明資料_最新版
demaecan
0
32k
GCASアップデート(202607-202610)
techniczna
1
240
PostgreSQL オプティマイザ統計の秘密
nori_shinoda
1
440
DBTS2026 盛り上がってますか!?Databricksが実現するAI時代のデータ基盤
akuwano
1
200
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
130
内製アプリとClaudeスキルのセキュリティチェック、 Backlogの課題で回しています。
ayaka_egaaa
0
160
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.7k
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
230
[JAWS Festa 2026]一番いい仕事は、請求書に現れない / jawsfesta2026
sh_fk2
2
420
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1.1k
Automating Front-end Workflow
addyosmani
1370
210k
Exploring anti-patterns in Rails
aemeredith
4
560
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
48k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
680
HDC tutorial
michielstock
2
1k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Code Reviewing Like a Champion
maltzj
529
40k
GraphQLとの向き合い方2022年版
quramy
50
15k
The Language of Interfaces
destraynor
162
27k
How GitHub (no longer) Works
holman
316
150k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
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
まとめ • スキーマが実装から生成できるので乖離なく、 スキーマ定義と実装が同時にできるので開発速度向上が狙えた • 生成されるスキーマ・ドキュメントによって共通言語が作られ、 コミュニケーションコストが下がった • 必要になったらスキーマ定義から始めることもできそうなので そのうち試してみても良さそう
ありがとうございました!