とちぎRuby会議04招待講演のスライド, 2011/12/3 http://regional.rubykaigi.org/tochigi04
ΦϒδΣΫτࢦιʔγϟϧίʔσΟϯάεΫϦϓτݴޠRubya_matsuda
View Slide
͍͖ͳΓࢲࣄͰڪॖͰ͕͢ɺ
ઌ݄ࢠͲ͕࢈·Ε·ͨ͠ɻ
✴twitter: a_matsuda✴github: amatsuda
ID
GitHub࠷ॳIDʹΞϯεί͕͑ͳ͔ͬͨ
real name: Akira Matsuda
໊લබࣈ;ͭ͏͗ͯ͢IDͷ֬อ͕͍͠
kakutaniͱ͔͏Β·͍͠
ࢠڙͨͪ;ͭ͏ͷ໊લʹͨ͠ͷͰۤ࿑ͦ͠͏
ୈ1෦ΦϒδΣΫτࢦιʔγϟϧίʔσΟϯάεΫϦϓτݴޠRuby
࣭1GitHubͬͯԿʁ
࣭2GitHubͷΞΧϯτΛ·ͩ࣋ͬͯͳ͍ਓʁ
https://github.com/
࣭3GitHubͰຖ͓ࣄͷίʔυॻ͍ͯΔਓʁ
ྺ࢙ͷ͓͞Β͍
Ruby
ʮΦϒδΣΫτࢦεΫϦϓτݴޠʯ
http://www.ruby-lang.org/ja/about/“RubyɺखܰͳΦϒδΣΫτࢦϓϩάϥϛϯάΛ࣮ݱ͢ΔͨΊͷछʑͷػೳΛ࣋ͭΦϒδΣΫτࢦεΫϦϓτݴޠͰ͢ɻ“
made in Japan
grew up in US
ຊRubyޙਐࠃɻ
ຊͷRubyͷྺ࢙ٯ༌ೖͷྺ࢙✴ΧϯϑΝϨϯε✴WEBΞϓϦ✴ιʔγϟϧίʔσΟϯά
ΧϯϑΝϨϯε✴ RubyConf✴ RubyKaigi
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/11883RubyConf.new(2001)
2006ʮຊRubyΧϯϑΝϨϯε2006ʯ
http://rubyonrails.org/“Rails was created in2003 by DavidHeinemeier Hansson”
Rails in JapanRailsͰϝγ৯ͬͯΔਓʁ
Ruby on Railsݱ✴Ruby͕ࣄʹͳΔ✴ຊͰఆண͖ͯͨ͠ײ✴͜͜Rails͚ͩͰϝγ͕৯͑ͯ·͢
ୈ3ͷจԽతٯ༌ೖ“Social Coding”
https://github.com/aboutCompany Founded:2008
Rails premieres on GitHub“GitHub has now officially launchedand Rails is right there at thepremiere. The Rails repository nowlives at rails/rails and you can checkit out with:git clone git://github.com/rails/rails.git”
WEB+DB Press Vol. 48(2008/12)ಛू1[ݴޠผ]Ϟμϯϓϩάϥϛϯάೖ
ຊॳͷGitHubྱࢍهࣄ(ͨͿΜ)
͍͍͜ͱॻ͍ͯΔ“GitHub ͷ࠷େͷಛɺʮਓʯʹϑΥʔΧεΛͯɺΦʔϓϯιʔειϑτΣΞ(OSS)ͷੈքʹιʔγϟϧͳࢹΛ࣋ͪࠐΉ͜ͱʹޭͨ͠Ͱ͢ɻGitHub ͰɺʮϓϩδΣΫτʯʹʮਓʯ͕ΞαΠϯ͞ΕΔͷͰͳ͘ɺʮਓʯ͕ʮϓϩδΣΫτʯΛ࣋ͭΑ͏ͳΠϝʔδʹͳ͍ͬͯ·͢ɻ“
ຊॳͷGitHubྱࢍهࣄ(ͨͿΜ)ॻ͍ͨͷΦϨΦϨ
ະདྷΛ༧ݴ“GitHub ·͞ʹίʔυͰޠΓ߹͏SNS(Social Networking Service)ͳͷͰ͢ɻ͜ͷߏOSSίϛϡχςΟͷຊ࣭ΛΈʹද͓ͯ͠ΓɺOSS։ൃͷύϥμΠϜΛେ͖͘ม͑Δ͖͔͚ͬʹͳΔՄೳੑΛൿΊ͍ͯ·͢ɻ”
͓ങ͍ٻΊͪ͜Β
2008ͷRubyಛूͰGitͷ✴RubyΛޠΔ্ͰGitطʹ͔ܽͤͳ͍ଘࡏͩͬͨ✴RubyίϛϡχςΟ͕GitΛൃݟͨ͠
Why Ruby?ͳͥRuby—GitHubͳͷ͔ʁ
2ͭͷཧ༝✴σβΠϯ✴ޮ༻
RubyͷσβΠϯ“Ruby is designed to behuman-oriented”(Matz)
ιʔείʔυΛ͛߹ͬͯίϛϡχέʔγϣϯΛߦ͏SNSಡΊΘ͔ΔcommitΛ࡞Δඞཁ͕͋ΔɻՄಡੑ͕ͱͯॏཁɻ
·͞ʹ૬ࢥ૬Ѫ—✴GitHub: ίʔυΛͬͯޠΓ߹͏SNSɻՄಡੑॏཁɻ✴Ruby: ίϯϐϡʔλʔͰͳͯ͘ਓؒʹϑΥʔΧεͨ͠ݴޠɻՄಡੑߴ͍ɻ
Rubyͷޮ༻“RubyΩϝΔͱؾ͍͍࣋ͪ”(Matz)
”Rubyਓ༷͕ؒؾΑ͘ϓϩάϥϛϯά͢ΔͨΊͷݴޠ”(Matz)
For whom we write code?RubyΛͬͯͬͯΔ૬खύιίϯ͡Όͳ͍ɻਓؒͩɻ
We’re talking to humans usingRuby͜ΕRubyistͳΒΈΜͳΫϦΞ͍ͯ͠Δͱ͜ΖͰ͢ΑͶɻ
RubyΛͬͯ୭Λؾ࣋ͪྑͤ͘͞Δͷ͔✴not only ࣗ✴Πϯλʔωοτͷ͜͏Ͱܨ͕Δਓʑ✴ͭ·Γੈք
૬ޮՌͰϠό͍͜ͱʹҰਓͰΩϝͯؾ͍͍࣋ͪͷɺΈΜͳͰϠοͨΒͬͱͬͱؾ͍͍࣋ͪʂ
ੈքதͷΈΜͳ͕ूͬͯRubyΛͬͯίϛϡχέʔγϣϯ͕ߦΘΕΔThat’s called“the Ruby community”
“The Ruby Community”ʹ͓͚ΔຊਓͷϓϨθϯεෆGitHubͰຊਓͷ໊લΛ໓ଟʹݟͳ͍
Ruby Hero Award(স)զΒ͕ʮRuby Heroʯm_sekiͰ͢Βϊϛωʔτ͞Εͳ͍ͱ͍͏ݱ࣮
ຊਓͷϓϨθϯεෆͷཁҼ✴ཧత݅ʁ✴ݴ༿ͷนʁ
ཧత݅ؔͳ͍ΑɻΠϯλʔωοτͩΜɻ
ݴ༿ͷนҰॹͩΑɻRubyͩΜɻ
ͨͿΜຊਓͷࠃຽੑͷʮԶͷcoolͳίʔυΛݟͯ͘Εʂʯతͳ͕ͭۤख
ʮຊਓʯ͕ډͳ͍ํ֨ࠩͱ͔Ҏલͷ
ຊRubyޙਐࠃ౦ژͱ͔ͱͪ͗ͱ͔ؔͳ͍
Social Coding࣌ํͰRubyΛؤு͍ͬͯΔօ͞Μʹେ͖ͳνϟϯεɺ͔Ͷɻ
ୈ2෦Social Coding Practices
GitΛΔPractice 0
Materials✴WEB+DB Vol. 50 ಛू2✴Git Immersion http://gitimmersion.com✴Junioຊ✴GitHub Bootcamp http://help.github.com/✴Git Internals http://peepcode.com/products/git-internals-pdf
WEB+DB Vol. 50 ಛू2
FAQWindows?
Windows?Θͳ͍Ͱ͍ͩ͘͞ɻ
Practice 1ଞਓʹಡ·Εͯஏ͔ͣ͘͠ͳ͍ίϛοτΦϒδΣΫτΛ࡞Ε
ଞਓʹಡ·Εͯஏ͔ͣ͘͠ͳ͍ίϛοτΦϒδΣΫτΛ࡞Ε✴ৗʹΞτϛοΫͳίϛοτΛ৺͕͚Δ✴ಡऀͷؾ࣋ͪΛߟ͑ͨɺਖ਼͍͠ίϛοτίϝϯτΛॻ͘
΄Μͱ͏ʹ͋ͬͨμϝͳίϛοτྫ✴“various changes”✴“ xed a bug”✴“ xes #1326”✴TL;DR
ίϛοτίϝϯτͷॻ͖͔ͨ✴1ߦ: what is thiscommit?✴2ߦ: ۭߦ✴3ߦʙ: details, why,etc.
ྑ͍͔͠Εͳ͍ίϛοτ“rails g scaffold username age:integer ...”
ྑ͍͔͠Εͳ͍ίϛοτ✴“OMG”✴“oops!”
ιʔγϟϧίʔσΟϯάͷجຊϓϩάϥϛϯάͱʑͷίϛοτΛ͙࡞ۀ
product = [commit, commit,commit, ...]ϓϩμΫτͳΜ͍ͯ͏ͷʑͷίϛοτ͕ੵΈॏͳͬͨ݁ՌͷදͰ͔͠ͳ͍
“Commit” matters͔ͩΒGHͰcommitʹίϝϯτͰ͖Δ͚ͲtreeʹίϝϯτͰ͖ͳ͍
ࢀߟhttps://github.com/rails/rails/commits
ιʔγϟϧίʔσΟϯάͷਅͲΕ͚࣮ͩͳɺ༗ҙٛͳίϛοτΦϒδΣΫτΛੈͷதʹૹΓग़ͤΔ͔
Practice 2ਓͷόάΛ͢
࠷ݶͷϚφʔ✴ਓͷϓϩμΫτΛͬͯͯόάΛ౿ΜͩΒ͢✴ͨ͠Βupstreamʹpull request͢Δ
ຖࣄͰRubyॻ͍ͯΕ࠷Ͱि1ճ୭͔ͷόά౿ΜͰΔͣ
Railsͷ߹http://contributors.rubyonrails.org/
ਖੵΕجຊతʹϋοΫ͢ΔͨΊͷϋοΫͯ͠ͳ͍ɻࣄͰ౿ΜͩόάʹύονͯͯΔ͚ͩɻ
͍ͭݴͬͯ·͕͢ɺRailsόάͷๅݿͳͷͰ͠ͳ͕Β͍ͬͯͩ͘͞
Practice 3Sending “pull request”
΄Μͱ͏ʹ͋ͬͨμϝͳpull requesthttps://github.com/amatsuda/kaminari/pull/181
https://github.com/amatsuda/kaminari/pull/181૬ख͕ຊਓͰӳޠͰॻ͍͍ͯͩ͘͞
ӳޠ͕ۤखʁ
ӳޠ͕ۤखʁษڧ͠Ζ
ӳޠ͕ۤखʁίʔυͰઆ໌͢Δͱ͍͏ςΫχοΫ
μϝͳྫhttps://github.com/amatsuda/everywhere/pull/2
https://github.com/amatsuda/everywhere/pull/2“If you like this, pleasemerge in.”
“If you like this, please mergein.”͜ΕɺGitHubͱ͍͏ΞϓϦͷػೳͷઆ໌Ͱ͢ΑͶɻ
ڭ܇ʮΑΖ͓͘͠ئ͍͠·͢ʯཁΓ·ͤΜΑʔɻ
Practice 4ࣗͷϓϩμΫτΛ࡞Δ
http://git.io/kaminariKaminariͷ߹
Thank you for your +1<3 <3 <31900+ watchers!!
Why I made it✴Rails 3Ͱwill_paginate͕ಈ͔ͳ͔ͬͨ✴ࠔͬͨ✴ιʔεಡΜͰΧΦεա࣏͗ͯͤΔؾ͕͠ͳ͍✴͠ΐ͏͕ͳ͍͔Β৽͍͠ͷ࡞ͬͨ
ެ։ͯ͠ΈͨΈΜͳࠔͬͯͨΒ͘͠ɺΈΜͳ͕ඈͼ͍ͭͨ
ܦ࿏ʮ࡞ͬͨΑʯͬͯtweetͨ͠RT @kakutani => ࠃRT @jmettraux => ւ֎
Thank you @jmettraux͜ͷΛआΓ͓ͯྱΛݴ͍͍ͨ
࠷৽࡞http://git.io/active_decorator
ڭ܇͕ࣗඞཁʹ͔ΒΕͯ࡞ͬͨͷΈΜͳඞཁͳ͜ͱ͕͋Δɻ
μϝͳ(੯͍͠)ྫThinReports https://github.com/thinreports
ThinReports@a_matsuda: @thinreports_org ͔ͯ͠͠GitHubͰιʔε͕ެ։͞Ε͍ͯͳ͔ͬͨΓ͠·͔͢ʁ↓͍ɺGitHubͰͳ͘(ͳΜ͔ࣗલSVN)Ͱެ։ͯ͠·͢ɻͰ͕͢ɺݱࡏGitHubʹϛϥʔ͠Α͏ͱըࡦதͰ͢ɻ↓ThinReports ɺͦͷશͯͷιʔείʔυΛެ։͍ͯ͠·͢ɻιʔείʔυϝΠϯͷ Subversion ϦϙδτϦʹՃ͑ͯ GitHub ʹϛϥʔͱͯ͠ެ։͍ͯ͠·͢ɻ
ࠓ͔ΒΦʔϓϯιʔεΔͷʹࣗલSVNཁΒͳ͘ͳ͍ʁruby-lang͡Ό͋Δ·͍͠
μϝͳ(੯͍͠)ྫCastOff https://github.com/soba1104/CastOff
Practice 5ؒΛݟ͚ͭΖ
hocus_pocusͷ߹http://git.io/hp
͋ΔGHʹDM͕“colaborating withhocus_pocus” by@kurko
“colaborating withhocus_pocus”✴ٿͷཪଆ͔Β✴໘ࣝͳ͍✴ख͍͍ͨʂ✴ςετॻ͘Αʂ✴υΩϡϝϯτॻ͘Αʂ
So, I gave him a commit rightStay tuned, and seehow we work together!
ڭ܇Πϯλʔωοτ͍͢͝
Practice 6meet the people
RubyKaigi“RubyձٞͰ֎ࠃͷrubyistsͱຊͷrubyistsྑ͍ਓؒؔΛੜΈग़ͤΔͱࢥ͏ɻͦΕͰɺདྷͷRubyձٞͳ͍͔Β൵͍͠ɻ”https://twitter.com/#!/takoyakikamen/status/142439088052649985
RubyConfຊਓ͍ͬͺ͍Ͱ҆৺
RailsConf✴RubyHero͕͏͡Ό͏͡Ό✴RailsϓϩάϥϚʔͳΒRubyConfΑΓָ͍ͣ͠
Conclusion
Why Ruby?✴designed for Humans✴ΈΜͳͰΩϝΔͱؾ࣋ͪྑ͍
PracticesHack Ruby and spreadyour commits!!