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
現実世界のJSON Hyper-Schema / Real World JSON Hyper-...
Search
Kenichi Takahashi
February 25, 2015
Programming
6
6.5k
現実世界のJSON Hyper-Schema / Real World JSON Hyper-Schema
Ruby Business User Conference 2015での発表資料です。
Kenichi Takahashi
February 25, 2015
Tweet
Share
More Decks by Kenichi Takahashi
See All by Kenichi Takahashi
Lv1,2の開発生産性を経営と繋ぐ
kenchan
4
1.7k
「トップ10プランナー」からはじめる目標設定
kenchan
5
3.5k
負債と言わないことが負債と向き合うこと
kenchan
5
3.7k
可用性No.1へ!「カラーミーショップ」のリ・アーキテクティング
kenchan
0
88
カラーミーショップは私たちが作っています
kenchan
0
1.4k
カラーミーショップ 2022 / COLORME SHOP 2022
kenchan
0
620
Amazon RDS移行のための 性能検証でわかった2つのこと
kenchan
3
3.8k
ポストコロナの商売を支えるカラーミーショップのアーキテクチャのこれから / The new architecture of COLORME SHOP in the Post-COVID-19 world
kenchan
2
2k
ペパボのエンジニアリングマネジメント一問一答 / engineering-management-q-and-a-in-gmo-pepabo
kenchan
7
2.5k
Other Decks in Programming
See All in Programming
Alba: Why, How and What's So Interesting
okuramasafumi
0
230
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
1
160
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.5k
ErdMap: Thinking about a map for Rails applications
makicamel
1
890
chibiccをCILに移植した結果 (NGK2025S版)
kekyo
PRO
0
180
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
140
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
360
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
230
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
970
PicoRubyと暮らす、シェアハウスハック
ryosk7
0
250
rails newと同時に型を書く
aki19035vc
6
730
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
140
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
Code Reviewing Like a Champion
maltzj
521
39k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
174
51k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
We Have a Design System, Now What?
morganepeng
51
7.4k
How to train your dragon (web standard)
notwaldorf
89
5.8k
Speed Design
sergeychernyshev
25
750
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Cult of Friendly URLs
andyhume
78
6.2k
A designer walks into a library…
pauljervisheath
205
24k
Transcript
GMO Pepabo, Inc. Kenichi TAKAHASHI 2015/02/25 Ruby Business User Conference
2015 ݱ࣮ੈքͷ +40/)ZQFS4DIFNB
ߴڮ݈Ұ!LFODIBO (.0ϖύϘגࣜձࣾ ٕज़෦ٕज़ج൫νʔϜ IUUQTIVDSFBNOFU
None
None
ࠓͷ͓ +40/)ZQFS4DIFNBͱ ϖύϘͱ+40/)ZQFS4DIFNB ͓·͚
+40/ )ZQFS4DIFNB ͱ
+40/4DIFNB +40/ͷσʔλߏΛఆٛ͢Δ +40/4DIFNB$PSF +40/4DIFNB7BMJEBUJPO ࠷৽൛ESBGU
+40/)ZQFS4DIFNB +40/4DIFNBʹ+40/ΛϋΠύʔ ςΩετͱͯ͠ղऍͰ͖ΔΑ͏ʹ͢ ΔͨΊͷΩʔϫʔυΛՃͨ͠ͷ
+40/)ZQFS4DIFNBͰग़དྷΔࣄ +40/4DIFNBΛͬͯ"1*ͷΤϯ υϙΠϯτΛఆٛ͢Δ ϦΫΤετɺϨεϙϯεͷόϦσʔγϣϯ υΩϡϝϯτੜ ΫϥΠΞϯτੜ
ςετ༻ελϒαʔόͷੜ
αʔϏεσΟεΫϦϓγϣϯ 84%- +40/)ZQFS4DIFNB "1*#MVFQSJOU 3".-
http://d.hatena.ne.jp/tkawa/20140828/p1
ϖύϘͱ +40/ )ZQFS4DIFNB
ͭͷαʔϏεͰಋೖ४උத Χϥʔϛʔγϣοϓ"1* 46;63* ϖύϘͱ+40/)ZQFS4DIFNB
None
ಋೖ͢Δૂ͍ "1*Λ͏ਓ ࣮ͱဃ͍ͯ͠ͳ͍υΩϡϝϯτ ΫϥΠΞϯτϥΠϒϥϦͰ؆୯ʹར༻ ΧελϚʔαϙʔτͷෛ୲ܰݮ
։ൃޮͷ্ ΤϯυϙΠϯτͷ༷Λத৺ʹٞ ελϒͰ"1*։ൃ͕ϘτϧωοΫʹͳΒͳ͍
None
ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜʹඞཁͳใΛه͢Δ
υΩϡϝϯτΛੜɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ͢Δ
ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜʹඞཁͳใΛه͢Δ
υΩϡϝϯτΛੜɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ͢Δ
+40/4DIFNBΛॻ͘ Ϧιʔεຖʹ+40/4DIFNBΛ࡞Δ \SFTPVSDF^JEKTPOΛϕʔεʹ IUUQKTPOTDIFNBOFU +40/UP+40/4DIFNB
ղऍग़ྗͷΦϓγϣϯ͕બͰ͖Δ FOVNɺSFRVJSFEɺBEEJUJPOBMQSPQFSUJFT FUD Ϧετͷղऍͷڍಈҙ 45*ϙϦϞʔϑΟοΫؔ࿈Λ͍ͬͯΔ߹ʹʹ
͏·͍͔͘ͳ͍ྫ { "payment_methods": [ { "category": "creadit_card", "gateway": "gmo-pg" },
{ "category": "bank", "name": "mizuho" } ] } { … "properties": { "payment_method": { "id": "payment_method", "type": "array", "items": { "id": "1", "type": "object", "properties": { "category": { "id": "category", "type": "string" }, "name": { "id": "name", "type": "string" } } } } } } HBUFXBZͱ͍͏ ϓϩύςΟ͕ͳ͔ͬͨ͜ͱʹ
IUUQTHJUVCDPNLFODIBOTDIFNJ[F $ cat payments.json | bundle exec schemize --- schema:
type: object properties: payment_method: type: array items: type: object properties: category: type: string gateway: type: string name: type: string
IUUQTHJUVCDPNLFODIBOTDIFNJ[F ඪ४ೖྗΛಡΉ DVSMͰ࣮σʔλΛ؆୯ʹྲྀ͠ࠐΊΔ ϦετͷϓϩύςΟΛશͯྻڍ ඍົͳߏɺ45*ɺϙϦϞʔϑΟοΫؔ࿈ʹରԠ
:".-ܗࣜͷग़ྗ ޙड़͢Δπʔϧͷ΄ͱΜͲ:".-ΛಡΊΔ +40/ΑΓਓ͕ؒฤू͍͢͠
ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜʹඞཁͳใΛه͢Δ
υΩϡϝϯτΛੜɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ͢Δ
+40/)ZQFS4DIFNB +40/4DIFNBʹ+40/ΛϋΠύʔ ςΩετͱͯ͠ղऍͰ͖ΔΑ͏ʹ͢ ΔͨΊͷΩʔϫʔυʮMJOLʯͳͲΛ Ճͨ͠ͷ $36% MJTUΛத৺ʹߟ͍͑ͯ͘
+40/)ZQFS4DIFNB MJOLใ EFTDSJQUJPO SFM ISFG
NFUIPE UJUMF
γϯϓϧͳMJOL schema: ! … ! links: - description: all payment
methods href: /v1/payment_methods.json method: GET rel: instances title: payment_methods
ෳࡶͳMJOL ϨεϙϯεͷεΩʔϚ͕ݸผʹҧ͏ ϖʔδωʔγϣϯͷͨΊͷϝλσʔλ ϦΫΤετͷόϦσʔγϣϯ (&5ύϥϝʔλ
ϦΫΤετ#PEZ
MJOLຖʹεΩʔϚΛఆٛ schema: ! … ! links: - description: all payment
methods href: /v1/payment_methods.json method: GET rel: instances title: payment_methods targetSchema: type: object properties: payment_methods: type: array items: type: object $ref: "/schemata/payment_methods/#" meta: type: object properties: page: type: integer SFGͰผͷॴͰఆٛͨ͠ εΩʔϚΛಡΈࠐΉ UBSHFU4DIFNBͰϨεϙϯεͷ εΩʔϚΛࢦఆ͢Δ
ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜʹඞཁͳใΛه͢Δ
υΩϡϝϯτΛੜɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ͢Δ
+40/4DIFNBͰόϦσʔγϣϯ ରͷڥ UFTU EFWFMPQNFOU QSPEVDUJPO όϦσʔγϣϯΤϥʔͷͱ͖
αʔόΤϥʔɺϩάग़ྗ ϦΫΤετͱϨεϙϯε
ϥΠϒϥϦ )FSPLVϓϩμΫτ IUUQTHJUIVCDPNJOUFSBHFOU SLBNVSBϓϩμΫτ IUUQSLBNVSBIBUFOBCMPHDPN FOUSZ
ͦͷଞ IUUQTHJUIVCDPNTFPNP[JOUFSQPM
)FSPLV QSNE +40/4DIFNB݁߹ɺυΩϡϝϯτੜ DPNNJUUFF όϦσʔγϣϯɺελϒαʔό
IFSPJDT ΫϥΠΞϯτੜ
SLBNVSB +EPD υΩϡϝϯτੜ SBDLKTPO@TDIFNB όϦσʔγϣϯɺελϒαʔόɺFUDʜ
+TPOJTN ΫϥΠΞϯτੜ
ͦͷଞ TFPNP[JOUFSQPM υΩϡϝϯτੜ όϦσʔγϣϯ ελϒαʔό
ϖύϘͰ Χϥʔϛʔγϣοϓ"1* JOUFSQPMΛಋೖ͕ͨ͠ఫୀத QSNE SBDLKTPO@TDIFNBcDPNNJUUFF
46;63* QSNE DPNNJUUFF
*OUFSQPMΛࢼͯ͠Έͯ ελϒαʔόॊೈ JOUFSQPMελϒͰฦ͢+40/ΛࣗͰఆٛ ଞεΩʔϚͷFYBNQMFΛ͏ +40/4DIFNBͷόʔδϣϯ͕ݹ͍
JOUFSQPMESBGUͰBOZ0GͳͲ͕͑ͳ͍ ᐆດͳΤϯυϙΠϯτΛ۠ผͰ͖ͳ͍ VTFSTJEKTPOͱVTFSTTUBUTKTPO ϑϧελοΫݫ͍͠
ࠓ͔Β࢝ΊΔͳΒ QSNE͔Β࢝ΊΔ +40/4DIFNBͷ݁߹ʹ͑Δ ബ͍ϥΠϒϥϦΛ͏ த৺+40/4DIFNB
ϥΠϒϥϦͷিಥʹҙ KTPOTDIFNBͱKTPO@TDIFNB
ςετͷ͓ڙʹ LFODIBOSTQFDIUUQ@EFGBVMU@IFBEFS SFRFVTUTQFDͰ)551ϔομΛ؆୯ʹ ͚Δ "DDFQUBQQMJDBUJPOKTPO "VUIPSJ[BUJPOZPVSPBVUIUPLFO
STQFDIUUQ@EFGBVMU@IFBEFS
+40/4DIFNBͰόϦσʔγϣϯ ରͷڥ UFTUPSEFWFMPQNFOU όϦσʔγϣϯΤϥʔͷͱ͖ αʔόΤϥʔ
ϦΫΤετͱϨεϙϯε ·ͣϨεϙϯε ϦΫΤετطଘͷόϦσʔγϣϯͰ
ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜʹඞཁͳใΛه͢Δ
υΩϡϝϯτΛੜɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ͢Δ
πʔϧͷ͑0, )FSPLVϓϩμΫτ IUUQTHJUIVCDPNJOUFSBHFOU SLBNVSB͞ΜϓϩμΫτ IUUQSLBNVSBIBUFOBCMPHDPN FOUSZ
ͦͷଞ IUUQTHJUIVCDPNTFPNP[JOUFSQPM
͓·͚
࠷͍ۙͬͯΔ͜ͱ രϓϨΪϡʔϓϩΩγQPPMΛͬͨ ΠϯςάϨʔγϣϯڥͷߏங IUUQTHJUIVCDPNNPPLKQQPPM QVMMܕͷϓϨϏϡʔڥ ʮTUBHJOH͍·͢ʯએݴ͔Βͷ٫
ίϯςφ্Ͱಈ࡞ՄೳͳϙʔλϏϦςΟ ͷߴ͍ΞϓϦέʔγϣϯ
QPPMΛར༻ͨ͠ϓϨϏϡʔڥ HJUQVMMͯ͠ ίϯςφΛཱͪ͋͛Δ OFXGFBUVSF ϒϥϯνΛQVTI OFXGFBUVSFDBSUʹ ΞΫηε͢Δ
·ͱΊ
ࠓͷ͓ +40/)ZQFS4DIFNBͱ ϖύϘͰͷ+40/)ZQFS4DIFNB ͓·͚
ϖύϘͰ 伱ؒΛຒΊΔϥΠϒϥϦΛ࡞ Χϥʔϛʔγϣοϓ"1* JOUFSQPMΛಋೖ͕ͨ͠ఫୀத QSNE
SBDLKTPO@TDIFNBcDPNNJUUFF 46;63* QSNE DPNNJUUFF
QPPMΛར༻ͨ͠ϓϨϏϡʔڥ HJUQVMMͯ͠ ίϯςφΛཱͪ͋͛Δ OFXGFBUVSF ϒϥϯνΛQVTI OFXGFBUVSFDBSUʹ ΞΫηε͢Δ
None