開発者体験をさらに向上させる 事業と研究との連携
2021/04/10 さくらインターネット株式会社 さくらインターネット研究所 上級研究員 松本亮介 / まつもとりー / @matsumotory
͘͞ΒΠϯλʔωοτגࣜձࣾ(C) Copyright 1996-2021 SAKURA Internet Inc͘͞ΒΠϯλʔωοτݚڀॴ։ൃऀମݧΛ͞Βʹ্ͤ͞Δࣄۀͱݚڀͱͷ࿈ܞ2021/04/10 ্ڃݚڀһ দຊ ྄հDeveloper eXperience Day CTO/VPoE Conference 2021
View Slide
2ɾ͘͞ΒΠϯλʔωοτݚڀॴ ্ڃݚڀһɾใॲཧֶձ IOTݚڀձ OSݚڀձ ҕһɾװࣄɾΠϯλʔωοτٕज़ୈ163ҕһձ ӡӦҕһɾIEEE / ACM / USENIX ֤छձһɾgrooves / Netforest / GMOϖύϘ / COGNANO ֤छݚڀɾٕज़ސɾژେֶത࢜ʢใֶʣɾhttps://research.matsumoto-r.jp/দຊ྄հ / ·ͭͱΓʔ / @matsumotory
3اۀݚڀͷՁࣄۀ࿈ܞIUUQTTQFBLFSEFDLDPNNBUTVNPUP@SRJZFZBOKJVGBMTFKJB[IJUPTIJZFUPGBMTFMJBOYJ
4Ҏલड़ͨ͜ͱ
5Ҏલड़ͨ͜ͱ
• ΤϯδχΞɾPdMɾEMɾݚڀऀͷΩϟϦΞ͔Βࣄۀͱ։ൃऀମݧΛߟ͑Δ• ࣮ࡍʹݱࡏɼࣄۀϓϩμΫτɼ৫ʹ͍ͭͯ৭ʑऔΓΈ࢝Ί͍ͯΔ• ΤϯδχΞɾݚڀऀΛଓ͚ΔதͰݸਓͷྗྔͱͤʹର͢ΔೝࣝͷมԽ• ࣗͷؔ͢Δਓͷະདྷ৫ͱͯ͠Ͳ͜·Ͱ͍͚Δ͔ͱ͍͏ظ• ݸਓͱͯ͠ߩݙΛ࠷େԽ͢Δ৫ͷ͋Γํͱ• ݚڀऀͷΩϟϦΞΛ׆͔ͯ͠ࣄۀ։ൃऀମݧͷ্Λղੳͯ͠ΈΔ• ࣋ଓతʹมԽ͠ଓ͚ΒΕΔࣄۀ৫ɼͦͯ͠ɼ։ൃऀମݧͷ্ͱ6ࠓ͢͜ͱ
• ݚڀεΩϧ͔ΒΈͨࣄۀ৫ɼϓϩμΫτͷݴޠԽ• ΤϯδχΞɼPMɼEMɼݚڀऀͷεΩϧΛϑϧ׆༻ͯ͠։ൃऀମݧΛݴޠԽ• ετʔϦʔΛߏ͠ͳ͕ΒͦΕ͕ͳͥ։ൃऀମݧʹܨ͕Δ͔Λٞ• ͦͷ্Ͱࠓޙ՝ʹͳΓͦ͏ͳऔΓΈΛු͖ூΓʹ͍ͯ͘͠• ࠓͦͷͻͱͭͷΞϓϩʔνʹ͍ͭͯ͝հ7ݚڀऀͷΩϟϦΞ͔Β։ൃऀମݧΛݴޠԽ
1. ܦӦࣄۀ͔ΒΈͨ։ൃऀମݧ2. ݸਓʹϑΥʔΧεͨ͠νʔϜϏϧσΟϯά3. ϓϩμΫτͷҙٛͱಉظ4. ܦӦܭըͱಉظͤͯ͞৫ͱͯ͠औΓΉ5. ԿपճͬͯυΩϡϝϯτେࣄ6. ݴޠԽͷݶքͱͦͷઌ8ࠓͷ6ݸͷணϙΠϯτ
1/6.ܦӦࣄۀ͔ΒΈͨ։ൃऀମݧ
• ࣄۀͱϓϩμΫτ։ൃʹେ͖ͳ͕ࠩ͋Δ• ྑ͍ͷΛ࡞Δ͚ͩͰΘΕͳ͍࣌ → ઌʹ͋ΔϏδωεϞσϧ• ੈʹٻΊΒΕΔͷͷதͰࣗͨͪԿʹߩݙͯ͠Γ͕͍Λײ͡Δ͔• ϓϩμΫτΛͬͯΒ͏ͨΊͷܦӦܭըࣄۀઓུඇৗʹେࣄ• ΤϯδχΞ͕ܦӦܭըࣄۀઓུΛཧղ্ͨ͠Ͱָࣗ͘͠༝ʹ։ൃ• ΤϯδχΞͷࣗ༝ͳ։ൃஅ͕ࣄۀͷʹࣗಈతʹॏͳΔΑ͏ʹ͢Δ• Γ͕͍ҙٛΛͨΓલʹཧղ͢Δ͜ͱͰ։ൃऀମݧ͕ྑ͘ͳΔ10ࣄۀͱ։ൃ
• ϓϩμΫτΛ࡞ΓɼίʔυΛॻ͘͜ͱʹઐ೦ͯ͠Β͏ͷͪΖΜ• ͦͷ׆ಈͷҙٛ࡞͍ͬͯΔϓϩμΫτͷҙٛΛৗʹಉظ͢Δ• ܦӦܭըɾࣄۀઓུɾϓϩμΫτͷίϯηϓτϏδϣϯ• ͦͷ্Ͱࡉ͔͘ਐḿΛཁٻ͢ΔͷͰͳ͘શྗΛਚͤ͘Δڥͱ৫Λ༻ҙ• εέδϡʔϧͷඞཁੑ͢Βͳ͙͘͢Β͍ͷؾ࣋ͪͰऔΓΉ11։ൃऀମݧΛྑ͘͢ΔͻͱͭͷΞϓϩʔν
• ͞ΒʹϓϩμΫτΛ࡞Δ׆ಈ͕ݸਓͷΩϟϦΞʹܨ͕ΔΑ͏ʹॏͶ߹ΘͤΔ• ৫ͷͨΊ͚ͩʹಈ͘ͱ͍͏ಈػͰײͰ؆୯ʹ่յ͢Δ• ແཧʹΞτϓοτͤͨ͞Γਐḿཧ͢ΔͷΞϯνύλʔϯ• ͦΕͧΕͷݸੑʹ͋ͬͨݸਓͷΩϟϦΞͷ͋ΓํΛҰॹʹߟ͑Δ• νʔϜϏϧσΟϯά͕େࣄʹͳͬͯ͘Δ12৫ͱݸਓ྆ํ͔ΒΓ͕͍Λ࣋ͭ
2/6.ݸਓʹϑΥʔΧεͨ͠νʔϜϏϧσΟϯά
• ͳͥ։ൃ͢Δͷ͔• ͦΕ͕ͲΜͳҙٛΛ࣋ͭͷ͔• ͋ͷͱ͖ͨͪͳͥ͋Μͳʹ࣌ؒΛΕͯҙΛ͍࣋ͬͯͨͷ͔• ͳͥ։ൃνʔϜࣗతʹָ͘͠Γ͕͍Λͬͯ։ൃͰ͖Δͷ͔• ർΕͨͱ͖໎ͬͨͱ͖Ͳ͏͢ΕΑ͍͔• ͱʹ͔͘νʔϜʹҙΛ࣋ͬͯݴޠԽ͠ɼίϯηϓτΛಉظ͢Δ14։ൃνʔϜʹ։ൃͷҙٛΛͱʹ͔͘ಉظ
• ໎͍ർΕ࣋ଓ؍ͰҰ൪ͷোนʹͳΔͷͰৗʹ༏ઌతʹղܾΛߦ͏• ৫͚ͩͰͳ͘ݸਓʹର͢Δಈػॏཁࢹ͢Δ• ࣋ଓతʹڧ͍৫Λ࡞ΔͨΊʹظతʹ৫ʹਚͯ͘͠ޙͰઌࡉΓ͢Δ• ໎͍ർΕɼϞνϕʔγϣϯԼͷཧ༝ͳʹ͔Λ૬ஊͯ͠ղܾ͢Δ• 1on1ʹΑΔ৴པؔߏங͕ඇৗʹେࣄ• ਓײͷੜ͖Ͱ͋Γɼͦ͜ʹϑΥʔΧε͢Δ͜ͱͰ։ൃऀମݧΛ্• ։ൃνʔϜʹ৫ࣄۀͷͰٙΛ࣋ͨ͞ͳ͍Α͏ʹऔΓΉ15ΈർΕҰ൪ͷ
3/6.ϓϩμΫτͷҙٛͱಉظ
• λʔήοτࢢʹؔ࿈ͯ͠࡞ΔϓϩμΫτͷҙٛ• ݚڀͰͦͷଥੑҙٛͷετʔϦʔॏཁࢹ͞ΕΔ• ؔ࿈ϓϩμΫτͷαʔϕΠͳͦ͘ͷ༏Ґੑࣔ͠ʹ͍͘• ؔ࿈ϓϩμΫτͷҙٛΛཧ͢ΔதͰΔ͖ߩݙΛු͖ூΓʹ͢Δ• λʔήοτͷใͳͲܦӦɾࣄۀઓུ୲ͱڠྗͯ͠ऩू͢Δ• ͜ΕΒͷϓϩμΫτͷଥੑΛ։ൃऀʹৗʹ͔͑ͯͬ͠Γͱಉظ͢Δ• ͦͷೲಘͱཧղ͕։ൃऀͷνʔϜΓ͕͍Λڧ͘͢Δ17ϓϩμΫτͷҙٛͷಉظͷํ
• ٕज़Ϣʔεέʔε؍Ͱؔ࿈͢ΔϓϩμΫτͷαʔϕΠ• ͜ΕจͰॏཁࢹ͞ΕΔ → ࣗͷόΠΞεͰงғؾͰΒͳ͍• ࡞Γ͍ͨͨΊʹ߹ͷྑ͍λʔήοταʔϏεͷ༏ҐੑΛఆٛ͠ͳ͍• αʔϕΠ͢ΔதͰཁΛநԽ͠Ͱ͖͍ͯΔ͜ͱͰ͖͍ͯͳ͍͜ͱΛཧ• υΩϡϝϯτͱͯ͠·ͱΊΔ• ؔ࿈αʔϏε͕૿େ͍ͯ͠ΔͨΊ୯७ʹαʔϕΠจʹͳΓಘΔ• ͰɼΓ͍ͨࣄۀΛԁʹձࣾͱͯ͠ਐΊΔʹͲ͏͢ΕΑ͍͔ʁ18ࣄۀʹ͓͚Δݚڀऀͷαϙʔτ
4/6.ܦӦܭըͱಉظͤͯ͞৫ͱͯ͠औΓΉ
• ࣄۀʹର͢Δ໌֬ͳετʔϦߩݙΛ·ͱΊ্ͨͰձࣾํͱॏͶ߹ΘͤΔ• ܦӦνʔϜͱσΟεΧογϣϯ͠ͳ͕ΒݴޠԽ͠ڞ༗ʢॎͷ࿈ܞʣ• ձࣾํܦӦܭըʹΓࠐ·ͳ͍ͱՃͷࣄۀͱͳͬͯௐ͕͘͠ͳΔ• ਓ͕ग़ͤͳ͍ͱ͔༏ઌ͕ߴ͍͍Έ͍ͨͳʹམͪͯ͠·͏• ΤϯδχΞνʔϜͷϞνϕʔγϣϯ͕େ͖͘Լ͢ΔݪҼͷͻͱͭ• ։ൃऀମݧ͕େ෯ʹԼ͍ͯ͘͠…..• ͳͥձࣾํʹඞཁͰ༏ઌΛߴ͖͔͘͢ͱ͍͏ݴޠԽ20ݚڀεΩϧʹΑΔܦӦ֤छνʔϜͱͷ࿈ܞ
• ࣄۀܭըϓϩμΫτͷ։ൃΛؔ࿈͢Δ෦ॺʹ༧ΊڠྗΛڼ͙ʢԣͷ࿈ܞʣ• ࣄۀԽ͢Δͷʹɼ୲Λଥڠ͚ͯࣗͨͪͩ͠ͰΖ͏ͱ͢Δͱट͕͠·Δ• ฉ͍ͯ͘Εͳ͍͔ΒউखʹΖ͏࠷େͷΞϯνύλʔϯ• ن͕େ͖͘ͳ͖ͬͯͨͱ͖ʹڠྗ͕ಘΒΕͳͯ͘࠳͢Δ• ։ൃνʔϜͲΜͲΜ൘ڬΈʹͳͬͯۤ͘͠ͳΔ → ମݧͷԼ• ࣌ؒΛཁͯ͠৫ͷ࣋ଓੑΛॏཁࢹ͠ॎͱԣͰڠྗͰ͖Δମ੍Λߏங͢Δ• ͦͷͨΊͷݴޠԽͰ͋ΓɼͦͷඞཁੑΛೲಘͰ͖ΔΑ͏ʹཧ͢Δ21ݚڀεΩϧʹΑΔܦӦ֤छνʔϜͱͷ࿈ܞ
• ಛޮༀతͳ୯ಠͷϓϩμΫτΞτϓοτʹ͠ͳ͍• ͦͷॠؒޮՌ͕ಘΒΕΔʢಘΒΕͨͱצҧ͍ͯ҆͠৺͢Δʣ• ޙʹܨ͕Γ͕ͳ͘ઌࡉΓ͠ɼͦ͜ͷༀ͕Εͨͱ͖ʹҰؾʹෆௐ• શମͷࣄۀετʔϦʔͷதͰͦΕͧΕͷϓϩμΫτΛܨ͛ΔܧଓతͳऔΓΈ• શମͷετʔϦʔแ͞ΕΔϓϩμΫτͷதͰࡉ͔͘ՌΛಋ͖ग़͢• ֤Ռͷܨ͕ΓΛҙࣝ͠ͳ͕ΒܧଓతʹใɾϒϥϯσΟϯά͢Δ• ͜ΕΒͷߟ͑ํ։ൃνʔϜͱಉظͯ͠ݱࡏΛཧղͯ͠Β͏• Ͱ͜ΕΒͷಉظΛͲͷΑ͏ʹ͍͖ͬͯ͘ͳͷ͔ʁ22ࣄۀܦӦܭըʹམͱ͠ࠐΉͱ͖ͷҙ
5/6.ԿपճͬͯυΩϡϝϯτେࣄ
• ࣄۀϓϩμΫτͷऀͱΤϯδχΞνʔϜͰίϯηϓτΛৗʹಉظ• ෆ࣮֬ੑͷߴ͍औΓΈτϥΠ&ΤϥʔͷߴαΠΫϧͰվળ• ঢ়گ͕ͲΜͲΜมԽ͢ΔதͰࣄۀʹؔ͢Δࢥߟͷಉظ͕සൟʹى͜Δ• ࠷ॳνʔϜ͕খ͍͞ͱ͖ಉظͰ͖͍ͯΔΑ͏ʹࢥ͏͕……24ࣄۀʹ͓͚Δޱ಄ϕʔεͰͷಉظͷݶք
• ձͰҙΛ͑ɼೲಘͤͨ͞Γઆಘͤ͞ΔεΩϧͷߴ͍ਓॾਕͱͳΔ• ձͷ͋ͱʹٙΛ࣋ͬͯձͯ͠ղܾ• ͦͷਓ͕͍ͳ͘ͳ్ͬͨɼ͋ΕԿΛࢦͯ͠ΔΜ͚ͩͬʁͱͳΔ• ُ྾͕ੜ͡ɼͦͷُ྾ॠؒ͘ʹ৫ΛνʔϜࣄۀΛ่յͤ͞Δ• ͦ͜ͰࢀরՄೳͳυΩϡϝϯτΛҡ࣋͢Δ͜ͱͰُ྾ΛຒΊΔணࡎ25ࣄۀʹ͓͚ΔυΩϡϝϯτඋͷඞཁੑ
• ݴޠԽΛυΩϡϝϯτʹམͱ͔ͯͬ͠͠Γͯ͠ϨϏϡʔαΠΫϧΛճ͢• ҙ͢ΒݴޠԽ͢ΔʢΤϯδχΞͷൃදͰྑ͘ݴޠԽ͞Ε͍ͯΔʣ• ݴޠԽετʔϦʔɼߏԽ͍͠ɼͦΕ͕ੜۀͷݚڀऀͱ࿈ܞ͢Δ• ͔ͩΒͦ͜ࣄۀ৫Λཧղͨ͠ݚڀऀͱ͍͏ΩϟϦΞඞཁͱͳΔ• ࣄۀϓϩμΫτʹ͔ͭͯΓ͕͍Λײ͍ͯͨ͜͡ͱΕڈΒΕΔ• ݴ༿Ͱಉظ͠ଓ͚Δ͜ͱ৫͕εέʔϧ͢Δͱ͍ͣΕݶք͕͘Δ• ͦͷذͰυΩϡϝϯτΛࣔͤΔΑ͏ʹͦͷྲྀΕΛ͔ͬ͠Γͱ͢26ͱʹ͔͘ߏԽ͞ΕͨυΩϡϝϯτʹམͱ͢
• ܦӦɾࣄۀɾϓϩμΫτɾ։ൃνʔϜ͕ޭɾࣦഊͨ͠ཧ༝ΛੳՄೳʹ• ֤ձࣾνʔϜʹ߹Θͤͯࣗͨͪʹ͋ͬͨΓํΛݟ͚͍ͭͯ͘• ͦͷͨΊʹυΩϡϝϯτΛ͢ → ੳ → मਖ਼Λ܁Γฦ͢• ࣄۀ৫ͷυΩϡϝϯτϓϩμΫτͷίʔυͱಉ͡Ͱ͋Δ• ࣗͨͪͷউͪύλʔϯΛ࣌എܠʹ߹Θͤͯߋ৽͠ଓ͚Α͏27ৼΓฦΓੳ͕Մೳͳঢ়ଶ
• ͕ͯ͢ݴޠԽʹΑͬͯղܾͰ͖Δͱࢥ͍ͬͯͳ͍• ͋ΔҙຯͰࢲڀۃతʹݴޠԽʹظΛ͍ͯ͠ͳ͍໘͕͋Δ• Ͱྺ࢙ͷઙ͍ΠϯλʔωοτWebٕज़·ͩ·ͩݴޠԽ͕Γ͍ͯͳ͍• ݚڀεΩϧΛͬͯᐆດ͞งғؾΛͰ͖ΔݶΓݴޠԽ͢Δ• ݴޠԽͷઌͷײ֮ײɼൃͷେ͖ͳظ͕͋Δ͔Βͦ͜28ݴޠԽͷظͱͦͷઌ
• ӡ༻ٕज़ऀ৫ͷઃܭͱӡ༻ - גࣜձࣾϋʔτϏʔπ औక VPoE ߴଜ͞Μ29ݴޠԽͷྫIUUQTTQFBLFSEFDLDPNOBSJ@FYEFTJHOBOEPQFSBUJPOPGPQFSBUJPOBMFOHJOFFSPSHBOJ[BUJPO
• ࣄۀϓϩμΫτʹҙΛ͍࣋ͬͯͨ࠷ॳͷؾ࣋ͪԿͩͬͨͷ͔• νʔϜʹ৴པ͕ؔ͋ͬͯͳͥ͜Μͳʹָ͘͠Ε͍ͯΔͷ͔• ͦͷࠜװʹ͋ΔΤϯδχΞจԽࣄۀͷίϯηϓτͳΜͩͬͨͷ͔• ͨͪͲ͏͍͏ΤϯδχΞΛࢦ͍ͯͨ͠ͷ͔• ͦΕΒʮมԽ͠ଓ͚Δ͜ͱʯ͚͕ͩมΘΒͳ͍• ୭͕໎ͬͨͱ͖ʹࢀরՄೳͰɼৗʹߋ৽͞Ε͍ͯ͘ݴޠԽΛ༻ҙ͢Δ• มΘΔ͜ͱΛ൱ఆ͠ͳ͍ɼมΘΓଓ͚ͳ͚Ε͍͚ͳ͍30ݴޠԽ͠ৗʹࢀরɾߋ৽Մೳʹ͢Δ
6/6.ݴޠԽͷݶքͱͦͷઌ
• ݴޠԽͰ͖Δ͜ͱͦͷ··νʔϜͱͯࣗ͠ಈతʹεέʔϧͰ͖Δ• ݴޠԽͷݶքܽͱʁ• ݴޠԽ͠υΩϡϝϯτ͕උ͞Εͨઌʹҙࢥܾఆஅ͕ࣗಈԽͰ͖Δ• ࣗಈԽ͕ਐΉͱɼਓؒͷೝࢥߟ͕ࣗಈԽʹཔΓ͕ͪʹͳΔ• ࣗಈԽΛςʔϚʹͨ͠ݚڀͷҰͭͷ؍Ͱ͋ΔʮIronies of Automationʯ32ݴޠԽͱࣗಈԽ
• ࣗಈԽʹҿ·Εͳ͍ࢥߟҙࢥܾఆͷ܇࿅ೝͷΈΛਖ਼͢ࢪࡦ͕ඞཁ• ݴޠԽͦͷͷΛͰ͖Δਓ͕ҭͨͳ͘ͳΔՄೳੑ͕͋Δ• ݴޠԽ͕ͦ͜Ͱͱ·Γɼ·ͨچདྷͷ͕ൃੜ࢝͠ΊΔ• ࣌ʹσΟεΧογϣϯͷதͰվΊ͍ͯΛݟ͢ػձΛνʔϜʹઃ͚Δ• NetflixʹΑΔͱɼࣗಈԽγεςϜͰͳ͘ਓͷͨΊʹߦ͏• ਓͷεΩϧʹ͕ى͖ΔࣗಈԽରࡦΛͱΔඞཁ͕͋Δ• Chaos EngineeringతΞϓϩʔνʹΑͬͯೝରԠɼࢥߟͷ܇࿅33Ironies of Automationʹର͢ΔݱͷऔΓΈ
• ·ͩݴޠԽ͕ඞཁͳϑΣʔζͳͷͰਖ਼Θ͔Βͳ͍• ྺ࢙ʹֶ͖ͬͱࣅͨΑ͏ͳ͕ੜ͡ΔͩΖ͏• ͔ͩΒͦ͜ઌखΛଧͪͳ͕ΒҙࣝతʹऔΓΉඞཁ͕͋Δ• ݴޠԽ͕ਐΉͱಉ࣌ʹɼݱঢ়ͷ՝ࠓͳ͍৽͠͞Λٻͯ͠ΈΔ• ʮΒͳ͍ΛΒͳ͍ʯঢ়ଶ͔ΒݴޠԽʹΑͬͯ՝Λු͖ூΓʹ͢Δ• ՝৽͠͞ʹ͍ͭͯਂٞ͘͠ଓ͚ͯࣗͨͪΛΛࢭΊͳ͍• ͜ΕΒ͕ݱ࣌ͰͷΘͨ͠ͷ͑Ͱ͋ΓߋʹօͰ͍͖͍ٞͯͨ͠34Ͳ͏ΕݴޠԽͨΔࣗಈԽͱڞଘͰ͖Δ͔
·ͱΊ
• ࣄۀܦӦܭըΛ։ൃνʔϜͱಉظ͠ͳ͕ΒݴޠԽ͠ߏԽͯ͢͠• ҙɼΓ͕͍ɼ৫ɾݸਓͱͯ͠ͷҙٛɼܦӦɼࣄۀɼϓϩμΫτ….• ݴޠԽࣗಈԽͰ͋ΓͦΕΛՄೳͱ͢Δਓͷ͕͍ͣΕඞཁͱͳΔ• ఆظతʹ৽ͨͳࢥߟٞɼ͍Λͬͯ܇࿅͠ଓ͚ΔػձΛઃ͚Δ• ॏͳΔݴޠԽͦͷεΩϧ্ͷઌʹݴޠԽͷݶք͕͋Δ͔͠Εͳ͍• ܾͯ͠൵؍͍ͯ͠ΔΘ͚Ͱͳ͘৽ͨͳൃ͕͋Δ͜ͱʹظΛ͍ͯ͠Δ• ຊͷҙຯͰͷ৫ͱͯ͠ͷਓؒͷࢥߟ͕ݴޠԽΛ྇կ͢Δͷ͔͠Εͳ͍36։ൃऀମݧΛ্ͤ͞ΔͨΊʹ