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.6k
現実世界の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
実践、マルチクラウド環境でのコスト管理の現状と未来
kenchan
0
150
エンジニアリング 💰Moneyジャー / Engineering Money-ger
kenchan
2
850
Lv1,2の開発生産性を経営と繋ぐ
kenchan
4
2.1k
「トップ10プランナー」からはじめる目標設定
kenchan
5
4.2k
負債と言わないことが負債と向き合うこと
kenchan
5
4.5k
可用性No.1へ!「カラーミーショップ」のリ・アーキテクティング
kenchan
0
170
カラーミーショップは私たちが作っています
kenchan
0
1.7k
カラーミーショップ 2022 / COLORME SHOP 2022
kenchan
0
720
Amazon RDS移行のための 性能検証でわかった2つのこと
kenchan
3
4.2k
Other Decks in Programming
See All in Programming
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
Patterns of Patterns
denyspoltorak
0
1.4k
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
260
Data-Centric Kaggle
isax1015
2
770
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.1k
Grafana:建立系統全知視角的捷徑
blueswen
0
330
2026年 エンジニアリング自己学習法
yumechi
0
130
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.9k
Tell your own story through comics
letsgokoyo
1
810
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Prompt Engineering for Job Search
mfonobong
0
160
エンジニアに許された特別な時間の終わり
watany
106
230k
Designing Experiences People Love
moore
144
24k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
210
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
450
Building a Scalable Design System with Sketch
lauravandoore
463
34k
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