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
69
エンジニアリング 💰Moneyジャー / Engineering Money-ger
kenchan
2
680
Lv1,2の開発生産性を経営と繋ぐ
kenchan
4
1.9k
「トップ10プランナー」からはじめる目標設定
kenchan
5
3.9k
負債と言わないことが負債と向き合うこと
kenchan
5
4k
可用性No.1へ!「カラーミーショップ」のリ・アーキテクティング
kenchan
0
130
カラーミーショップは私たちが作っています
kenchan
0
1.5k
カラーミーショップ 2022 / COLORME SHOP 2022
kenchan
0
670
Amazon RDS移行のための 性能検証でわかった2つのこと
kenchan
3
4k
Other Decks in Programming
See All in Programming
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
技術同人誌をMCP Serverにしてみた
74th
0
340
Team operations that are not burdened by SRE
kazatohiei
1
210
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
350
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
4
940
Bytecode Manipulation 으로 생산성 높이기
bigstark
2
380
ReadMoreTextView
fornewid
1
480
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
1
310
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
980
A2A プロトコルを試してみる
azukiazusa1
2
1.1k
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
150
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
A better future with KSS
kneath
239
17k
YesSQL, Process and Tooling at Scale
rocio
173
14k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Raft: Consensus for Rubyists
vanstee
140
7k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
The World Runs on Bad Software
bkeepers
PRO
69
11k
What's in a price? How to price your products and services
michaelherold
246
12k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
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