2019/11/03 に開催された富山 Ruby 会議01の発表資料。 https://toyamarb.github.io/toyama-rubykaigi01/
北陸のシステム開発案件の特徴を考察し、そのなかでRubyをもちいた案件にリーチするためにどのように活動してきたかの事例紹介。
2019/11/03Ͱ Ruby ͳ͓ࣄʹܞΘΔͨΊͷ3ͭͷઓུࢁ Ruby ձٞ 01
View Slide
ਗ਼ݪஐ✤ ۀ✤ ΠϯλʔωοτηΩϡϦςΟؔ࿈ͷݚڀ։ൃ (Ruby)✤ Web ܥγεςϜ (Ruby on Rails)✤ ίϛϡχςΟ׆ಈ✤ Kanazawa.rb ӡӦ
ਗ਼ݪஐ✤ ࠷ۙͷझຯ✤ ϑϧϚϥιϯ͖ͯͨ͠
ΞτϥΠϯ✤ ͷγεςϜ։ൃҊ݅ͷಛߟ✤ 3ͭͷΤϐιʔυΛ͝հ✤ ͲͷΑ͏ͳઓུΛͱΓ✤ ઓज़ͱͯ͠ͳʹΛ͓͜ͳ͍✤ ݁ՌͲ͏ͳ͔ͬͨ
ࠓͷϝΠϯλʔήοτ✤ ͷΤϯδχΞ͞Μ✤ γεςϜ։ൃձࣾʹۈ͍ͯ͠Δ or ݸਓࣄۀओͱͯ͠׆ಈ͍ͯ͠Δ✤ ओʹϓϩάϥϛϯάΛੜۀʹ͍ͯ͠Δ✤ Ruby ͳࣄʹϦʔν͍͚ͨ͠ͲͰ͖͍ͯͳ͍
ͷγεςϜ։ൃҊ݅ͷಛ
ϓϩάϥϛϯάݴޠͷׂ߹✤ ۀܥγεςϜ։ൃ✤ ΄ͱΜͲ͕ Java ͱ .NET(C#, VB)✤ ΣϒܥγεςϜ։ൃ✤ ΄ͱΜͲ͕ Java ͱ PHP
Ҋ݅ͷಛ✤ ΄ͱΜͲ͕େنͳطଘγεςϜͷվम✤ ີ݁߹ͳ୯ҰγεςϜͰ͋Δ߹͕ଟ͍✤ ϝϯςφϯείετܰࢹͷ͕͋Δ✤ ͳΔ͘গͳ͍ϝϯςφϯεඅ༻Ͱ4,5ಈ͍ͯཉ͍͠✤ ຖ1ճͷόʔδϣϯΞοϓʹਓ݄ɺͳ͔ͳ͔௨Βͳ͍
ٕज़બఆʹ͍ͭͯ✤ ٕज़બఆͷࢧతཁҼ͕ਓࡐ✤ ٕज़ࣗମͷಛΑΓʮͰ͖ΔਓʯΛ֬อͰ͖Δ͔✤ ଟͷΤϯδχΞΛ๊͑ΔେखձࣾͷՉ✤ ϓϩάϥϛϯάݴޠࣗମͷಛબఆཁҼͱͯ͠ऑ͍✤ ੍͕͋ͬͯ΄΅ಉ͡ࣄ͕Ͱ͖ΔͳΒ Java Ͱ…
ʹ Ruby ͳࣄ͋Δͷ͔✤ Ruby ࢦఆͰۀऀબఆ͢ΔΑ͏ͳͷ΄΅ͳ͍✤ มԽ͕ۤखͱ͍͏ͷҬੑ͋Δʢͱࢥ͏ʣ✤ ৽͍͜͠ͱʹऔΓΜͰ͍Δ৫͋Δ✤ ઈରͱͯ͠গͳ͍✤ ڝ૪͕ߴ͘ۀऀ͕ݻఆԽ͞Ε͕ͪ
ͰͰ͖Δ Ruby ͳࣄ͋Δͷ͔✤ ͓ʹटݍΛத৺ʹ͋Δ✤ ʹ͍ͳ͕Βԕִͷ Ruby ͳࣄΛ୲͍ͬͯΔࣄྫձࣾɾݸਓࣄۀओͱʹͦͦ͋͜͜Δ✤ ԕִͰࣄΛड͚ΔͨΊͷڥ͕͔ͳΓඋ͞Ε͖ͯͨഎܠ͕Өڹ͍ͯ͠Δ
Ruby ͳࣄʹΉ͚ͯ✤ Ͱ Java Ͱͳ͘ Ruby ͳࣄʹϦʔν͍ͨ͠ͱ͍͏ཁΛʮࣗͰʯ͔ͳ͑ΔͨΊʹͲͷΑ͏ͳઓུΛͱ͍͔ͬͯ͘✤ ୡͷߴ͍ઓུΛબͼ͍ͨ✤ ޮͷΑ͍ઓུΛબͼ͍ͨ✤ Ͳ͜ͷ༏ઌΛม͑Δ͔ΛݟఆΊΔ͜ͱ͕ॏཁ
Episode 1
લఏ✤ (IT෦Ͱͳ͘) ܦӦʹ͍ۙਓୡͱަྲྀͨ͠✤ ࣌ؒͱίετʹର͢Δෆຬ͕େ͖͍✤ ৽ن։ൃ͍ͨ͠ͱ͍͏ؾ࣋ͪڧ͍✤ ͕ɺ·ͱ·ͬͨॳظࢿ͕ग़དྷͳ͍✤ ։ൃख๏ʹόϦΤʔγϣϯ͕͋Δ͜ͱΛΔਓগͳ͍✤ ܦӦऀۀऀΛ࣮ͱޱίϛͰબΜͰ͍Δ
ઓུͱ༏ઌ✤ ઓུ:ʮRuby ͳࣄΛͭ͘Δʯ͜ͱΛࢦ͢✤ ཁ݅ͷݻ·ͬͨγεςϜ։ൃҊ݅Ͱͳͬ͘ͱલஈ֊ɺͭ·ΓཁΛͬͨܦӦऀʹϦʔν͢Δ✤ ʮRuby ͰʯΓ͍ͨސ٬Ͱͳ͘ɺRuby ͕Ϛον͢Δ։ൃख๏Λड͚ೖΕͯ͘ΕΔސ٬ʹϦʔν͢Δ✤ ΤϯδχΞ͕ࣗ✤ ༏ઌมߋ: ΤϯδχΞࣗͷӦۀతͳ׆ಈ
ઓज़✤ ܦӦࢹͷදݱͰ✤ ޱίϛͷ֦େΛૂͬͨ
ܦӦࢹͷදݱ 1✤ Ruby ͱ͍͏ॻ͖͍͢ϓϩάϥϛϯάݴޠΛ͔ͭ͏͜ͱͰϓϩάϥϜ͕ॻ͖͘͢ͳΓ·͢✤ ඇৗʹଟͷϥΠϒϥϦ܈ʹΑͬͯػೳՃ͕͘͢͠ͳΓ·͢✤ ॆ࣮ͨ͠ςετϑϨʔϜϫʔΫͰόάͷൃੜΛ͑ϝϯςφϯε༰қʹͳΓ·͢
ܦӦࢹͷදݱ 2✤ ͍ظؒͰ8ׂͷͷͷΛͭ͘Γɺܧଓతʹվળ͍ͯ͘͠Α͏ͳࣄ͕ಘҙͰ͢✤ େنͳͻͱͭͷΈΛ࡞Δͱ͍͏ΑΓɺখ͞ͳγεςϜΛஈ֊తʹͭ͘Γͭͭ࿈ܞͤ͞ΔΑ͏ͳΞϓϩʔνΛఏҊ͍ͯ͠·͢✤ ӡ༻࣮ͷ͋Δೝͷߴ͍ PaaS ΛੵۃతʹͱΓ͍Ε͍ͯ·͢
ܦӦࢹͷදݱ 3✤ ͜·ΊʹධՁظؒΛઃ͚Δ͜ͱͰେ͖ͳखΓɺ͢ͳΘͪଛࣦΛݮ͠·͢✤ ΠχγϟϧͰେ͖ͳΩϟογϡΛ༻ҙ͠ͳͯ͘ɺ༧ࢉΛՃ͠ͳ͕ΒਐΊΔ͜ͱ͕Ͱ͖·͢✤ ػࡐతίετਓ݅අΛͳΔ͑͘ΔΑ͏ɺ৽͍͠αʔϏεΛ׆༻͍ͯ͠·͢
ޱίϛͷ֦େઓज़✤ ʮ͏ͪຊདྷ͜͏͍͏։ൃΛ͍ͨ͠ΜͩʯͱΞϐʔϧͨ͠✤ ΤϯδχΞ͕ࣗ✤ ͷސ٬ͷύʔτφʔ͞Μʹ✤ ࡶஊͱͯ͠ԿԿ
SNS Ͱͷใ׆ಈษڧձͷࢀՃ✤ SNS Ͱੵۃతʹใ׆ಈΛߦͬͯܦӦऀʹ΄΅ϦʔνͰ͖·ͤΜ✤ ΤϯδχΞ͚ษڧձ·ͩΈ͕͋Δ✤ ࣾһ͞Μܦ༝ͰܦӦऀʹϦʔνͰ͖Δ… ͔
݁Ռ✤ ݸਓࣄۀओͷσβΠφ͞Μܦ༝Ͱ৽͍͠औΓΈΛ͠Α͏ͱ͍ͯ͠Δͷސ٬ʹͭͳ͕ͬͨ✤ גࣜձࣾϗΫϏ✤ ͍εύϯͰվળΛ܁Γฦ͢ͱ͍͏ཁ݅ελʔτ✤ Ruby on Rails ͳγεςϜͱͯ͠ӡ༻ˍվળࢪࡦத
ؾΛ͚ͭͨ͜ͱ 1✤ ʮӦۀ͞Μʯͤʹ͠ͳ͍✤ ӦۀͷϛογϣϯṶ͔ΔࣄΛऔͬͯ͘Δ͜ͱͰ͋Γ Ruby ͷࣄΛ࡞Δ͜ͱͰͳ͍
ؾΛ͚ͭͨ͜ͱ 2✤ ܦӦऀʹϦʔν͢Δͱ͖ܦӦͷϩδοΫͰ͢✤ ʮܦӦͷࢹͰԿ͕خ͍͠ͷ͔ʯ✤ ΤϯδχΞ͕ܦӦͷΛ͢Δͷ֎Ͱͱ͍͏ؾஏ͔͍ͣ͠ؾ࣋ͪΛΓӽ͑Δ✤ Ϧʔν͍ͨ͠૬खͷࢹͱݴ༿Ͱ͞ͳ͍ͱಧ͔ͳ͍
Episode 2
લఏ 1✤ ओʹटݍΛத৺ʹ Ruby ͳࣄͦΕͳΓʹ͋Δ✤ ͷձ͕ࣾड͚ΒΕΔͷɺͱͳΔͱ͕ݶΒΕͯ͠·͏✤ ํͷձ͕ࣾड͚Δ߹୯ՁͰউෛ͢Δ߹͕ଟ͍ͨΊ✤ टݍͷձࣾͱͷࠩผԽཁҼͱͯ͠
લఏ 2✤ ձࣾ୯Ґͷܨ͕Γ͕͋Δͱ͜ΖํͷձࣾͰ͋ͬͯҊ݅Խ͍͢͠✤ ࣮ࡍͦΕͰࣄΛऔ͖͍ͬͯͯΔձࣾଟ͋Δ✤ ݸਓؒͷਓ຺Ͱ͋ΕΤϯδχΞͷࣗʹ࡞ΕΔ✤ SNS ษڧձͱ͍ͬͨͱ͜ΖͰ͍͛͢
ઓུͱ༏ઌ✤ ઓུ:ʮ(ԕִͷ) Ruby ͳࣄΛ͏͚Δʯ͜ͱΛࢦ͢✤ ձࣾϨϕϧͰͳ͘ݸਓؒͷਓ຺Λ׆༻ͯ͠✤ ༏ઌมߋ: ݸਓͷࣗ༝࣌ؒ
ઓज़✤ ෭ۀͱͯ͠ۀΛडୗ͢Δମ੍Λ͑ͨ
݁Ռ✤ ਓܦ༝Ͱटݍͷ Ruby on Rails Ҋ݅ʹܞΘΔ✤ גࣜձࣾ CAMPFIRE✤ ຊ࠷େڃͷΫϥυϑΝϯσΟϯάαʔϏε
ؾΛ͚ͭͨ͜ͱ 1✤ ࣗࣾͷཧղΛऔΓ͚Δ͜ͱେલఏ✤ ιϑτΣΞ։ൃऀ͕ιϑτΣΞ։ൃͷ෭ۀΛߦ͏͜ͱʮརӹ૬ʯΛཧ༝ʹͨ͠ૌুʹͳΓ͏Δ✤ ձࣾଆউૌͷલྫ͋Δ✤ ձ͕ࣾڐՄͯ͘͠Εͳ͍ͳΒఘΊΔ✤ ͬͦ͜ΓΔͷॅຽ੫ܭࢉͷ͔ΒΈͰ͓͓ΑͦόϨΔ
ؾΛ͚ͭͨ͜ͱ 2✤ ϦϞʔτϫʔΫΛेʹαϙʔτ͍ͯ͠Δڥ͔✤ ϦϞʔτϫʔΫΛิॿ͢ΔγεςϜΛ׆༻͍ͯ͠Δ͔✤ ϦϞʔτϫʔΫͷܦݧ͕͋Δ͔✤ ͕ࣗॳΊͯͷνϟϨϯδͱ͍͏ͷة͏͍✤ ΦϑΟεϫʔΧʔͱϦϞʔτϫʔΧʔͷཱ͕ಉྻ͔✤ ʮࣾһʯΧδϡΞϧʹϦϞʔτͰ͖ΔΑ͏ͳจԽ͔✤ ࣗͻͱΓ͚ͩϦϞʔτة͏͍
ؾΛ͚ͭͨ͜ͱ 3✤ ࣌ؒଳͷΪϟοϓΛेʹαϙʔτ͍ͯ͠ΔҊ͔݅✤ ෭ۀͱͯ͠׆ಈͰ͖Δ࣌ؒଳͲ͏ͯ͠ਂૣேʹͳΔ✤ ίϛϡχέʔγϣϯ͕ඇಉظʹͰ͖ΔจԽͰ͋Δ͜ͱ͕ॏཁ✤ ͨͱ͑ʮதʹ Slack Ͱϝϯγϣϯͯ͠Α͍จԽ͔ʯ✤ ϝϯγϣϯ͞ΕౖͯΒͣʹԠ͠·͠ΐ͏ → ×✤ Ԡ͕ΕΔ͜ͱ͕વͰաͳظΛ͠ͳ͍ → ○
ؾΛ͚ͭͨ͜ͱ 4✤ ࡞ۀ࣌ؒྔͷΪϟοϓΛेʹαϙʔτ͍ͯ͠ΔҊ͔݅✤ ෭ۀͱͯ͠׆ಈͰ͖Δ࡞ۀ࣌ؒ௨ৗۈΑΓܹݮ͢Δ✤ ࿑ಇج४๏Ͱ্ݶʢओͨΔۀͱ෭ۀ߹ࢉʣ✤ ͳʹΑΓ݈߁େࣄ✤ ࣌ؒ͋ͨΓͷύϑΥʔϚϯεམͪΔ✤ ཧղ͋ΔϚωʔδϟͷଘࡏ͕ෆՄܽ
Episode 3
લఏ✤ Ruby Λࢦఆͨ͠Ҋ͕݅࣋ͪࠐ·ΕΔ͜ͱθϩͰͳ͍✤ ࣋ͪࠐ·ΕΔཧ༝✤ ఆʹରͯ͠ظ͕͍ؒ✤ ձࣾͰड͚Δʹͯ͠୯Ձ͕͍҆✤ ͦͷ··ͰΓࣗࣾͰड͚ΒΕͳ͍✤ ಉ͡Α͏ͳཱͷձࣾɾݸਓࣄۀओଞʹ͍ΔͷͰͳ͍͔
ઓུͱ༏ઌ✤ ઓུ:ʮRuby ͳࣄΛڞ༗͢Δʯ͜ͱΛࢦ͢✤ ݝͷ Ruby ͳࣄΛड͚ΒΕΔձࣾɾݸਓࣄۀओͱωοτϫʔΫΛ࣋ͭ✤ ༏ઌมߋ: ωοτϫʔΫߏஙʹۀͱͯ࣌ؒ͘͠͞
ઓज़✤ Ruby Λʹͨ͠ษڧձͷӡӦʹੵۃతʹܞΘͬͨ✤ Kanazawa.rb
݁Ռ✤ େ͖Ίͷ Ruby Ҋ݅ΛύʔτφʔͱҰॹʹडͨ͠✤ ࠃཱݚڀ։ൃ๏ਓ ใ௨৴ݚڀػߏ✤ େنωοτϫʔΫ࣮ূڥͷ੍ޚϓϩάϥϜ✤ ͚ࣗࣾͩͰड͚͖Εͳ͔ͬͨ✤ ύʔτφʔ͞ΜΛ֬อͰ͖ͨ͜ͱͰड͚͖ΕΔମ੍͕ߏஙͰ͖ͨ
ؾΛ͚ͭͨ͜ͱ 1✤ ࣗࣾʹษڧձӡӦ׆ಈΛ(෦తʹ)ۀͱͯ͠ೝΊͯΒͬͨ✤ ͨͱ͑ۀ࣌ؒதʹษڧձͷӡӦʹ͔͔Δ࡞ۀΛ͢Δ͜ͱʢΠϕϯτϖʔδ࡞ใ׆ಈʣ✤ ͜ͷ͙Β͍ͷίϛοτϝϯτΛ͍͔ͯ͠ͳ͍ͱܧଓͯ͠׆ಈͰ͖ͳ͍
ؾΛ͚ͭͨ͜ͱ 2✤ ษڧձͷతΛ͢Γସ͑ͳ͍͜ͱ✤ ͋͘·ͰΤϯδχΞಉ࢜ͷٕज़ަྲྀͷͱͯࣗ͠ൃతʹੜ·Εͨͷ✤ ࢀՃ͢Δ͜ͱͰΑΓଟ͘ͷΤϯδχΞ͞Μͱަྲྀͤͯ͞Β͍ͬͯΔوॏͳ
ؾΛ͚ͭͨ͜ͱ 3✤ ܧଓ͢Δ͜ͱ✤ ͨͱ͙͑͢ʹ Ruby ͳࣄΛड͚ΒΕΔձࣾɾݸਓࣄۀओͱܨ͕Εͳͯ͘✤ ܧଓ͢Δ͜ͱͰ৴པ͕͏·ΕΔ✤ ৴པͷઌʹωοτϫʔΫͷ͕Γ͕͋Δ✤ ࣗίϛϡχςΟͱͷؔΘΓΛָ͠Ή͜ͱ
3ͭͷΤϐιʔυΛ͝հ
3ͭͷઓུ✤ ʮRuby ͳࣄΛͭ͘Δʯ͜ͱΛࢦ͢✤ ܦӦࢹͷදݱͰޱίϛͷ֦େΛૂͬͨ✤ ʮRuby ͳࣄΛ͏͚Δʯ͜ͱΛࢦ͢✤ ෭ۀͱͯ͠ۀΛडୗ͢Δମ੍Λ͑ͨ✤ ʮRuby ͳࣄΛڞ༗͢Δʯ͜ͱΛࢦ͢✤ Ruby Λʹͨ͠ษڧձͷӡӦʹੵۃతʹܞΘͬͨ͜ΕΒͷ׆ಈ࣮ͯ͢ࡍʹ Ruby ͳࣄʹͭͳ͕ͬͨ
Episode +1
Vitalii Dementev✤ ϩγΞ͔Βຊʹ͖ͬͯͨ24ࡀͷΤϯδχΞ✤ ύʔτφʔͷۚେֶͷཹֶʹ߹Θͤͯ✤ Kanazawa.rb ͷ Slack ʹࢀՃͯ͠ DM Λ͓͖ͬͯͨ͘
Vitalii Dementev✤ ߦಈྗʹͨ͠✤ ຊޠ΄ͱΜͲͰ͖ͣɺӳޠͰ͖Δ͕ษڧதͱͷ͜ͱ✤ Λ͔͚Δͷʹ૬ͷ༐ؾ͕ඞཁͩͬͨͷͰ✤ ࠓݱࡏ Ruby ͷࣄʹࢸΕ͍ͯͳ͍ͷͷਓͷܨ͕Γ͕ͬͨ✤ ༷ʑͳ໘ͰαϙʔτΛಘΔʹࢸ͍ͬͯΔ✤ ͍ͣΕࣄಘΒΕΔͩΖ͏ͱײ͡Δ
Ruby ͳࣄʹܞΘΔͨΊʹඞཁͳ͜ͱߦಈ͢Δ༐ؾ
·ͱΊ✤ ͷʮγεςϜ։ൃҊ݅ʯͷಛΛߟ͠ɺͰ Ruby ͳ͓ࣄʹܞΘΔ͜ͱʹؔ࿈ͨ͠4ͭͷΤϐιʔυΛ͝հͨ͠✤ Ͱ Ruby ͳ͓ࣄʹܞΘΔͨΊʹࢲ͕ͱͬͨઓུ͕͋ͳͨʹϚον͢Δ͔Θ͔Βͳ͍✤ ͋ͳ͕ͨ࣍ʹߦ͏ߦಈͷબࢶΛ૿͠ɺ͋ͳͨʹ༐ؾΛ༩͑Δ͜ͱ͕Ͱ͖͍ͯΕخ͍͠
Thank youTomokazu KiyoharaIUUQHJUIVCDPNLJZPIBSBIUUQGBDFCPPLDPNUPNPLB[VLJZPIBSB