Slide 1

Slide 1 text

GMO Pepabo, Inc. Kenichi TAKAHASHI 2015/02/25 Ruby Business User Conference 2015 ݱ࣮ੈքͷ +40/)ZQFS4DIFNB

Slide 2

Slide 2 text

ߴڮ݈Ұ!LFODIBO (.0ϖύϘגࣜձࣾ ٕज़෦ٕज़ج൫νʔϜ IUUQTIVDSFBNOFU

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

ࠓ೔ͷ͓࿩ +40/)ZQFS4DIFNBͱ͸ ϖύϘͱ+40/)ZQFS4DIFNB ͓·͚

Slide 6

Slide 6 text

+40/ )ZQFS4DIFNB ͱ͸

Slide 7

Slide 7 text

+40/4DIFNB +40/ͷσʔλߏ଄Λఆٛ͢Δ +40/4DIFNB$PSF +40/4DIFNB7BMJEBUJPO ࠷৽൛͸ESBGU

Slide 8

Slide 8 text

+40/)ZQFS4DIFNB +40/4DIFNBʹ+40/ΛϋΠύʔ ςΩετͱͯ͠ղऍͰ͖ΔΑ͏ʹ͢ ΔͨΊͷΩʔϫʔυΛ௥Ճͨ͠΋ͷ

Slide 9

Slide 9 text

+40/)ZQFS4DIFNBͰग़དྷΔࣄ +40/4DIFNBΛ࢖ͬͯ"1*ͷΤϯ υϙΠϯτΛఆٛ͢Δ ϦΫΤετɺϨεϙϯεͷόϦσʔγϣϯ υΩϡϝϯτੜ੒ ΫϥΠΞϯτੜ੒ ςετ༻ελϒαʔόͷੜ੒

Slide 10

Slide 10 text

αʔϏεσΟεΫϦϓγϣϯ 84%- +40/)ZQFS4DIFNB "1*#MVFQSJOU 3".-

Slide 11

Slide 11 text

http://d.hatena.ne.jp/tkawa/20140828/p1

Slide 12

Slide 12 text

ϖύϘͱ +40/ )ZQFS4DIFNB

Slide 13

Slide 13 text

ͭͷαʔϏεͰಋೖ४උத Χϥʔϛʔγϣοϓ"1* 46;63* ϖύϘͱ+40/)ZQFS4DIFNB

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

ಋೖ͢Δૂ͍ "1*Λ࢖͏ਓ ࣮૷ͱဃ཭͍ͯ͠ͳ͍υΩϡϝϯτ ΫϥΠΞϯτϥΠϒϥϦͰ؆୯ʹར༻ ΧελϚʔαϙʔτͷෛ୲ܰݮ ։ൃޮ཰ͷ޲্ ΤϯυϙΠϯτͷ࢓༷Λத৺ʹٞ࿦ ελϒͰ"1*։ൃ͕ϘτϧωοΫʹͳΒͳ͍

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜ੒ʹඞཁͳ৘ใΛ௥ه͢Δ υΩϡϝϯτΛੜ੒ɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ഑෍͢Δ

Slide 18

Slide 18 text

ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜ੒ʹඞཁͳ৘ใΛ௥ه͢Δ υΩϡϝϯτΛੜ੒ɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ഑෍͢Δ

Slide 19

Slide 19 text

+40/4DIFNBΛॻ͘ Ϧιʔεຖʹ+40/4DIFNBΛ࡞Δ \SFTPVSDF^JEKTPOΛϕʔεʹ IUUQKTPOTDIFNBOFU +40/UP+40/4DIFNB ղऍ΍ग़ྗͷΦϓγϣϯ͕બ୒Ͱ͖Δ FOVNɺSFRVJSFEɺBEEJUJPOBMQSPQFSUJFT FUD Ϧετͷղऍͷڍಈ͸஫ҙ 45*΍ϙϦϞʔϑΟοΫؔ࿈Λ࢖͍ͬͯΔ৔߹ʹ໰୊ʹ

Slide 20

Slide 20 text

