ペパボ研究所によるWebサービスのユーザ体感と技術者体感に関する研究
ペパボ研究所 主席研究員 チーフエンジニア 松本亮介 / Pepabo R&D Institute, GMO Pepabo, Inc.
2018.03.26 ペパボ研究所 説明会@九州大学 情報基盤研究開発センター
ϖύϘݚڀॴʹΑΔWebαʔϏεͷϢʔβମײͱٕज़ऀମײʹؔ͢ΔݚڀϖύϘݚڀॴ ओ੮ݚڀһ νʔϑΤϯδχΞ দຊ྄հ / Pepabo R&D Institute, GMO Pepabo, Inc.2018.03.26 ϖύϘݚڀॴ આ໌ձˏभେֶ ใج൫ݚڀ։ൃηϯλʔͳΊΒ͔ͳγεςϜΛࢦͨ͠ϖύϘݚڀॴͷऔΓΈͱݚڀհ
View Slide
• ϖύϘݚڀॴ ओ੮ݚڀһ• ژେֶത࢜ʢใֶʣ• νʔϑΤϯδχΞ• ݩΠϯϑϥΤϯδχΞ• ຊOSSྭɾใॲཧֶձ ࢁԼه೦ݚڀ2দຊ྄հ / ·ͭͱΓʔ / @matsumotory
ࢲͷ࠷ۙͷݚڀ։ൃͷऔΓΈ
भେֶͱͷऔΓΈ
ϖύϘݚڀॴ × भେֶ ใج൫ݚڀ։ൃηϯλʔίϯςφܕԾԽٕज़ʹΑΔ߃ৗੑΛ࣋ͭΫϥυϗεςΟϯάج൫ͱԠ༻ʹؔ͢Δڞಉݚڀ։ൃʢࠃཱใֶݚڀॴͷڠྗͰΫϥυ࣮ূ࣮ݧʣ
ݝࢢͱͷऔΓΈ
Ruby AssociationͱͷऔΓΈ
υϯͱݟ͍ͤͨςΩετΛೖΕΔ
ٕज़తͳ؍͔Βޙʹ׆͖Δࣄۀͷߏͱશମઃܭ
ʢϚωʔδυΫϥυʣ
ϓϩμΫτͷࠩผԽʹඞཁͳίΞٕज़ͷݚڀ։ൃ
ՊֶతΞϓϩʔνʹΑΔΤϯδχΞϦϯά
ϖύϘͰ࠷ߴͷϓϩμΫτΛΔͨΊ
• ւࢁͱඒຯ͍͠͝Μʹғ·Εͳ͕Βͬ͘͡Γݚڀ։ൃ• ओʹࡋྔ࿑ಇɾϦϞʔτϫʔΫɾ࣌ؒࣗ༝• ձࣾͷٕज़త՝ʹج͍ͯҰൠԽͨ͠ख๏ΛఏҊɾධՁ• ੵۃతʹจࣥචɾࠪಡݚڀձࢀՃɾӡӦ• ࠓࠃࡍԽʹ͚ͯੵۃతʹ׆ಈΛ։࢝16؆୯ʹϖύϘݚڀॴͷಇ͖ํͱ׆ಈਐḿ
• ॴ ܀ྛCTOʢίϯηϓτઃఆσΟϨΫγϣϯʣ• ٬һݚڀһ ྗઌੜʢݚڀΞυόΠβٴͼٕज़ސʣ• ओ੮ݚڀһ݉νʔϑΤϯδχΞ দຊʢج൫ٕज़ઐʣ• ݚڀһ݉ϓϦϯγύϧΤϯδχΞ ࡾʢਓೳઐʣ• ݚڀһ2017৽ଔ ଜʢηΩϡϦςΟ։ൃϓϩηεʣ17ϖύϘݚڀॴϝϯόʔߏʢ20183݄ʣ
1. ͳΊΒ͔ͳγεςϜ2. WebαʔϏεج൫ٕज़ͷݚڀͱ3. ༧ଌʹجͮ͘εέʔϦϯάͷݚڀ4. ίϯςφ͕॥͢ΔԾج൫ٕज़ͷݚڀ5. ·ͱΊ18࣍
ԬͰओʹ׆ಈ͍ͯ͠ΔϖύϘݚڀॴͷऔΓΈͷհ
1.ͳΊΒ͔ͳγεςϜ
• ίϯϐϡʔλΠϯλʔωοτʹؔ͢Δٕज़ൃల͕ͨ͠…• ࠓৗతʹ৮ΕΔγεςϜ༷ʑͳোนʹຬͪᷓΕ͍ͯΔ• োน(ΰπΰπ)ͷऔΓআ͔ΕͨະདྷͷγεςϜΛ࣮ݱ͍ͨ͠• ͳΊΒ͔ͳγεςϜ21ίϯϐϡʔλͷൃలͱোน
1. γεςϜʹͱͬͯͷϢʔβɺγεςϜΛߏ͢Δαʔόͷཁૉ͕ɺͲͷΑ͏ͳΧςΰϦʹଐ͢Δ͔ɺ͍͔ͳΔಛΛ͔࣋ͭΛɺਫ਼៛ʹೝࣝ͢Δ2. ͦͷࡍɺϢʔβγεςϜཧऀͱ͍ͬͨਓؒʹ࿑ۤΛڧ͍ΔΑ͏ͳ໌ࣔతͳૢ࡞Λ՝͞ͳ͍3. 1.͓Αͼ2.ͰಘͨΑΓਫ਼៛ͳΧςΰϦݸผͷಛɺ͋Δ͍ͦΕΒͷؒͷؔੑʹج͖ͮɺͦͷ࣌ʑͷঢ়گʹԠͯ͡࠷దͳαʔϏεΛఏڙ͢ΔͳΊΒ͔ͳγεςϜΛ࣮ݱ͢ΔWebαʔϏεج൫ٕज़ͷݚڀ22ͳΊΒ͔ͳγεςϜҎԼͷཁ݅Λຬͨ͢
2.WebαʔϏεج൫ٕज़ͷݚڀͱ
• ਓؒͷϓϩμΫτͷൃΛࢧ͑ΒΕΔج൫͕ඞཁ• ͜Ε·Ͱ֤छྖҬΛਓखͰΧόʔ͢Δ͜ͱ͕ଟ͔ͬͨ• ੑೳɾηΩϡϦςΟɾϦιʔεཧɾӡ༻ٕज़ͳͲ• ج൫ΛػցͰࢧ͑ࣗಈԽ͠αʔϏεͷݶքΛ͑Δ• ਓؒͷൃͷݶքͱج൫ͷݶքͱͷউෛͷੈքͱ͍͑Δ24WebαʔϏεج൫ٕज़ͷݶքαʔϏεͷݶք
ਓؒͷൃ vs ج൫ٕज़(ػց)ͱࢲͷݚڀ25ج൫ٕज़ ػցϓϩμΫτ ਓؒͷൃਓͷମྗɾਫ਼ਆͷݶքਓͷମྗɾਫ਼ਆͷݶքਓྗͰࢧ͑ଓ͚ΔਓྗͰ͛ଓ͚ΔਓྗͰࢧ͑ଓ͚ΔϓϩμΫτͷݶքͷ෯ج൫ٕज़ ػցϓϩμΫτ ਓؒͷൃػցͰࢧ͑ଓ͚ΔϓϩμΫτͷݶքͷ෯• ॎ࣠ϓϩμΫτ։ൃɾӡ༻ͷίετͱݴ͑Δ• ج൫ٕज़ͷݶքΛ͑Δ͘ਓͰΧόʔ͍ͯ͠Δ• ॎ࣠ͷίετΛ͘ɺԣ࣠ͷݶքͷ෯Λ͛ΔͨΊͷݚڀ։ൃΛߦ͍ͬͯΔদຊͷݚڀ
• WebαʔϏεར༻ऀͷϢʔβʔମײ(User Sensation)ͷվળ• WebαʔϏεར༻ऀͷແҙࣝԼʹ͓͚Δշదͳײ֮ͷఏڙ• ͨΓલʹී௨ʹҧײͳ͍͘ଓ͚ΒΕΔ͜ͱͷշద͞• WebαʔϏεఏڙଆͷٕज़ऀମײ(Engineer Sensation)ͷվળ• ͨΓલʹγεςϜͷ҆ఆੑΛอͪɺਓͷڧ੍հೖΛݮ26ࢲͷݚڀςʔϚ
ͳΊΒ͔ͳγεςϜͷWebαʔϏεج൫ٕज़ͱAIٕज़ͷ׆༻• AIతΞϓϩʔνʹΑΔݚڀհ• ༧ଌʹجͮ͘εέʔϦϯάͷݚڀ• ج൫ٕज़తΞϓϩʔνʹΑΔݚڀհ• Πϯελϯε͕॥͢ΔมԽʹڧ͍Ծج൫ٕज़ͷݚڀ27ຊൃදํ͔ΒΞϓϩʔν
3.༧ଌʹجͮ͘εέʔϦϯάͷݚڀ
• มԽͷ͍WebαʔϏεӡ༻ͷΦʔτεέʔϦϯάෳࡶԽ• ϦιʔεࢦඪͱWebαʔϏεશମͷؔੑͷѲ͕ࠔ• ࣌ؒ͝ͱͷར༻ಈͷਪҠཁҼͷѲ͕ࠔ• ΞΫηεසมಈΛ͏ෆఆظͳΠϕϯτͷଘࡏ• Πϯελϯε͕VMͷ߹ͷىಈͷӨڹ29Ծαʔόӡ༻࠷దԽͷ՝
ෆఆظཁҼΛߟྀͨ͠༧ଌతΦʔτεέʔϦϯάख๏ͷఏҊ• WebαʔϏεӡ༻ऀ͕ѲՄೳͳࢦඪʹΑΔεέʔϦϯά• ӡ༻ܦݧʹجͮ҆͘ఆՔಇͷͨΊͷΞΫηεසΛࢦඪ• ΞΫηεසʹӨڹΛ༩͑ΔෆఆظͳཁҼߟྀ• ىಈ࣌ؒΛߟྀͯ͠ࣄલʹεέʔϦϯάΛ࣮ࢪ• εέʔϦϯάִؒΫϥυαʔϏε՝ۚ୯ҐͰ͋Δ1࣌ؒ30Ծαʔόӡ༻࠷దԽʹ͚ͯ
1. ΞΫηεසͱෆఆظཁҼΛݩʹ༧ଌϞσϧΛֶश• ظؒͷ࣌ܥྻσʔλʹର͠༧ଌਫ਼ͷߴ͍LSTMΛ࠾༻• ฏલͷΞΫηε૿ՃෆఆظࠂͷཁҼΛՃຯ2. લͷΞΫηεස͔ΒͷΞΫηεසΛ༧ଌ3. ༧ଌΛͱʹ҆ఆՔಇՄೳͳαʔόΛࢉग़4. ىಈ࣌ؒΛߟྀͨ͠ࣄલεέʔϦϯά31ఏҊख๏ͷϑϩʔ
ఏҊख๏ͷ࣮32IUUQTJDPOTDPN
33ԾαʔόͷਪҠ͋ͨΓͷαʔό૯ىಈ͕࣌ؒ ͔࣌ؒΒ࣌ؒʹݮΞΫηεසͷਪҠ͋ͨΓΞΫηεසͷඪ४ภ͔ࠩΒʹมԽɻख๏ద༻ޙʹεϧʔϓοτ͕҆ఆ͍ͯ͠Δ͜ͱ͕Θ͔Δɻ
• ෆఆظཁҼ(αβΤ͞Μީ܈ͳͲʣΛߟྀ• WebαʔϏεӡ༻্ͷಛੑΛՃຯ͢Δඞཁ͕༗Γ• ಥൃతͳεέʔϦϯάʹෆ͖• ΞΫηεͷ؇͔ͳʹԠͨ͡εέʔϦϯάͰޮՌΛൃش• ࠓޙͷ՝ͱͯ͠ෆఆظཁҼͷҰൠԽ34༧ଌʹجͮ͘εέʔϦϯάͷ·ͱΊ
4.Πϯελϯε͕॥͢ΔมԽʹڧ͍Ծج൫ٕज़ͷݚڀ
• ݸਓ͕ͨΓલʹଟछଟ༷ͳWebαΠτΛ࣋ͭ࣌• VPSͷΑ͏ͳࣗ༝ͱִڥٻΊΒΕ͖͍ͯͯΔ• SNSΛհͯ͠ݸਓͷίϯςϯπΛ֦ࢄ͍࣌͢͠• ݸਓͷWebαΠτͷΞΫηεूத͢Δػձͷ૿େ• ݸਓαΠτͰਝʹΦʔτεέʔϧͰ͖Δج൫͕ඞཁ36ݸਓͷWebαΠτͷΞΫηεूதͷରԠ
1. ΠϯελϯεՃॲཧ͕Ͱ͋Δ͜ͱ2. ϋʔυΣΞϦιʔεͷར༻ޮͷ͞3. εέʔϦϯά͖͢ঢ়گݕͷϦΞϧλΠϜੑͷ͞4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷԆ37ҰൠతͳԾԽج൫ͷΦʔτεέʔϧͷ՝ͦͦΦʔτεέʔϧΛݸਓͷαΠτʹద༻͢Δͷ͍͠…
1. ΠϯελϯεՃॲཧ͕Ͱ͋Δ͜ͱ2. ϋʔυΣΞϦιʔεͷར༻ޮͷ͞3. εέʔϦϯά͖͢ঢ়گݕͷϦΞϧλΠϜੑͷ͞4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷԆ38ҰൠతͳԾԽج൫ͷΦʔτεέʔϧͷ՝ຊൃදͰ1.ͱ2.ͷ՝ΛղܾͰ͖ΔΞʔΩςΫνϟͷఏҊ→ ݸਓ͕ҙࣝͤͣͱ͑ΔαʔϏεͷ࣮Λࢦ͢
1. ΠϯελϯεՃॲཧ͕Ͱ͋Δ͜ͱΛղܾ• Πϯελϯεͷঢ়ଶͷఀࢭɾىಈɾมߋΛߴʹ॥• ϦΫΤετ୯ҐͰঢ়ଶΛܾఆ2. ϋʔυΣΞϦιʔεͷར༻ޮͷ͞Λղܾ• ϦΫΤετ͕ແ͍ΠϯελϯεҰఆظؒىಈޙʹఀࢭϦΫΤετ୯ҐͰΠϯελϯεͷঢ়ଶΛܾఆ͢Δख๏ͷఏҊ39Πϯελϯε͕॥͢ΔมԽʹڧ͍ج൫ͷఏҊ
• ϗετ͕॥͢ΔͷͰϥΠϒϥϦ͕ࣗવʹߋ৽͞Ε͍ͯ͘• ऩ༰ઌใΛม͑Δ͚ͩͰࣗવʹऩ༰αʔόؒΛҠಈՄೳ• WordPressͷҰൠతͳCMSΛஔɾΦʔτεέʔϧՄೳ• ΫϥυϓϩόΠμࢦఆͷίʔσΟϯάͷඞཁͳ͍• ྫɿAWS lambdaʹྨ͢ΔServerless Architecture40ηΩϡϦςΟӡ༻ٕज़ͷ՝ಉ࣌ʹղܾ
• ঢ়ଶͷมԽΛߴʹߦ͑ͯԠతʹಈ࡞Ͱ͖Δ͜ͱΛॏࢹ• γεςϜͷཁૉͷఀࢭ͔ΒىಈॲཧͷޮԽʹண• γεςϜͷཁૉͷఀࢭঢ়ଶΛڐ༰͢ΔγεςϜ• ৗʹఀࢭͱىಈ͕॥Մೳͳ߃ৗੑΛ࣋ͭγεςϜΛࢦ͢• ॥Մೳ = Մ༻ੑ͕ߴ͘ৗʹมԽՄೳͳج൫͕࣮ݱͰ͖Δ41Մ༻ੑߴ͘มԽʹڧ͍ج൫Λઃܭ͢Δʹʁ
มԽ͠ଓ͚Δ͜ͱ͔ΒಘΒΕΔ҆ఆੑ42ϗετ"ϗετ"ϗετ"ϗετ" ϗετ"Πϯλʔωοτϗετ"ϗετ"ϗετ"͕ͯఀࢭԠతʹىಈԠతʹεέʔϧΞοϓऩ༰αʔόAऩ༰αʔόBHTTPϦΫΤετԠతʹεέʔϧΞτ• ϗετͷىಈͱఀࢭΛ॥• ৗʹ॥͠ଓ͚ΔΞʔΩςΫνϟ• มԽ͠ଓ͚Δ͜ͱʹΑΔ҆ఆੑ• ॥ͷվળΛٻৗʹมԽՄೳͰ͋ΔͨΊಥൃతͳΞΫηεूதͷΑ͏ͳมԽʹੑͷ͋ΔΞʔΩςΫνϟΛ࣮ݱՄೳ
• ϗετͷىಈɾෳɾఀࢭɾ૿ڧॲཧͷޮԽΛॏࢹ• ֤छॲཧΛHTTPϦΫΤετ࣌ʹϦΞΫςΟϒʹ࣮ࢪ• ϗετʹίϯςφܕԾԽΛ࠾༻ͯ͠ىಈΛߴʹ࣮ݱ• ϦΫΤετʹج͍ͯϦΞΫςΟϒʹίϯςφͷঢ়ଶΛܾఆ43FastContainerΞʔΩςΫνϟͱ໋໊
ίϯςφ࣌ͷWebαʔϏεج൫Ϟσϧ44ΦʔέετϨʔγϣϯ(,& &$4 .BSBUIPO LT %PDLFS4XBSN /)).4UBDLετϥςδʔ3BODIFS 'BTU$POUBJOFSαʔϏείϯςφʹΔ۩ମతͳ8FCΞϓϦαʔϏεΠϯϑϥετϥΫνϟ($1 "[VSF "84 0QFO4UBDL .FTPT #BSF.FUBM -JOVY,JU /ZBIίϯςφϥϯλΠϜ%PDLFS .PCZ DPOUBJOFSE -9$ SLU )BDPOJXB$POUBJOFS3VOUJNF*OUFSGBDF $3*ຊΞʔΩςΫνϟͷείʔϓFastContainerཧతʹΦʔέετϨʔγϣϯҎԼͷπʔϧ܈Ͱ࣮ՄೳͰ͋Δ
4510ສϦΫΤετதɺ5ສ1ϦΫΤετ͔ΒεέʔϧΞτΛߦ͍ɺϨεϙϯεʹӨڹΛ༩͑Δ͜ͱͳ͘ॠ࣌ʹෛՙࢄ͕Ͱ͖͍ͯΔɻ5ສϦΫΤετҎ߱2ίϯςφʹεέʔϧΞτ͞ΕͨͨΊɺϨεϙϯελΠϜ͕ҎԼͱͳͬͯΓͷ5ສϦΫΤετ࣌ؒͰॲཧ͍ͯ͠Δ͜ͱ͕͔Δɻ
4610ສϦΫΤετதɺ5ສ1ϦΫΤετ͔ΒCPU2ഒͷεέʔϧΞοϓΛߦ͍ɺϨεϙϯεʹӨڹΛ༩͑Δ͜ͱͳ͘ॠ࣌ʹෛՙࢄ͕Ͱ͖͍ͯΔɻ5ສϦΫΤετҎ߱CPU͕ݩͷ2ഒʹڧԽ͞ΕͨͨΊɺϨεϙϯελΠϜ͕ͱͳͬͯΓͷ5ສϦΫΤετ࣌ؒͰॲཧ͍ͯ͠Δ͜ͱ͕͔Δɻ
• ϦΫΤετ୯ҐͰߴʹεέʔϧΞοϓɾεέʔϧΞτՄೳ• ίϯςφʹ߃ৗੑΛ࣋ͨͤΔ͜ͱͰϦιʔεͷޮԽ• ίϯςφΛ͍ࣺͯՄೳʹ → immutability• Ұఆ࣌ؒىಈ͢Δ͜ͱͰىಈΑΓߴԽ → mortality• ߟ͑ํʹΑͬͯϝϞϦϦʔΫ͢ΔιϑτΣΞΛڐ༰47FastContainerΞʔΩςΫνϟͷ·ͱΊ
• ίϯςφ͕॥͢ΔͷͰϥΠϒϥϦ͕ࣗવʹߋ৽͞Ε͍ͯ͘• ར༻ऀʹͱͬͯηΩϡϦςΟ্• ఏڙଆʹͱͬͯ੬ऑੑରԠόʔδϣϯΞοϓͷޮԽ• CMDBͷऩ༰ઌใΛม͑Δ͚ͩͰࣗવʹऩ༰αʔόΛҠಈ• ϝϯςφϯεোରԠ࣌ͷແఀࢭରԠ͕༰қʹͳΔ48FastContainerΞʔΩςΫνϟͷ·ͱΊ
• ߴʹεέʔϦϯάՄೳͳϗεςΟϯάαʔϏε• ϩϦϙοϓʂϚωʔδυΫϥυͷఏڙ• ϗεςΟϯάͳ͕ΒಥൃతͳมԽʹڧ͍αʔϏεͱͳΓಘΔ• ར༻ऀઐతͳࣝͳ͘มԽʹڧ͍γεςϜΛར༻Մೳ• ج൫ٕज़ͰਓͷൃΛࢧ͑ϓϩμΫτͷݶքΛ͑Δ49FastContainerͷ࣮༻Խ
5.·ͱΊ
ͳΊΒ͔ͳγεςϜͷWebαʔϏεج൫ٕज़ͱAIٕज़ͷ׆༻• AIతΞϓϩʔνʹΑΔݚڀհ• ༧ଌʹجͮ͘εέʔϦϯάͷݚڀ• ج൫ٕज़తΞϓϩʔνʹΑΔݚڀհ• Πϯελϯε͕॥͢ΔมԽʹڧ͍Ծج൫ٕज़ͷݚڀ51ຊൃදͷ·ͱΊ
• WebαʔϏεར༻ऀͷϢʔβʔମײ(User Sensation)ͷվળ• WebαʔϏεఏڙଆͷٕज़ऀମײ(Engineer Sensation)ͷվળ• ݚڀ։ൃΛ௨ͯ྆͠ํͷମײΛվળ͍ͯ͘͠• ج൫ٕज़ͷվળΛ௨ͯ͠ਓ͕ࢧ͑Δ͖ྖҬΛΑΓߴʹ• WebαʔϏεج൫ͷݶքΛ͑ɺϓϩμΫτͷݶքΛ͑Δ52WebαʔϏεج൫ٕज़ͷݚڀհ
• AI׆༻ʹΑΔޮՌͷ༗ޮੑͱཧ༝͚͕ࠔ• AI׆༻ͱWebج൫ٕज़ͷݚڀ྆ํ͔ΒऔΓΉ͜ͱʹΑͬͯ༗ޮੑཧ༝͚ΛධՁ͍͖͍ͯͨ͠53ࠓޙͷ՝