とちぎRuby会議08でお話させていただきました。 http://regional-gh.rubykaigi.org/tochigi08/ https://esa.io
esaͷWIPͷ 2019by @ken_c_lo at esa LLCJune 29, 2019ͱͪ͗Rubyձٞ 08WIP
View Slide
!2• ௩ ົࢠ• @ken_c_lo (@taea)• esa LLC• ۀऀɾσβΠφʔ• ΤϯδχΞ2ਓ + σβΠφʔ1ਓ• ࠷ॳझຯͰαʔϏεΛ࡞͍ͬͯͨ• 5લ͔Β๏ਓԽ
https://esa.io
• MarkdownͰॻ͚Δใڞ༗αʔϏε• Wikiతͳ͍ํ͕Ͱ͖ΔesaΛ͝ଘͷํʁ ůŢ
WIPͱʁ
WIPʹ Work in Progressਐߦதɾ࡞ۀதɾॲཧதɾະෆશͰ͋Δ͜ͱΛप͢Δه߸ͱͯ͠ΘΕΔřŎŕŲƅ
ͱΓ͋͑ͣɺڞ༗ࡶʹڞ༗·ͩશ෦Ͱ͖ͯͳ͍͚Ͳڞ༗
͜Μͳײ͡ͷ͜ͱΛਐΊ͍ͯΔ͚Ͳɺ·ͩ͡Όͳͯ͘ɺ͜Ε͔Βͬͱྑ͘ͳΔΜͰ…[WIP] Λ͚ͭͯԿ͔Λڞ༗͢Δͱ͖ͷ͖ͪ• ͳͷͰݫ͗͢͠Δποίϛ·ͩצหͯ͠Ͷ• ͚Ͳɺؒ͘͢͝ҧͬͯͨΒڭ͑ͯͶ• ࠔͬͯͨΒॿ͚ͯͶ• Δؾ͋ͬͯ͜Ε͔ΒΔͭΓͰ͋ΔΜͩΑ• ͬ͘͟Γ͜͏͍͏͜ͱͬͯΔ͔ΒͳΜͱͳͬͯͯ͘Ͷ• ͞Γؾͳ͘΄Ίͯ͘ΕͨΒΔؾग़Δ͔• ·ͣࣗͷϝϞతʹॻ͍ͯΔ͚ͩͳΜͩ…ׂͱɺݴ͍༁͕·͍͔͠͠Εͳ͍ʂ
ͭ·ΓɺWIPͱΤΫεΩϡʔζͷҰछʢݴ͍༁ɾหղɾݐલʣExcuse me
ਓɺݴ͍༁ɾݐલ͕ඞཁ• ஏ͔͍ͣ͜͠ͱ• ݴ͍ͮΒ͍͜ͱ• ͩ͘Βͳ͍͜ͱ• ෆશͳ͜ͱ/ࣗ৴ͳ͍͜ͱ• ࣄతͰͳ͍͜ͱ…ͳͲΛݴ͏࣌ʹ
ͪͳΈʹ…ʮϙΤϜʯҰछͷΤΫεΩϡʔζ• pplog.net• ࠷৽ͷهࣄ͔͠ެ։Ͱ͖ͳ͍ϒϩάͷΑ͏ͳͷ• ʮϙΤϜʯΛॻ͘ॴ• ϙΤϜ͔ͩΒ• Web্ʹΒͳ͍͔Βݴ͍ʹ͍͘͜ͱɺஏ͔͍ͣ͜͠ͱɺϙΤϜͳΒݴ͑Δοʂ
ΤΫεΩϡʔζҙਤతͳ੍ݶΛՃ͠ɺΈʹ͋ΔछͷʮϢϧ͞ʯΛ༩͑Δ͜ͱͰɺʮΏΔ͠ͷσβΠϯʯͱউखʹݺΜͰ͓Γ• ࠓ·Ͱݴ͑ͳ͔ͬͨ͜ͱ͕ݴ͑Δ• ॻ͚ͳ͔ͬͨਓ͕ॻ͚Δ• Ͱ͖ͳ͔ͬͨ͜ͱ͕Ͱ͖ΔݸਓతʹڵຯΛ࣋ͬͯΔ
WIPesa.ioͷWIPػೳʹ͍ͭͯ
อଘϘλϯ͕2ͭʁʁ
࡞ۀதͷͱ͖ɺWIPͰอଘϒϩάͳͲͰ͍͏ͱ͜ΖͷԼॻ͖ʹ͋ͨΔײ͡Լॻ͖ஈ֊͔Βଞਓʹݟ͑ΔΑ͏ʹͳͬͯΔ
WIPͰอଘ͢ΔͱɺλΠτϧ͕άϨʔΞτ• WIPͰߋ৽ͯ͠WebhookͰSlackͱ͔ʹ௨͕ඈͳ͍• ߋ৽ҰཡʹάϨʔΞτͯ͠ग़ΔʢHomeը໘Ͱͳ͍ʣ• Կߋ৽͢Δ͜ͱ͕Ͱ͖Δʢ㵰+Sʣ• ΈΜͳʹੵۃతʹΒͤ͠ͳ͍͚Ͳɺڵຯ͋ΔਓΘ͟Θ͟ݟʹདྷΕݟΔ͜ͱ͕Ͱ͖Δঢ়ଶ
͍͍ͩͨͰ͖ͨΒɺShip It!
Ship It! ͢ΔͱWebhook ͷ௨͕ඈͿ ƻΈΜͳ͕ݟʹདྷΔ
Almost done? ≠ Done!ʮ͍͍ͩͨͰ͖ͨʯ͕ϙΠϯτ• 70 - 80%͘Β͍ͱ͔Ͱ͍͍ͷ͔ʁ• ·ͱ·͖͔ͬͯͨΒҰ୴प͍ͨ͠ͳʔͱࢥͬͨλΠϛϯάͰShip it• ͬͱϒϥογϡΞοϓ͍ͨ͠ͳʔͱࢥͬͨλΠϛϯάͰɺWIPʹ͢͜ͱͰ͖Δʢ݁ߏΑ͘Δʣ
WIPͰใΛॻ͍ͯΈΔCase Study
ग़ࣾͨ͠Β…WIPͰใΛॻ͘śŰżŖલͷใΛίϐʔͯ͠ฤूͬΆ͍ࣈ͕λΠτϧʹೖͬͯΔهࣄΛίϐʔ͢Δͱɺউखʹࠓͷʹͯ͘͠ΕΔTODOϦετΛॻ͘w <>ˠͰνΣοΫϘοΫεॻ͚Δw ࠓΔ༧ఆͷ͜ͱ͕ࣗͰ၆ᛌͰ͖Δw Ϧετʹॻ͍͓ͯ͘ͱɺΕͯΔΘ͚͡Όͳͯ͘ɺΔͭΓ͋ΔΜͩͳͬͯ͜ͱΘΔ
ࣄத… ใΛԿߋ৽ŹŞŹŞʜλεΫΛ͜ͳͨ͢ͼɺใΛߋ৽w 50%0ϦετʹνΣοΫΛೖΕΔw ਵ͢ΔղઆඋɺϋϚͬͨͱ͜Ζݒ೦ɺͦͷ࣌ͷؾ࣋ͪͳͲه͠ͱ͘ͱศརw ಥൃతͳλεΫՃͯ͠ߋ৽w ͷऴΘΓʹʮࠓԿ͚ͬͨͬʜʯͬͯͳΒͣʹࡁΉ
ୀࣾ࣌ʹ…ใΛShip It!śŨŜƀŖSlackͳͲʹ௨͕ඈΜͰɺΈΜͳ͕ݟʹདྷΔࠓͷॴײ૯ׅΛॻ͍ͯɺShip It!
ͦͷଞͷใTIPS• ใλΠτϧʹࠓͬͨ͜ͱɺࠓͷؾ࣋ͪΛॻ͘ਓ͍Δ• ࠓͷϥϯνɺࠓͷςʔϚۂΛॻ͘ਓ• ͋ͱͰͲΜͳ͔ͩͬͨࢥ͍ग़ͤͯศར• ୀࣾ࣌ʹ໌ͷใΛWIPͰॻ͍͓ͯ͘έʔε͋Δ• ໌ͷݟ௨ཱ͕ͯ͠ΒΕͯศར• ேձͳͲͰɺࡢͱࠓͷใΛڞ༗ͯ͠ɺͦΕΛݟͳ͕Βใڞ༗૬ஊΛͨ͠Γ͢Δ• ʮॴײʯίʔφʔʢϑϦʔςΩετͷ෦ʣͰ࣌ંΓ্͕ͬͨΓ͢Δ
WIPͰใΛॻ͘ͱ…ŬŕŴƅŖேɺࣗͷͨΊʹॻ͍ͨTODOϦετ͕ɺ ؼΔͱ͖ʹΈΜͳʹڞ༗Ͱ͖Δใʹʂw ʮใࠂɾڞ༗ͷͨΊͷυΩϡϝϯτʯΛॻ͔ͳͯ͘ྑ͘ͳΔΜͰ͢Ͷw ಉ͡Α͏ͳײ͡ͰɺʮΞδΣϯμʯ͕ձٞऴΘΔࠒʹʮٞࣄʯʹͳͬͨΓ͠·͢
WIPใ͚ͩ͡Όͳ͍ɺ͍ΖΜͳΑ͍͜ͱ
Case 1: WIPͰॻ͘ͱɺணख͍͢͠• ࣄલʹෆ࣮֬ͳཁૉͷଟ͍ࣄ΄ͲɺखΛ͚ͭΔͷ͕ԯ߷ʢεϥΠυͱ͔ʂʣ• WIPͳΒ࠷ॳͷҰา͕౿Έग़͍͢͠• ࠷ॳλΠτϧͷΈɺࢥ͍͖ͭΛՕॻ͖ʹ͢Δ͚ͩͰΑ͍• ࠷ॳʹࡶʹWIPͰͬ͘͟Γॻ͍ͯڞ༗͢ΔͱɺपғͷϑΟʔυόοΫΛड͚ͳ͕ΒɺঃʑʹυΩϡϝϯτΞΠσΞΛྑ͍ͯ͘͘͜͠ͱ͕Ͱ͖Δ• ్தͰୈࡾऀͷϦΞΫγϣϯΛΒ͑ΔͱɺϞνϕʔγϣϯ্͕ΔҰؾʹ͕ߴ͍ͷΛॻ͘ͷϋʔυϧߴ͍͚ͲɺWIPͩͱղ૾͕͍ঢ়ଶ͔Βॻ͖ग़͍͢͠ɻ
Case 2: WIPͰެ։͢ΔͱɺपΓͷཧղΛಘ͍͢• ʮͳΔ΄Ͳɺ͜͏͍͏ϓϩδΣΫτ͕ࠓಈ͘༧ఆͳͷ͔ʯͱ͍͏प͕Ͱ͖Δ• ΔΑʂΖ͏Αʂ ΛपғʹॊΒ͔͘Ξϐʔϧ → पΓ৺ͷ४උ͕Ͱ͖Δ• اը͕ॊΒ͔͍͏͔ͪΒΈΜͳ͕ࣄऀʹͳΕΔ༨͕Ͱ͖Δ• ݻ·͔ͬͯΒݴ͏ͱˠʮͬͱૣ͘ݴͬͯ͘ΕΕ…ʯʮͦΜͳٸʹݴΘΕͯࠔΔ…ʯࢀߟʣϝυϨʔ͞ΜͷΠϯλϏϡʔ : https://docs.esa.io/posts/153اը্ཱ͕͕ͪͬͨͱ͖ʹɺৄࡉ͕ܾ·ͬͯͳͯ͘ɺ·ͣλΠτϧ͚ͩͷWIPͷυΩϡϝϯτΛ࡞͓ͬͯ͘ɻ
• WIPͱॻ͍ͯ͋Δͱɺॻ͖खͷߟ͑Λ಄͔Β൱ఆ͠ͳ͘ͳΔ• ͜Ε͔Βࡉ͔͍ͱ͜ΖΛྑ͍ͯͭ͘͘͠ΓͳͷͩΖ͏ɺͱ͍͏͜ͱΛલఏʹ͢Δ͜ͱ͕Ͱ͖Δ• ʮ·ͩॻ͍ͯͳ͍͚͔ͩ͠Εͳ͍͚Ͳɺ͕̋̋Γͯͳ͍͔ʙʯˠ ࢦఠࣗવʹؾΛͬͨײ͡ʹͳΔ• ͕େ͖͍ਓɾϋʔτ͕ڧ͍ਓҎ֎ൃ৴͘͢͠ͳΔ ☺Case 3: WIPͩͱɺಡΈख͕༏͘͠ͳΕΔͪΐͬͱπϝ͕͍ΞΠσΞ͚ͩͲɺ ·͋WIP͔ͩΒ͋Μ·ΓποίϛΛೖΕΔͷͳ͊…
WIPWIPਓͷͨΊͳΒͣ
• ϩʔΧϧͷςΩετΤσΟλ• ݸਓ༻ͷEvernote• ࣗѼͯͷϝʔϧࣗͷͨΊʹॻ͘ʮυΩϡϝϯτʯඋɾϝϞɾTODOϦετɾاըΞΠσΞɾઃܭΞΠσΞ༩݅ͷཧɾվળҊɾࠒࢥ͍ͬͯΔ͜ͱɾॻ్͖தͷΖΖ…ྫ͑͜Μͳͱ͜Ζʹ
ࣗͷϩʔΧϧ (͋Δ͍) ʹ͋ΔࣗͷͨΊͷͷΛɺ ૣ͍ஈ֊ͰνʔϜϝΠτʹݟ͑ΔॴʹɻͦΕΛΓ͘͢͢ΔΈ͕WIPΈΜͳॻ͍ͯͳ͍Θ͚͡Όͳ͍ɻਓʹݟͤͯͳ͍͚ͩͳΜͩʂ
ࣗͷͨΊʹͬͨ͜ͱ͕ɺ୭͔ͷͨΊʹͳΔ͜ͱ͕͋ΔࣗͷͨΊʹॻ͍ͨTODOϦετ͕ؼΔͱ͖ʹใʹͳͬͯΔʂʢͳΒͳ͍͜ͱ͋Δʣ
ࣗͷͨΊʹͬͨ͜ͱ͕ɺ୭͔ͷͨΊʹͳΔ• OSSͷϓϩδΣΫτɺݸਓ։ൃ• ϒϩά࡞ͷΞτϓοτɺಉਓ׆ಈͱ͔ʁ• WebαʔϏεͷυοάϑʔσΟϯάͱ͔• esa͕ࣾେʹ͍ͯ͠Δߦಈࢦͷͻͱͭ• ʮ͕ࣗͨͪࣗཉ͍͠ͷɾ͏ͷΛͭ͘Δʯ• αʔϏεάοζ͕ࣗͨͪཉͯ͘͠࡞ͬͯΔʬ͜ͷݪཧͰճ͍ͬͯͦ͏ͳͷͨͪʭ
ࣗͷͨΊʹͬͨ͜ͱ͕ɺ୭͔ͷͨΊʹͳΔߦҝͦͷͷ͕ใुͰ͋Δঢ়ଶϞνϕʔγϣϯ͕ߴ͍ͦΕͧΕ͕ࣗతʹಈ͚ΔνʔϜ
ࣗతͳνʔϜ = Α͍νʔϜ…ͩͱesaߟ͑ͯΔ
WIP·ͱΊ: શ͕ͯWIPʹͳΔ
͜ΕFIXͰ͔͢ʁ֬ఆࣄ߲Ͱ͔͢ʁݱͰΑ͋͘Δ࣭
͔֬ʹࣄΛ͢Δ্Ͱɺʮ͜ΕͰ֬ఆ(FIX)ʯݐલ্ඞཁɻͳ͍ͱ্ख͘ճΒͳ͍ɻ͚ΕͲຊདྷɺશͯͷͷ͝ͱෆશͰɺൃల్্ͰɺͲͷ͔࣌ΒͰมΘ͍͚ͬͯΔ͠ɺͬͱྑ͘͢Δ͜ͱ͕Ͱ͖ΔͷͰͳ͍͔ʁ
WIP͜Ε͔Βͬͱͬͱྑ͘ͳΔՄೳੑ͕͋Δͱ͍͏͜ͱ͋Εʁ࣮ੈͷதͷ৭Μͳͷɺ͍͍ͩͨ8*1ʹͰ͖ΔͷͰʁ
શ͕ͯWIPͱͯ͠ίϛϡχέʔγϣϯͰ͖ΔΑ͏ʹͳΔͱɺΑΓࣗతͰ͍͖͍͖ͱͨ͠Α͍ͷ͕࡞ΕΔνʔϜʹͳΕΔͷ͔
Everything is in ProgressThank you (\( ⁰⊖⁰)/)