͏·͍͔͘ͳ͍ྫ { "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ͱ͍͏ ϓϩύςΟ͕ͳ͔ͬͨ͜ͱʹ

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

IUUQTHJUVCDPNLFODIBOTDIFNJ[F ඪ४ೖྗΛಡΉ DVSMͰ࣮σʔλΛ؆୯ʹྲྀ͠ࠐΊΔ Ϧετ಺ͷϓϩύςΟΛશͯྻڍ ඍົͳߏ଄ɺ45*ɺϙϦϞʔϑΟοΫؔ࿈ʹରԠ :".-ܗࣜͷग़ྗ ޙड़͢Δπʔϧͷ΄ͱΜͲ͸:".-ΛಡΊΔ +40/ΑΓ͸ਓ͕ؒฤू͠΍͍͢

Slide 23

Slide 23 text

ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜ੒ʹඞཁͳ৘ใΛ௥ه͢Δ υΩϡϝϯτΛੜ੒ɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ഑෍͢Δ

Slide 24

Slide 24 text

+40/)ZQFS4DIFNB +40/4DIFNBʹ+40/ΛϋΠύʔ ςΩετͱͯ͠ղऍͰ͖ΔΑ͏ʹ͢ ΔͨΊͷΩʔϫʔυʮMJOLʯͳͲΛ ௥Ճͨ͠΋ͷ $36%MJTUΛத৺ʹߟ͍͑ͯ͘

Slide 25

Slide 25 text

+40/)ZQFS4DIFNB MJOL৘ใ EFTDSJQUJPO SFM ISFG NFUIPE UJUMF

Slide 26

Slide 26 text

γϯϓϧͳMJOL schema: ! … ! links: - description: all payment methods href: /v1/payment_methods.json method: GET rel: instances title: payment_methods

Slide 27

Slide 27 text

ෳࡶͳMJOL ϨεϙϯεͷεΩʔϚ͕ݸผʹҧ͏ ϖʔδωʔγϣϯͷͨΊͷϝλσʔλ ϦΫΤετͷόϦσʔγϣϯ (&5ύϥϝʔλ ϦΫΤετ#PEZ

Slide 28

Slide 28 text

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ͰϨεϙϯεͷ εΩʔϚΛࢦఆ͢Δ

Slide 29

Slide 29 text

ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜ੒ʹඞཁͳ৘ใΛ௥ه͢Δ υΩϡϝϯτΛੜ੒ɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ഑෍͢Δ

Slide 30

Slide 30 text

+40/4DIFNBͰόϦσʔγϣϯ ର৅ͷ؀ڥ UFTU EFWFMPQNFOU QSPEVDUJPO όϦσʔγϣϯΤϥʔͷͱ͖ αʔόΤϥʔɺϩάग़ྗ ϦΫΤετͱϨεϙϯε

Slide 31

Slide 31 text

ϥΠϒϥϦ )FSPLVϓϩμΫτ IUUQTHJUIVCDPNJOUFSBHFOU SLBNVSBϓϩμΫτ IUUQSLBNVSBIBUFOBCMPHDPN FOUSZ ͦͷଞ IUUQTHJUIVCDPNTFPNP[JOUFSQPM

Slide 32

Slide 32 text

)FSPLV QSNE +40/4DIFNB݁߹ɺυΩϡϝϯτੜ੒ DPNNJUUFF όϦσʔγϣϯɺελϒαʔό IFSPJDT ΫϥΠΞϯτੜ੒

Slide 33

Slide 33 text

SLBNVSB +EPD υΩϡϝϯτੜ੒ SBDLKTPO@TDIFNB όϦσʔγϣϯɺελϒαʔόɺFUDʜ +TPOJTN ΫϥΠΞϯτੜ੒

Slide 34

Slide 34 text

