Slide 1

Slide 1 text

άϩʔόϧల։Λࢧ͑Δ ྔࢠతͳαʔϏεઃܭ 2017/01/20 Mercari DAY Hiraku NAKANO

Slide 2

Slide 2 text

About Me • த໺ ୓(@Hiraku) • ϝϧΧϦͷJP൛ BizDevνʔϜॴଐ • αʔόʔαΠυ୲౰ɺPHP͹͔Γॻ͍ͯΔ • ೖࣾͯ͠Ұ೥ͪΐͬͱ

Slide 3

Slide 3 text

όοΫΤϯυܥͷ৬छ 43& αʔόʔαΠυ w ৴པੑʹϑΥʔΧε w ύϑΥʔϚϯενϡʔχϯά
 ͕ओઓ৔ w 0QT΋݉ͶΔ w ػೳ։ൃʹϑΥʔΧε w υϝΠϯϩδοΫ͕ओઓ৔ w 1ͱηοτͰಈ͘ ࢲ͸ͬͪ͜ʹॴଐ

Slide 4

Slide 4 text

άϩʔόϧల։Λࢧ͑Δ ྔࢠతͳαʔϏεઃܭ 2017/01/20 Mercari DAY

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

"FacebookͩͱɺԿສͱ͍͏ ABςετ͕ಉ࣌ʹ૸͍ͬͯΔɻ
 ϝϧΧϦͰ΋਺ेຊ͸૸ͬͯΔɻ ύλʔϯ͸๲େʹ͋Δ"

Slide 7

Slide 7 text

͹ͬ͘
 ͑ΜͲ Web൛

Slide 8

Slide 8 text

͹ͬ͘
 ͑ΜͲ Web൛ ͦ͏͍͏Πϝʔδ͡Όͳ͍

Slide 9

Slide 9 text

͹ͬ͘
 ͑ΜͲ Web൛ ͳΜ͔ྠֲ͕
 Α͘෼͔Βͳ͍…

Slide 10

Slide 10 text

͹ͬ͘
 ͑ΜͲ • ೔ຊ൛ʹΞΫηε • ΫϥΠΞϯτόʔδϣϯ͕XX • ϩάΠϯதͷϢʔβʔID͕YY • ୺຤͕ZZ • ΞΫηεͨ࣌͠ࠁ͕TT • etc ΍ͬͱྠֲ͕
 ݟ͑ͯ͘Δ

Slide 11

Slide 11 text

"ྔࢠత"ͱ͍͏ൺᄻ • ݟΔਓʹΑͬͯҧ͏ಈ͖ʹͳΔ • ؍ଌ͠ͳ͍ͱΑ͘෼͔Βͳ͍ • શύλʔϯʹରͯ͠ໃ६ͳ͘ಈ࡞͢Δ

Slide 12

Slide 12 text

ͳͥ"ྔࢠత"ͳͷ͔ • Ծઆ࣮ݧओٛ • ࣮ݧͨ͠΄͏͕଎͘ਖ਼ղʹͨͲΓண͚Δ • ֎෦؀ڥͷಈ͖͸ෆ࣮֬ • ಥવͷো֐ɾ֎෦͔Βͷ߈ܸ • શͯ૝ఆ͢Δͷ͸ࠔ೉

Slide 13

Slide 13 text

"ྔࢠత"ͳιϑτ΢ΣΞ͸ • ෳࡶɾϝϯςϯφϯεେม • ߟྀ࿙Εͱ͔ى͖ͳ͍ͷʁ • ϝϧΧϦ͸Ͳ͏࣮ݱ͍ͯ͠Δͷ͔ʁ

Slide 14

Slide 14 text

ࠓ೔ ࿩͢͜ͱ 1. ϞόΠϧΞϓϦͷόοΫΤϯυʹ
 ٻΊΒΕΔ͜ͱ 2. ॏཁͰ͸ͳ͔ͬͨ͜ͱ 3. mercari-apiͷࢥ૝ 4. ࠓΛੜ͖࢒ΔͨΊʹ

Slide 15

Slide 15 text

ٻΊΒΕ͍ͯΔ͜ͱ

Slide 16

Slide 16 text

͹ͬ͘
 ͑ΜͲ • ϦϦʔεͷίετ͕௿͍ • ׬શʹίϯτϩʔϧԼ • ϦϦʔεޙ΋ؚΉ • ඇެ։ʹͰ͖Δ

Slide 17

Slide 17 text

όοΫΤϯυ͔ͩΒͰ͖Δ͜ͱ • ࢪࡦΛ਺ଧͭͨΊͷ౔୆ • ʮࠓ͙͢ϦϦʔεʯ͕ৗʹՄೳͳଘࡏ • ΞυϗοΫͳো֐ରԠྗ • σʔλͷ࠷ऴ๷น

Slide 18

Slide 18 text

