松江Ruby会議08ゲスト講演「未定(オープンソースとの関わり方と開発環境に関するお話の予定)」改め、「My Favorite Tools」の発表資料 http://matsue.rubyist.net/matrk08/
My FavoriteTools@a_matsuda
View Slide
ຊͷλΠτϧ ʮະఆʢΦʔϓϯιʔεͱͷ ؔΘΓํͱ։ൃڥʹؔ͢Δ ͓ͷ༧ఆʣʯ
٢Ԭ͞Μ͔Β͍͍͓ͨͩͨ ʮ։ൃڥͷհɾͦͷଞ։ൃʹར༻͢Δπʔϧʯ
ͱ͍͏Θ͚Ͱɺࠓ͕͖ࣗͳࣄಓ۩ͷΛ͠·͢
whoami
Creator of kaminari active_decorator action_args ͳͲͳͲ͍Ζ͍Ζ
kaminari amatsuda/kaminari
kaminari ͏͖͡6 όʔδϣϯɺ·ͩ0 0.17ͱ͔͍͏ͻͲ͍όʔδϣϯ ൪߸
kaminari 1.0 RC൛͕ग़·ͨ͠ What's new in 1.0 gem API͕͖ͬΓͨ͠ ߹ʹΑͬͯຯʹΫΤϦͷຊ͕ݮΔ without_countϞʔυ ͏ͪΐͬͱΤΫετϦʔϜͳͭ
ࠓ͙͢ࢼͯ͠Έ͍͚ͯͨͩΔͱ͋Γ͕͍ͨͰ͢ gem 'kaminari', '1.0.0.rc1'
ͪͳΈʹɺ͜ͷ࣌ظʹϦϦʔε͕Ͱ͖Δͱ͍͏͜ͱɺ ੈؒͷ͓લΒ͕ϒϩάͩͷϙΤϜͩͷΛಡΜͩΓॻ͍ͨΓͯ͠༡ΜͰΔؒʹɺOSS։ൃऀͪΌΜͱίʔυΛॻ͍ͨΓίʔυΛॻ͍ͨΓͯ͠·͢Αɺͱ͍͏͜ͱͰ͢Ͷ
Committer of ruby railsͳͲ haml carrierwave simplcov ͳͲͳͲ Ұ൪࠷ۙͰmd2key
md2key k0kubun/md2key
md2key ͜Εແ͠ͰεϥΠυ࡞Εͳ͍ Vimͱ͔iPhoneͱ͔ͰεϥΠυ͕ॻ͚Δ
md2keyͷྑ͘ͳ͍ͱ͜Ζ ͜ΕΛ͏Α͏ʹͳΔͱɺൃද͙࣌ؒΒ͍લ·Ͱ Keynote.app Λىಈ͠ͳ͍Α͏ʹͳΔ εϥΠυΛॻ͍ͯΔͣͩͬͨͷʹɺmd2keyͷڍಈ͕ؾʹͳͬͯ͏͔ͬΓmd2keyͷϋοΫΛ ࢝Ίͯ͠·͏ RabbitΛͬͯΔਓͨͪ͜͏͍͏ؾ࣋ͪ ͳͷ͔ʔ
ઌͷRubyConf Brazilͷ Ωʔϊʔτͷલ yak shaving͕͔Ͳ͍ͬͯΖ͍Ζύονॻ͍ͯͨΒίϛοτݖ͕͖߱ͬͯͨ
ίϛολʔʹͳͬͯΈͯ Θ͔ͬͨ͜ͱ πʔϧ͏࣌ʹ͔͠έΞ͠ͳ͍ ϓϨθϯπʔϧͷϋοΫϓϨθϯͷલʹͳΒͳ͍ͱઈରʹ͠ͳ͍ ͨͩͰ͑͞ςϯύͬͯΔϓϨθϯͷલʹΔ͜ͱ͕ແବʹ૿͑ͨ
༻ྫ
ࡢͷൃදεϥΠυ 3લ͙Β͍͔ΒɺͳΜͱͳ͘Γ͍ͨ͜ͱΛiPhoneͷNotesͰϦετΞοϓ࢝͠ΊΔ ౡࠜʹ͔͏ిंͱඈߦػͷதͰɺετʔϦʔͷΠϝʔδ͕ఱ͔Β߱ͬͯ͘ΔͷͰɺ ͦΕΛʹμϯϩʔυͯ͠iPhoneͰՕॻ͖ΛҰؾʹΒ·ͤΔ ۭߓ͔Βদߐʹ͔͏όεͷதͰ Keynote.app Λىಈͯ͠ྲྀ͠ࠐΉ(ྡʹ࠲ͬͨਿݪ͞ΜʹโΕΒΕͳ͕Β) ձʹண͍͔ͯΒ࣌ؒΪϦΪϦ·Ͱ(ͱ͍͏͔ؒʹ߹ͬͯͳ͍)ମࡋΛ͑ͨΓ͢Δ ͷͰσβΠϯͱ͔ϑΥϯτͱ͔΄΅ Keynote.app ͷσϑΥϧτͷ·Μ· (͢Έ·ͤΜ) શͯࢥ͍ग़͠ϕʔεͳͷͰɺࣄ࣮ؔͱ͔ۃΊͯ͋;(ͻͲ͍) ૉৼΓͱ͔Ұ͠ͳ͍ͷͰ(ӳޠͰΩʔϊʔτͰͬͨ͜ͱͳ͍)ɺ࣌ؒΛΊͬͪΌΦʔόʔͨ͠Γ͢Δ(΄Μͱ͍͢·ͤΜ)
ࠓͷൃදεϥΠυ ਲͬͬͯ৸ͳ͕ΒஂͷதͰiPhoneͰϝϞΛॻ͘ ேձʹ͍͔ͭͯΒVimΛىಈͯ͠৭ʑॻ͖͢ ߨԋ1࣌ؒલ͔ΒKeynote.appʹྲྀ͠ࠐΈ͡ΊΔ
ͱ͋Ε
ͦΜͳࡢͷτʔΫͷ ͋Β͢͡ ʮίϛολʔ͔ΒݟͨRuby on Railsʯ Railsͷίʔυʹίϛολʔͨͪͷ10ؒͷ͍ΖΜͳࢥ͍υϥϚ͕٧·ͬͯΔ͔ΒɺίϛοτϩάಡΜͰΈΔͱ໘ന͍Α ϚχΞࢹͰͷRailsOSSͷָ͠ΈํΛ ղઆͨͭ͠Γ
ࠓࡢͷͷଓ͖ ͕࣮ࡍʹͲ͏͍͏ಓ۩ΛͬͯίʔυΛಡΜͩΓॻ͍ͨΓͯ͠ ͍Δ͔
gem-src OSSΥονϟʔۀͱύονॻ͖͕͔ͲΔπʔϧ
gem-src amatsuda/gem-src
OSS͕͖ͳͷͰ ͍ΖΜͳਓͷίʔυΛಡΉͷ͕ ͖ͩ͠ɺύονΛ͛ͯΈΜͳͱίϛϡχέʔγϣϯΛऔΓ͍ͨ
҆৺ͷͨΊ & ଵଦͳͷͰ Կ͔͕ൃੜͨ࣌͠ʹ͙͢ʹύονΛॻ͍ͯରॲͰ͖ΔΑ͏ʹ ͕͍ࣗͬͯΔϓϩμΫτͷιʔείʔυશͯखݩʹஔ͍͓͖͍ͯͨ ίʔυΛಡΈ͍ͨʂͱࢥͬͨ࣌ʹGitHubͰݕࡧΛ͢Δͦͷͻͱख͕ؒΘ͍͠
gem-src gem install, bundle installΛϑοΫͯ͠ɺΠϯετʔϧ͞ΕͨGemͷϝλσʔλ͔Βιʔείʔυͷ ͋Γ͔ΛҾͬு͖ͬͯͯgit clone͠·͘ΔrbenvϓϥάΠϯ
͠Β͘͏ͱ1000ݸҎ্ ͱ͔खݩʹϦϙδτϦ͕ཷ·Δ
͍ͭͰؾܰʹίʔυಡΈύονॻ͖͕Ͱ͖ΔͷͰ͓קΊ
RubyRailsʹؔΘΔਓؒͱͯ͠ɺݕࡧ͕Ͱ͖Δͷཱͭ ͜ͷϝιουͬͯ୭͔ͬͯΔਓ͍Δͷ͔ͳʔʁ GHͰݕࡧͱ͔akr͞ΜͷgemαʔνͩͱϊΠζ͕ଟ͗͢Δ ͕ࣗͲ͔͜Ͱ࣮ࡍʹ͍ͬͯΔίʔυͷத͚͔ͩΒ୳ͤΔ
ಛʹɺࠒ͔ΒGemΛଟ༻͢ΔRailsϓϩάϥϚʔʹͱͬͯඞܞͷπʔϧ
gem-repositorizer amatsuda/gem-repositorizer
gem-repositorizer ։ൃதʹbundleͯ͠ΔGemΛσόοά ͢Δ࣌ʹɺGemଆͷίʔυΛॻ͖͑Δ Ͳ͜ΛͲ͏ॻ͖͔͑ͨΘ͔Βͳ͘ͳΔ ύον͕Γग़ͮ͠Β͍
gem install͞Εͨ࣌ͰόʔδϣϯཧΛ࢝Ί͓ͯͨ͘Ίͷgem plugin ύον͕ॻ͚ͨΒɺgit format-patch=> gem-src ͷϦϙδτϦʹ࣋ͬͯߦͬͯ git-am ͱ͔ɺgem-src ͷϦϙδτϦͱ remote-add Ͱ݁ͯ͠ cherry-pick ͱ͔
ࡶʹ࡞͍͍ͬͯͩͨಈ͍͔ͨΒ શવߋ৽ͯ͠ͳ͍ݸਓ༻πʔϧͳͷͰɺ ͏ͪΐͬͱͪΌΜͱ͍ͨ͠ gem-srcͱಉ͘͡rbenvϓϥάΠϯʹͳͬͯͨ΄͏͕ྑ͍ͷ ͔ͳ͊ gem-srcͰऔ͖ͬͯͨϦϙδτϦ͕͋ͬͨΒremote-addͯ͠ܨ͓͛ͯ͘ͱ͜Ζ·Ͱ͓͍ͬͯͯ͘ΕΔͱخ͍͔͠ ͋Εʁͬͯ͜ͱ୯ʹ gem-src ͷػೳՃͰ͍͍ͷ͔ʁ <-ࠓίί (※ޙ: ͜͜ʹॻ͍ͨͱ͓Γʹ࣮͞ΕͨͷͰɺ͜ͷπʔϧෆཁʹͳΓ·ͨ͠ɻgem-srcͷ΄͏Λ͝ར༻͍ͩ͘͞)
GemϑϨʔϜϫʔΫΛ ۷Δಓ۩ σόοά͍ͨ͠૬ख͕໌Β͔ʹΘ͔ͬͯΔͳΒɺϦϙδτϦΛ։͘·Ͱͳ͘ɺModule#prepend + byebug (ࠓͳΒઌ݄ౡࠜͰ࡞ΒΕͨ binding.irb ͰՄ) ͙Β͍Ͱؒʹ߹͏͜ͱ ͜ͷϝιουͲ͔͜ΒݺΕͯΔΜͩʁΈ͍ͨͳ࣌ͦΜͳײ͡ͰϝιουΛ։͍ͯ puts caller ͱ͔ຒΊͨΓ͢Δ TracePoint APIΛ͏͜ͱكʹ͋Δ͚Ͳɺͪΐͬͱ໘͔ͳ͊ ͜ͷΜશʹզྲྀ͚ͩͲɺਓʹΑ͍ͬͯΖ͍Ζ͕͋Γͦ͏͔
gitͷʹΔͱ
git-*
gitͷαϒίϚϯυͦͷ·· ͩͱৗతͳ༻ʹద͞ͳ͍ ֤ࣗͷΈϫʔΫϑϩʔʹ ߹ͬͨΧελϚΠζ͕ඞཁ
git alias addͬͯଧͪʹ͍͘ͷͰ(͋·Γ ڞײ͕ಘΒΕͳ͍)ɺadͱ͔aͱ͔ʹͯͨ͠Γ coͱ͔ci (svn࣌ͷखΫηͷ ໊Γ)
git log ίʔυϦʔσΟϯάͰ࠷ଟ͘ ༻͢Δπʔϧ -p --stat --reverse --abbrev-commit --decorate --topo-order ͙Β͍ͷ ΦϓγϣϯΛ͚ͭͱ͘ͱݟ͍͢
git-* ͍ͬͯ͏໊લͷγΣϧεΫϦϓτΛ ~/bin ͋ͨΓʹஔ
gitͷαϒίϚϯυ͔Β;ͭ͏ͷίϚϯυγΣϧؔͷঢ֨ rebasecherry-pick Α͘͏git log git show l ͱ͔ s ͱ͔ͷ1จࣈͷεΫϦϓτʹ commit (g ci ͷ΄͏͕ࣈ͍)
commit generatorίϚϯυͰߦͳͬͨૢ࡞ ͳΔͦ͘Ε͚ͩͰҰ୴ίϛοτ͍ͨ͠ ಡऀʹରͯͦ͠ΕҎ্ͷઆ໌͕ཁΒͳ͍ git commit -m ͳΜ͚ͩͲɺ࠷ॳͱ࠷ޙΛ""Ͱғ·ͳ͖Ό͍͚ͳ͍ͷ͕ΊΜͲ͍͘͞
commitίϚϯυ git commit -m "$*" ͷΑ͏ͳͷΛ͏ͪΐͬͱ ͝ʹΐ͝ʹΐͯ͠ΔγΣϧεΫϦϓτ
bundle gem ίϛοτΛ಄͔ΒಡΉͷ͕͖ͳΜ͚ͩͲɺ"initial commit" ͱ͔ݴͬͯ υΧοͱίϛοτ͞ΕͯΔͱϊΠζ͕ଟͯ͘ಡΉͷ͕େม bundle gem͚ͩͰҰ୴ίϛοτͯ͠ ͍ͩ͘͞ɻ͓ئ͍͠·͢ʂ
rails new ৽͍͠RailsΞϓϦΛ࡞ͬͯɺGemͱ͔͋Ε͜ΕೖΕͯɺ͍ͭͰʹ৭ʑઃఆͯ͠ɺϞσϧͱ͔ίϯτϩʔϥʔͱ͔͍͔ͭͬ͘͘͟Γ࡞ͬͯɺ͍͍ͩͨͰ͖·ͨ͠ʂ͍ͬͯ͏༰ͷઍߦͷ "initialcommit" ϨϏϡʔෆೳ͔ͩΒઈରʹΊͯʂ ͜ͷஈ֊Ͱόάઃఆϛε͕ฆΕͯͯ΄΅ؾ͚ͮͳ͍ rails newͨ͠Β·ͣίϛοτɺGemΛbundleͨ͠Β·ͨίϛοτ ίʔυಡऀͷؾ࣋ͪΛߟ͑ͯॻ͖·͠ΐ͏
rails g generatorΛͳΔ͘͏ ○○͍ͬͯ͏ػೳΛ࣮͠·ͨ͠ʂ͍ͬͯ͏MͱVͱCʹ·͕ͨΔσΧ͍ίϛοτಡΈํ͕Θ͔Βͳͯ͘ϨϏϡʔͰ͖ͳ͍ rails g scaffold Ͱ·ͣίϛοτ ಠࣗͷ࣮͔ͦ͜Βͷ͠ࢉҾ͖ࢉͰ ࣮ऀͷ͍͕ΘΔίϛοτʹͳΔ
rails g generator͕ు͍ͨίʔυ͔Β͋·Γʹେ͖͘ҳ͢Δ߹ɺRESTfulͳઃܭ͕Ͱ͖͍ͯͳ͍Մೳੑ͕ߴ͍ generator͕ు͘ίʔυ͕ࣗΈ͡Όͳ͍߹ɺ ϓϩδΣΫτͷ࠷ॳʹ·ͣgeneratorͷΧελϚΠζ͔Β࢝ΊΔ Rails 3͔Βgenerator͕৭ʑΧελϚΠζͰ͖ΔΑ͏ʹͳͬͯΔͷͰɺڵຯͷ͋Δਓͪΐͬͱ͍ͬͯ͡ΈΔͱ໘ന͍Μ͡Όͳ͍Ͱ͠ΐ͏͔
ٯʹɺRails 3ͰมΘͬͯ΄͔ͬͨ͠ ͚ͲมΘΒͳ͔ͬͨͷ͋Δ
action_args asakusarb/action_args
Railsͷίϯτϩʔϥʔͷ Πέͯͳ͞ actionͷϝιου͕ී௨ͷRubyͷ ϝιου͡Όͳ͗͢͞Δ ͦͷΞΫγϣϯͰΘΕΔೖྗ͕Կ͔ͩશવΘ͔Βͳ͍ ΓΛΘͣʹivarʹηοτʁʁ
MerbͷGood API RubyͷϓϩάϥϜͳΜ͔ͩΒ͜͏͡Ό ͳ͍ํ͕͓͔͍͠ input͕໌֬ʹͳΔ params ͱ͔͍͏ݟ͍ۤ͠άϩʔόϧ มͷΑ͏ͳͷΛ৮Βͳͯ͘ࡁΉ Α͏ʹͳΔ
merb-action-argsͷ υΩϡϝϯτΑΓ(Ұ෦ฤू)class Foo < Merb::Controllerdef bar(baz)bazendend
bundle͢Δ͚ͩͳΒ ෭࡞༻ͳ͍ طଘͷRailsࣜͷίʔυͦͷ··ಈ࡞͢Δ ͭ·ΓೖΕͯଛͷͳ͍ϓϥΪϯͳͷͰͱΓ͓͋͑ͣखݩͷͯ͢ͷRailsϓϩδΣΫτʹbundle͓ͯ͘͜͠ͱΛ͓קΊ͍ͨ͠ ΞΫγϣϯͷҠߦॱ࣍ؾ͕͍ͨ࣌ʹ Εྑ͍͠Βͳͯ͘ྑ͍
FAQ: Railsʹඪ४Ͱ ೖΒͳ͍ͷʁ
action_argsΛRailsຊମʹ Ϛʔδ͍ͨ͠ ࣮աڈʹఏҊͨ͜͠ͱ͋ΔΜ͚ͩͲɺDHHΛઆಘͰ͖ͣഊ Ҏ֎ͷ୭͔͕ݴͬͯ͘ΕΔͱ ྑ͍ͷ͔ͳ͊
Internals Gem໊ͱ͓ࢠ͞Μͷ໋໊ʹఆධͷ͋ΔɺAsakusa.rbͷͩ͞͞͞Μ࡞methoparaΛ༻ Method#parameters ͱ͍͏໓ଟʹΘΕΔ͜ͱͷ ͳ͍χονͳศརػೳ ίϯτϩʔϥʔͰʹΐʹΐΔΜ͚ͩͲɺ ͦͷΜͷʹΐʹΐϢʔβʔʹݟͤͨ͘ͳ͍ Refinements Λ׆༻
Asakusa.rbͷ _ksss͞Μͷॿݴ͕͖͔͚ͬͰ
Refinements զΒ͕ shugo͞Μͷҙཉ࡞ ༷͕༯ͯ͘͠େ͖ͳΜͰ ΊͬͪΌͬͯ·͢ ͪΖΜॳظͷ༷͕Ұ൪͖͚ͩͬͨͲ
Refinementsͷ׆༻ࣄྫ action_args, database_rewinder
database_rewinder amatsuda/database_rewinder
database_rewinder ݩCookpadࣾͰΘΕ͍ͯͨ @eudoxa ͞Μͷ࣮ͷOSSԽ ςʔϒϧ͕1000ݸͱ͔͋ΔڥͰඞਢ transactional_testsͩͱCapybara + JSͳςετ͕͏·͘ճΒͳ͍ database_cleaner͍͗ͯ͢ʹͳΒͳ͍
࠷ॳͷ࣮ SQLͷ࣮ߦΛϑοΫͯ͠ɺςετͰinsert͕ͬͨςʔϒϧʹରͯ͠ͷΈdeleteΛ͛Δ deleteͷຊݮͬͨͷͷ·͍ͩ͠ϩά͕ԚΕΔ 1ൃͷdelete_allͱ͔ɺ݁ہશςʔϒϧΛରʹdelete͢Δ
ͦ͜Ͱ0.7ܥͰͷҟ༷ͳਐԽ ݸਓతʹҎલ͔ΒͬͯΈ͔ͨͬͨςʔϚ multiple_queries 1ճͷDBݺͼग़͠ͰෳͷSQLจΛ͛ͯΨόοͱআ͢Δ ͜ͷϓϥάΠϯͷ֎ͰΘͳ͍ػೳͳͷͰɺ࣮RefinementsͰ
multiple_queries Γड͚औΕͳ͍ͷͰɺෳͷAR::RelationͷloadͷฒྻԽʹ͑ͨΓͳΜ͔͠ͳ͍ SQLite3 ͛ΕΔͷ্ݶΛҙࣝ͢Δඞཁ͕͋Γͦ͏͚ͩͲɺԿͯ͠ͳ͍ͷͰଟ ·ͩόάͬͯΔ PostgreSQL ී௨ʹಈ͘ɻ͑Β͍ɻ MySQL ͍ͭͷ͝ͱ͘ࣇ deleteͷͨΊͷผίωΫγϣϯΛுΔඞཁ͕͋ͬͯɺσουϩοΫ͕ى͖ͨΓ ͢Δ
σουϩοΫͷղܾʁ READMEʹ৭ʑॻ͍ͨͷͰ౿ΜͩਓಡΜͰ͍ͩ͘͞ ͦͦσουϩοΫىͯ͜͠ΔͷԿ͔͍ํ͕͓͔͍͠ transactional_testϞʔυͰAR::Base.connectionͰτϥϯβΫγϣϯ͕͔͔ͬͯΔͷͰσουϩοΫ͢Δ transactional_testͩͬͨΒࣗͰdeleteͱ͔͠ͳͯ͘ྑ͍ͣ
transactional_testͱrewinderΛεΠον͢Δͷ͕࠷ڧͰʁ Ͱ͖ͳ͍Μͩͳɺ͜Ε͕ ؾʹͳΔਓࢼͯ͠Έ͍ͯͩ͘͞ database_cleaner͞ΜtransactionϞʔυͲ͖ΛࣗલͰ๊͑ͯΔͱ͍͏ΠϞے CapybaraΛඪ४࠾༻͢Δ༧ఆͷRails 5.1Ͱ୭͔͕ARͷ͜ͷ͋ͨΓΛΰϦοͱͯ͋͛͠Δ͔͠ͳͦ͞͏
ςετͱݴ͑ FAQ: RSpec or minitest?
RSpec or minitest? ͕͜Ε·Ͱʹհͨࣗ͠࡞GemͷςετͰશͯRSpecminitestͬͯ·ͤΜ
test-unit test-unit/test-unit
test-unit My favorite testing framework ফڈ๏Ͱ ͱ͍͏͔ɺҰ൪;ͭ͏Ͱ·ͱ
Killer Features power_assert ΄ͱΜͲͬͯ·ͤΜ͕ sub_test_case RSpecͷdescribeͱ͔contextΈ͍ͨʹ֊ߏΛ࣋ͬͨςετέʔε͕ॻ͚Δ ࣮ͱͯ͠ɺTestCaseͷಈతͳແ໊αϒΫϥεͳͷͰsub_test_case
sub_test_case ػೳࣗମศརͳΜ͚ͩͲ sub_test_case໊ͬͯલ͕Θ͔Γʹ͘͘ͳ͍ Ͱ͔͢ʁ ෳͷ"test"ΛଋͶΔͷ͔ͩΒ"test_group"ͰͲ͏͔ʁͱ͍͏ఏҊΛͯ͠Έ͍ͯ·͢https://github.com/test-unit/test-unit/pull/130
One More Thing
rfd amatsuda/rfd
OSXγΣϧ͍ͯ͘͢ૉΒ͍͠Μ͚ͩͲɺFinder.app ͷ͍উख͕ͱʹ͔͘ώυ͍ ͬͺλʔϛφϧ্Ͱಈ͘ ϑΝΠϥʔ͕࠷ߴͩΑͳ FDΈ͍ͨͳͭ
rfd RubyͰॻ͍ͯΈͨϑΝΠϥʔ ԡ͞ΕͨΩʔΛͦͷ··sendͯ͠ɺରԠ ͢Δ໊લͷϝιουΛݺͼग़ͯ͠Δ͚ͩɺ ͱ͍͏ܿ͗͢Δ࣮ ҟৗͳ֦ுੑͷߴ͞Λ࣮ݱ RubyͳΒͰ
͜Μͳײ͡Ͱɺ͕ศརͩͱࢥ͍ͬͯͬͯΔಓ۩ʹΦʔϓϯͳͷ͕ଟ͍ ͕ࣗ࡞ͬͨಓ۩Ͱʮศར͡ΌΜʂʯͱࢥͬͨͷͲΜͲΜ ެ։͢ΔΑ͏ʹ͍ͯ͠Δ ͦΕΛͬͯ͘Εͨ୭͔͕ಥવͬͱศརʹͯ͘͠ΕͨΓ͢Δ
ϓϩάϥϚʔ͕ࣗ͏ ಓ۩ΛࣗͰ࡞Δ͜ͱ͕Ͱ͖Δ ͦΕΛ͠ͳ͍ͳΜ͍ͯͬͨͳ͍ʂָ͍͠ͷʹʂ
ϓϩάϥϚʔʹ͕ࣗ͏ಓ۩ΛࣗͰ࡞Δݖར͕͋Δ ୭ͷڐՄٻΊͳ͍͍ͯ͘ΜͰ͢Α(by @ppworks) ͨͩίʔυΛॻ͖࢝ΊΕྑ͍͚ͩ Ͱͬͯউखʹެ։͢Εྑ͍͚ͩ
࡞ͬͨͷ͕ྑ͍ͷͰ͋Εɺ ੈքʹ·Δ Πϯλʔωοτͷੈքฏ͍ͨ ΈΜͳ͕ͬͯ͘ΕͨΓ͢ΔͱɺͪΐͬͱੈͷதΛม͑ͨΓͰ͖Δ͔͠Εͳ͍ ౡࠜʹډͳ͕Βʹͯ͠ੈքΛม͑ΒΕΔʂ
ౡࠜͷ͓·͑Β ౡࠜͱ͔ΊͬͪΌפ͍͠ޘָͩͬͯΧχ ৯͏͙Β͍͔͠ͳ͍͠ɺίʔυॻ͙͘Β͍ ͔͢͠Δ͜ͱͳ͍Μ͔ͩΒίʔυॻ͚͍͍ͷʹ Ϗδωεͱҧ͓͔͔ͬͯۚΒͳ͍͔Β ݝிࢢॴͷαϙʔτͩͬͯཁΒͳ͍ Ͱ͢Α
ాࣷऀ(͔͠Εͳ͍)͍͢͝ϋοΧʔͷྫ @_why @normalperson
͋Δ͍ɺੈքͷ৭Μͳͱ͜Ζ͔ΒίʔυΛൃ৴ͯ͠Δཱྀਓͨͪ @apotonick @maccaw
Ή͠Ζদߐ͍͢͝ ܙ·ΕͯΔ ʮRuby Cityʯদߐ ੈքͰҰ൪Rubyʹৄ͍͓͠͡͞Μͱ͍͏Ҭࢿݯ ͳͥ͜ΕΛͬͱ׆͔͞ͳ͍ͷ͔
ౡࠜͷΈΜͳɺͬͱίʔυ ॻ͍ͯੈքͱͭͳ͕ͬͯߦ͜͏Α ͱݴ͍͍ͨͰ͢ɻ
ͱ͜ΖͰɺRuby Cityࠓ দߐࢢ͞Μ͚ͩ͡Όͳ͍ΜͰ͢Α Yet Another Ruby City
୩ࠜઍ Did you know?
୩ࠜઍ as a Ruby City ۙॴͷਓ͕ͨͪົʹRubyʹৄ͍͠ ͷՈ͔Β ెา10: @_ko1 ెา10: @shyouhei ెา15: @nalsh ెา10: @_zzak (New!) ెา20: @hsbt (New!)
Rubyίϛολʔಉ࢜ ͻ͔Ε߹͏ʁ ҬRubyίϛϡχςΟ͕͔ͲΔ ͜ͷͰদߐʹෛ͚ͯͳ͍ͷͰʁ
We Code! You Code! ͕ΜΕRuby City!
end