ͦͷଞ TFPNP[JOUFSQPM υΩϡϝϯτੜ੒ όϦσʔγϣϯ ελϒαʔό

Slide 35

Slide 35 text

ϖύϘͰ͸ Χϥʔϛʔγϣοϓ"1* JOUFSQPMΛಋೖ͕ͨ͠ఫୀத QSNE SBDLKTPO@TDIFNBcDPNNJUUFF 46;63* QSNEDPNNJUUFF

Slide 36

Slide 36 text

*OUFSQPMΛࢼͯ͠Έͯ ελϒαʔό͸ॊೈ JOUFSQPM͸ελϒͰฦ͢+40/Λࣗ෼Ͱఆٛ ଞ͸εΩʔϚ಺ͷFYBNQMFΛ࢖͏ +40/4DIFNBͷόʔδϣϯ͕ݹ͍ JOUFSQPM͸ESBGUͰBOZ0GͳͲ͕࢖͑ͳ͍ ᐆດͳΤϯυϙΠϯτΛ۠ผͰ͖ͳ͍ VTFSTJEKTPOͱVTFSTTUBUTKTPO ϑϧελοΫݫ͍͠

Slide 37

Slide 37 text

ࠓ͔Β࢝ΊΔͳΒ QSNE͔Β࢝ΊΔ +40/4DIFNBͷ݁߹ʹ͸࢖͑Δ ബ͍ϥΠϒϥϦΛ࢖͏ த৺͸+40/4DIFNB ϥΠϒϥϦͷিಥʹ஫ҙ KTPOTDIFNBͱKTPO@TDIFNB

Slide 38

Slide 38 text

ςετͷ͓ڙʹ LFODIBOSTQFDIUUQ@EFGBVMU@IFBEFS SFRFVTUTQFDͰ)551ϔομΛ؆୯ʹ
 ෇͚Δ "DDFQUBQQMJDBUJPOKTPO "VUIPSJ[BUJPOZPVSPBVUIUPLFO

Slide 39

Slide 39 text

STQFDIUUQ@EFGBVMU@IFBEFS

Slide 40

Slide 40 text

+40/4DIFNBͰόϦσʔγϣϯ ର৅ͷ؀ڥ UFTUPSEFWFMPQNFOU όϦσʔγϣϯΤϥʔͷͱ͖ αʔόΤϥʔ ϦΫΤετͱϨεϙϯε ·ͣ͸Ϩεϙϯε ϦΫΤετ͸طଘͷόϦσʔγϣϯͰ

Slide 41

Slide 41 text

ಋೖεςοϓ Ϩεϙϯε+40/ͷ4DIFNBΛॻ͘ +40/)ZQFS4DIFNBʹ͢Δ ࣗಈͰόϦσʔγϣϯΛ͔͚ΔΑ͏ʹ͢Δ υΩϡϝϯτੜ੒ʹඞཁͳ৘ใΛ௥ه͢Δ υΩϡϝϯτΛੜ੒ɺެ։͢Δ +40/)ZQFS4DIFNBΛެ։͢Δ ΫϥΠΞϯτϥΠϒϥϦΛ഑෍͢Δ

Slide 42

Slide 42 text

πʔϧͷ࢖͑͹0, )FSPLVϓϩμΫτ IUUQTHJUIVCDPNJOUFSBHFOU SLBNVSB͞ΜϓϩμΫτ IUUQSLBNVSBIBUFOBCMPHDPN FOUSZ ͦͷଞ IUUQTHJUIVCDPNTFPNP[JOUFSQPM

Slide 43

Slide 43 text

͓·͚

Slide 44

Slide 44 text

࠷ۙ΍͍ͬͯΔ͜ͱ ര଎ϓϨΪϡʔϓϩΩγQPPMΛ࢖ͬͨ ΠϯςάϨʔγϣϯ؀ڥͷߏங IUUQTHJUIVCDPNNPPLKQQPPM QVMMܕͷϓϨϏϡʔ؀ڥ ʮTUBHJOH࢖͍·͢ʯએݴ͔Βͷ୤٫ ίϯςφ্Ͱಈ࡞ՄೳͳϙʔλϏϦςΟ ͷߴ͍ΞϓϦέʔγϣϯ΁

Slide 45

Slide 45 text

QPPMΛར༻ͨ͠ϓϨϏϡʔ؀ڥ HJUQVMMͯ͠ ίϯςφΛཱͪ͋͛Δ OFXGFBUVSF ϒϥϯνΛQVTI OFXGFBUVSFDBSUʹ ΞΫηε͢Δ

Slide 46

Slide 46 text

·ͱΊ

Slide 47

Slide 47 text

ࠓ೔ͷ͓࿩ +40/)ZQFS4DIFNBͱ͸ ϖύϘͰͷ+40/)ZQFS4DIFNB ͓·͚

Slide 48

Slide 48 text

ϖύϘͰ͸ 伱ؒΛຒΊΔϥΠϒϥϦΛ࡞੒ Χϥʔϛʔγϣοϓ"1* JOUFSQPMΛಋೖ͕ͨ͠ఫୀத QSNE SBDLKTPO@TDIFNBcDPNNJUUFF 46;63* QSNEDPNNJUUFF

Slide 49

Slide 49 text

QPPMΛར༻ͨ͠ϓϨϏϡʔ؀ڥ HJUQVMMͯ͠ ίϯςφΛཱͪ͋͛Δ OFXGFBUVSF ϒϥϯνΛQVTI OFXGFBUVSFDBSUʹ ΞΫηε͢Δ

Slide 50

Slide 50 text

No content