΋ͪΖΜલఏͱͯ͠ • ඼࣭ • ύϑΥʔϚϯε • কདྷతʹഁ୼͠ͳ͍ݟ௨͠ • ௿Լ͠ͳ͍։ൃ଎౓ • ηΩϡϦςΟ߈ܸ΁ͷରԠ

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

શͯରॲ͢Δͷ͸େม

Slide 21

Slide 21 text

࣮͸ॏཁͰͳ͔ͬͨ͜ͱ

Slide 22

Slide 22 text

ίʔυతʹඒಙͱ͞ΕΔ΋ͷ • ൚༻ੑ • ඒ͠͞ • Ұ؏ੑ ϝϧΧϦ಺Ͱ͸ Ձ஋͕௿Ί

Slide 23

Slide 23 text

൚༻ੑͳͲͳ͍ • ެࣜΫϥΠΞϯτͷΈߟྀ • ͔͠΋αϙʔτόʔδϣϯͷΈ • ͦΕҎ֎͔Β͸࢖͑ͳ͍͠ɺ
 ࢖͏͜ͱ΋૝ఆ͠ͳ͍

Slide 24

Slide 24 text

WebAPIͱͯ͠ͷඒ͠͞ • RESTful, HATEOASͱ͍ͬͨ
 ϕετϓϥΫςΟε…ͱ͞ΕΔ΋ͷ • શવकͬͯͳ͍ • ࠷ॳ͸͋ͬͨ͸ͣͳͷ͕ͩ • ެࣜΫϥΠΞϯτʹ߹Θͤͯվम͠·͘ΕΔ͜ͱ ͷ΄͏͕ॏཁ

Slide 25

Slide 25 text

Ұ؏ੑͷͳ͞ • ※σʔλ͸Ұ؏ੑࢮकͰ͢Α • ίʔυͱͯ͠͸ேྩ฻վ ͲΜͱདྷ͍ʂ • Ή͠ΖҰ؏ੑͷͳ͍मਖ਼ʹ଱͑ΒΕΔΑ͏ʹ ίετΛࢧ෷͏΂͖

Slide 26

Slide 26 text

ϓϩάϥϚͱͯ͠ͷ৺ڥ • ΋ͪΖΜɺඒ͘͠Ұ؏ͯ͠ந৅Խ͞Εͨ΋ͷ Λ࡞Γ͍ͨ… • ৽ن։ൃͳΒɺ͍ͭ΋ເΛ٧ΊࠐΉΑ͏ʹ͸ ͍ͯ͠Δ • ʮमਖ਼͍ͨ͠ʯͱ͍͏νέοτΛ೔ʑ࡞ͬͯ ͍Δ

Slide 27

Slide 27 text

PragmaticͰ͋Δ͜ͱ
 DogmaticʹͳΒͳ͍͜ͱ • ϦϦʔεΛ᪳᪯͠ͳ͍ • ෆ׬શͰ΋ಈ͍͍ͯΔํ͕ΑͬΆͲ͍͍ • Be Professional Day Ͱ៉ྷʹ͢Δ

Slide 28

Slide 28 text

mercari-api

Slide 29

Slide 29 text

ιʔείʔυඇެ։ ͳͷͰɺུ͚֓ͩ

Slide 30

Slide 30 text

ٕज़తΩʔϫʔυ • ಠ࣮ࣗ૷ͷJSON over HTTPS WebAPI • nginx/OpenResty, Go, PHP, MySQL, Q4M, Parallel-Prefork, Memcached, Solr, ... • DietCakeϕʔεͷϑϨʔϜϫʔΫ

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

࣮ࡍͷߏ੒͸ ൃද΋ଟ͍ͷͰׂѪ

Slide 33

Slide 33 text

mercari-api ͷࢥ૝

Slide 34

Slide 34 text

ࢥ૝తΩʔϫʔυ • ബ͍ϑϨʔϜϫʔΫɾ۪௚ͳ࣮૷ • ଎͕͞શͯΛղܾ͢Δ • Ψʔυઅͷଟ༻ • ୯ҰϦϙδτϦͱ͍͏ᐫ

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

DietCake • ඇৗʹബ͘ɺ༨ܭͳ͜ͱ͸Կ΋͠ͳ͍ • શମతʹ۪௚ͳ࣮૷ • ϑϩϯτίϯτϩʔϥʔ͔Βॱ൪ʹಡΈਐ Ί͍͚ͯ͹ඞͣ೺ѲͰ͖Δ • ϑϨʔϜϫʔΫଆ͕͋·Γറͬͯ͜ͳ͍

Slide 37

Slide 37 text

଎͕͞શͯΛղܾ͢Δ • APIࣗମͷ଎͞ • ଟগͷແཧ͕Ͱ͖Δঢ়ଶΛอͭ • ։ൃͷ଎͞ • ͙͢ʹফ͢ͳΒΞυϗοΫͳରԠ΋Մೳ

