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.7k
6
Share
現実世界のJSON Hyper-Schema / Real World JSON Hyper-Schema
Ruby Business User Conference 2015での発表資料です。
Kenichi Takahashi
February 25, 2015
More Decks by Kenichi Takahashi
See All by Kenichi Takahashi
実践、マルチクラウド環境でのコスト管理の現状と未来
kenchan
0
180
エンジニアリング 💰Moneyジャー / Engineering Money-ger
kenchan
3
1k
Lv1,2の開発生産性を経営と繋ぐ
kenchan
4
2.1k
「トップ10プランナー」からはじめる目標設定
kenchan
5
4.4k
負債と言わないことが負債と向き合うこと
kenchan
5
4.7k
可用性No.1へ!「カラーミーショップ」のリ・アーキテクティング
kenchan
0
190
カラーミーショップは私たちが作っています
kenchan
0
1.8k
カラーミーショップ 2022 / COLORME SHOP 2022
kenchan
0
740
Amazon RDS移行のための 性能検証でわかった2つのこと
kenchan
3
4.3k
Other Decks in Programming
See All in Programming
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
240
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
200
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
960
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
270
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
460
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
140
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
220
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
480
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Odyssey Design
rkendrick25
PRO
2
670
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
A Modern Web Designer's Workflow
chriscoyier
698
190k
Music & Morning Musume
bryan
47
7.2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
440
Fireside Chat
paigeccino
42
3.9k
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