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
GraphQL スキーマで支えるレジアプリ開発 / "hey Talk" Engineers #4
ta-chibana
August 31, 2021
More Decks by ta-chibana
See All by ta-chibana
STORES で GraphQL について考えた話
tachibana
1
360
わたしの知らなかった超絶技巧プログラミングの世界
tachibana
2
790
Other Decks in Technology
See All in Technology
これからの「データマネジメント」の話をしよう
sansantech
PRO
0
140
はじめての MagicPod生成AI機能 機能紹介から活用方法まで
magicpod
0
110
AI駆動1on1〜AIに自分を育ててもらう〜
yoshiakiyasuda
0
130
今年注目する!データ分析プラットフォームでのAIの活用
nayuts
0
140
CloudTrail を見つめ直してみる
kazzpapa3
1
100
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
8
1.3k
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
3
390
260422_Sansan_Tech_Talk__関西_vol.3_データ活用のリアル__矢田__.pdf
sansantech
PRO
0
110
音声言語モデル手法に関する発表の紹介
kzinmr
0
120
マルチプロダクトの信頼性を効率良く保っていくために
kworkdev
PRO
0
170
AIを共同作業者にして書籍を執筆する方法 / How to Write a Book with AI as a Co-Creator
ama_ch
2
130
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
1.4k
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Mobile First: as difficult as doing things right
swwweet
225
10k
Statistics for Hackers
jakevdp
799
230k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Designing Experiences People Love
moore
143
24k
AI: The stuff that nobody shows you
jnunemaker
PRO
6
580
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Unsuck your backbone
ammeep
672
58k
Visualization
eitanlees
150
17k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
740
BBQ
matthewcrist
89
10k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
270
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
まとめ • スキーマが実装から生成できるので乖離なく、 スキーマ定義と実装が同時にできるので開発速度向上が狙えた • 生成されるスキーマ・ドキュメントによって共通言語が作られ、 コミュニケーションコストが下がった • 必要になったらスキーマ定義から始めることもできそうなので そのうち試してみても良さそう
ありがとうございました!