Slide 38

Slide 38 text

Α͋͘Δޫܠ • 1ि͙ؒΒ͍Ͱ։ൃ+QA -> ϦϦʔε • Ωϟϯϖʔϯ͕ऴΘͬͨͷͰશ࡟আ

Slide 39

Slide 39 text

Ψʔυઅͷଟ༻ • if (૝ఆͱҧ͏) { throw new Error; } • Α͋͘Δྫ • ʮUSͰͷΈʯ • ʮABςετέʔε˓˓൪ͷAύλʔϯʯ • ʮ࠷৽ͷΞϓϦΛ͓࢖͍Լ͍͞ʯ

Slide 40

Slide 40 text

୯ҰϦϙδτϦͱ͍͏ᐫ • JP/US/GB͸ઃఆͱDBͰ੾Γସ͑ • αʔόʔߏ੒ɺ։ൃ؀ڥɺϊ΢ϋ΢ڞ௨Խ • ฐ֐΋͋Δ͕ࠓͷͱ͜Ζڐ༰ൣғ

Slide 41

Slide 41 text

mercari-api ۪௚ͳ࣮૷ ˣ ։ൃͷॠൃྗ ੑೳ Ψʔυઅଟ༻ ˣ গ͠Ͱ΋ෳࡶ౓ΛԼ͛Δ ୯ҰϦϙδτϦ ˣ ഁ୼͠ͳ͍ઃܭΛ
 ڧཁ͞ΕΔ

Slide 42

Slide 42 text

ࠓΛੜ͖࢒ΔͨΊʹ

Slide 43

Slide 43 text

ϝϧΧϦʹશ͘༨༟͸ͳ͍ • USϓϩμΫτ΋·ͩ·ͩେ੒ޭͰ͸ͳ͍ • ۪௚ͳվળʹΑΓɺ੒௕֯౓Λ͞ΒʹߴΊͳ ͍ͱɺγϦίϯόϨʔͷڝ߹ʹ͋ͬͱ͍͏ؒ ʹෛ͚Δ • ݶΒΕͨϦιʔεΛ࢖ͬͯɺҰยͷແବͳ͘෺ ࣄΛਐΊΔ͜ͱ͕ۃΊͯॏཁɻ

Slide 44

Slide 44 text

Ͱ͖ͳ͍͜ͱ΋ଟ͍ • খखઌͷςΫχοΫͰ͸ෳࡶ౓͸Լ͕Βͳ͍ • όάΛϦϦʔεͯ͠͠·͏͜ͱ΋͋Δ • ࣦഊͩͬͨ΋ͷ͸਺͑੾Εͣ • ͔͠͠ڝ߹͸଴ͬͯ͸͘Εͳ͍

Slide 45

Slide 45 text

No content

Slide 46

Slide 46 text

ʮΤϯδχΞϦϯά͚ͩͰ
 ղܾ͠Α͏ͱ͠ͳ͍ʯ

Slide 47

Slide 47 text

ʮ࡞ΓతʹࣗಈςετͭΒ͍ʯ ˣ ؾ߹͍ͰϨϏϡʔ͠·͢
 QAͰ֬ೝ͠·͢

Slide 48

Slide 48 text

ʮ඼࣭ʹෆ͕҆࢒Δ…ʯ
 ↓ ΍͹ͦ͏ͳΒ͙͢໭͠· ͠ΐ͏
 ෛՙ஫ࢹ͠·͢

Slide 49

Slide 49 text

Τοδέʔεͷ࣮૷͕େม
 ↓ ☺CSखΦϖͳΒରॲ͍͚ͦ͏
 ରԠϚχϡΞϧͰ͖ͨΑʔ

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

େࣄʹ͍ͯ͠Δ͜ͱ • ԿΑΓ΋ϓϩμΫτͱͯ͠੒ޭ͢Δ͜ͱ • 80% ͰϦϦʔεͯ͠ɺલʹਐΊΔ • ࢒Γ͸ผͷखஈΛ୳ͯ͠र͏ or མͱ͢ • ৽ػೳ͸چΫϥΠΞϯτͰಈ͔ͳ͍͚Ͳɺ Ϋϥογϡ͸ͤ͞ͳ͍

Slide 52

Slide 52 text

·ͱΊ

Slide 53

Slide 53 text

Ҏ্͸ࢲֶ͕Μͩ͜ͱ • ࢲͷೖࣾͨ͠ࠒʹ͸طʹ͋ͬͨจԽ • ͓ͦΒ͘ૂͬͨ෦෼ͱɺ݁Ռతʹͦ͏ͳͬͨ෦ ෼͕͋Δ • ྠֲͷᐆດͳྔࢠతͳαʔϏε • ͜Ε͔Β΋ͦ͏Ͱ͋Γଓ͚ΔͩΖ͏͠ɺ
 ࢧ͑ΔͨΊͷίετ΋ࢧ෷͏