$30 off During Our Annual Pro Sale. View Details »

object-oriented social coding scripting language Ruby

object-oriented social coding scripting language Ruby

とちぎRuby会議04招待講演のスライド, 2011/12/3 http://regional.rubykaigi.org/tochigi04

Akira Matsuda

December 04, 2011
Tweet

More Decks by Akira Matsuda

Other Decks in Programming

Transcript

  1. ΦϒδΣΫτࢦ޲
    ιʔγϟϧίʔσΟϯά
    εΫϦϓτݴޠRuby
    a_matsuda

    View Slide

  2. View Slide

  3. ͍͖ͳΓࢲࣄͰڪॖ
    Ͱ͕͢ɺ

    View Slide

  4. ઌ݄ࢠͲ΋͕
    ࢈·Ε·ͨ͠ɻ

    View Slide

  5. ✴twitter: a_matsuda
    ✴github: amatsuda

    View Slide

  6. ID໰୊

    View Slide

  7. GitHub͸࠷ॳIDʹ
    Ξϯεί͕
    ࢖͑ͳ͔ͬͨ

    View Slide

  8. real name: Akira Matsuda

    View Slide

  9. ໊લ΋බࣈ΋;ͭ͏͢
    ͗ͯIDͷ֬อ͕೉͍͠

    View Slide

  10. kakutani
    ͱ͔͏Β΍·͍͠

    View Slide

  11. ࢠڙͨͪ΋
    ;ͭ͏ͷ໊લʹͨ͠
    ͷͰۤ࿑ͦ͠͏

    View Slide

  12. ୈ1෦
    ΦϒδΣΫτࢦ޲
    ιʔγϟϧίʔσΟϯά
    εΫϦϓτݴޠRuby

    View Slide

  13. ✴twitter: a_matsuda
    ✴github: amatsuda

    View Slide

  14. ✴twitter: a_matsuda
    ✴github: amatsuda

    View Slide

  15. ࣭໰1
    GitHubͬͯԿʁ

    View Slide

  16. ࣭໰2
    GitHubͷΞΧ΢ϯτΛ
    ·ͩ࣋ͬͯͳ͍ਓʁ

    View Slide

  17. https://github.com/

    View Slide

  18. ࣭໰3
    GitHubͰຖ೔͓࢓ࣄͷ
    ίʔυॻ͍ͯΔਓʁ

    View Slide

  19. ྺ࢙ͷ͓͞Β͍

    View Slide

  20. Ruby

    View Slide

  21. ʮΦϒδΣΫτࢦ޲
    εΫϦϓτݴޠʯ

    View Slide

  22. http://www.ruby-lang.org/ja/about/
    “Ruby͸ɺखܰͳΦϒδΣΫ
    τࢦ޲ϓϩάϥϛϯάΛ࣮ݱ
    ͢ΔͨΊͷछʑͷػೳΛ࣋ͭ
    ΦϒδΣΫτࢦ޲εΫϦϓτ
    ݴޠͰ͢ɻ“

    View Slide

  23. made in Japan

    View Slide

  24. grew up in US

    View Slide

  25. ೔ຊ͸Rubyޙਐࠃɻ

    View Slide

  26. ೔ຊͷRubyͷྺ࢙͸ٯ༌ೖͷྺ࢙
    ✴ΧϯϑΝϨϯε
    ✴WEBΞϓϦ
    ✴ιʔγϟϧίʔσΟϯά

    View Slide

  27. ΧϯϑΝϨϯε
    ✴ RubyConf
    ✴ RubyKaigi

    View Slide

  28. http://blade.nagaokaut.ac.jp/cgi-
    bin/scat.rb/ruby/ruby-talk/11883
    RubyConf.new(2001)

    View Slide

  29. 2006೥
    ʮ೔ຊRubyΧϯϑΝϨ
    ϯε2006ʯ

    View Slide

  30. http://rubyonrails.org/
    “Rails was created in
    2003 by David
    Heinemeier Hansson”

    View Slide

  31. Rails in Japan
    RailsͰϝγ৯ͬͯΔ
    ਓʁ

    View Slide

  32. Ruby on Railsݱ৅
    ✴Ruby͕࢓ࣄʹͳΔ
    ✴೔ຊͰ΋ఆண͖ͯͨ͠ײ
    ✴͜͜਺೥͸Rails͚ͩͰ
    ϝγ͕৯͑ͯ·͢

    View Slide

  33. ୈ3ͷจԽతٯ༌ೖ
    “Social Coding”

    View Slide

  34. https://github.com/about
    Company Founded:
    2008

    View Slide

  35. Rails premieres on GitHub
    “GitHub has now officially launched
    and Rails is right there at the
    premiere. The Rails repository now
    lives at rails/rails and you can check
    it out with:
    git clone git://github.com/rails/
    rails.git”

    View Slide

  36. WEB+DB Press Vol. 48
    (2008/12)
    ಛू1
    [ݴޠผ]
    Ϟμϯϓϩάϥϛϯά
    ೖ໳

    View Slide

  37. View Slide

  38. ೔ຊॳͷGitHubྱࢍهࣄ
    (ͨͿΜ)

    View Slide

  39. ͍͍͜ͱॻ͍ͯΔ
    “GitHub ͷ࠷େͷಛ௃͸ɺʮਓʯʹϑΥʔ
    ΧεΛ౰ͯɺΦʔϓϯιʔειϑτ΢ΣΞ
    (OSS)ͷੈքʹιʔγϟϧͳࢹ఺Λ࣋ͪࠐ
    Ή͜ͱʹ੒ޭͨ͠఺Ͱ͢ɻGitHub Ͱ͸ɺ
    ʮϓϩδΣΫτʯʹʮਓʯ͕ΞαΠϯ͞Ε
    ΔͷͰ͸ͳ͘ɺʮਓʯ͕ʮϓϩδΣΫτʯ
    Λ࣋ͭΑ͏ͳΠϝʔδʹͳ͍ͬͯ·͢ɻ“

    View Slide

  40. ೔ຊॳͷGitHubྱࢍهࣄ
    (ͨͿΜ)
    ॻ͍ͨͷΦϨΦϨ

    View Slide

  41. ະདྷΛ༧ݴ
    “GitHub ͸·͞ʹίʔυͰޠΓ߹͏
    SNS(Social Networking Service)ͳͷ
    Ͱ͢ɻ͜ͷߏ଄͸OSSίϛϡχςΟ
    ͷຊ࣭Λ޼Έʹද͓ͯ͠ΓɺOSS։
    ൃͷύϥμΠϜΛେ͖͘ม͑Δ͖ͬ
    ͔͚ʹͳΔՄೳੑΛൿΊ͍ͯ·͢ɻ”

    View Slide

  42. ͓ങ͍ٻΊ͸ͪ͜Β

    View Slide

  43. 2008೥ͷRubyಛूͰGitͷ࿩
    ✴RubyΛޠΔ্ͰGit͸ط
    ʹ͔ܽͤͳ͍ଘࡏͩͬͨ
    ✴RubyίϛϡχςΟ͕Git
    Λൃݟͨ͠

    View Slide

  44. Why Ruby?
    ͳͥRuby—GitHub
    ͳͷ͔ʁ

    View Slide

  45. 2ͭͷཧ༝
    ✴σβΠϯ
    ✴ޮ༻

    View Slide

  46. RubyͷσβΠϯ
    “Ruby is designed to be
    human-oriented”
    (Matz)

    View Slide

  47. ιʔείʔυΛ౤͛߹ͬͯ
    ίϛϡχέʔγϣϯΛߦ͏SNS
    ಡΊ͹Θ͔ΔcommitΛ
    ࡞Δඞཁ͕͋ΔɻՄಡ
    ੑ͕ͱͯ΋ॏཁɻ

    View Slide

  48. ·͞ʹ૬ࢥ૬Ѫ—
    ✴GitHub: ίʔυΛ࢖ͬͯޠ
    Γ߹͏SNSɻՄಡੑॏཁɻ
    ✴Ruby: ίϯϐϡʔλʔͰ͸
    ͳͯ͘ਓؒʹϑΥʔΧε͠
    ͨݴޠɻՄಡੑߴ͍ɻ

    View Slide

  49. Rubyͷޮ༻
    “Ruby͸ΩϝΔͱ
    ؾ͍͍࣋ͪ”
    (Matz)

    View Slide

  50. ”Ruby͸ਓ༷͕ؒؾ෼
    Α͘ϓϩάϥϛϯά͢
    ΔͨΊͷݴޠ”
    (Matz)

    View Slide

  51. For whom we write code?
    RubyΛ࢖ͬͯ஻ͬͯΔ
    ૬ख͸ύιίϯ͡Όͳ
    ͍ɻਓؒͩɻ

    View Slide

  52. We’re talking to humans using
    Ruby
    ͜Ε͸RubyistͳΒ
    ΈΜͳΫϦΞ͍ͯ͠Δ
    ͱ͜ΖͰ͢ΑͶɻ

    View Slide

  53. RubyΛ࢖ͬͯ୭Λؾ࣋ͪྑͤ͘͞Δͷ͔
    ✴not only ࣗ෼
    ✴Πϯλʔωοτͷ޲
    ͜͏Ͱܨ͕Δਓʑ
    ✴ͭ·Γੈք

    View Slide

  54. ૬৐ޮՌͰϠό͍͜ͱʹ
    ҰਓͰΩϝͯؾ͍࣋ͪ
    ͍΋ͷ͸ɺΈΜͳͰ
    ϠοͨΒ΋ͬͱ΋ͬͱ
    ؾ͍͍࣋ͪʂ

    View Slide

  55. ੈքதͷΈΜͳ͕ूͬͯRubyΛ࢖ͬ
    ͯίϛϡχέʔγϣϯ͕ߦΘΕΔ৔
    That’s called
    “the Ruby community”

    View Slide

  56. “The Ruby Community”ʹ͓͚
    Δ೔ຊਓͷϓϨθϯεෆ଍
    GitHubͰ೔ຊਓͷ໊લ
    Λ໓ଟʹݟͳ͍

    View Slide

  57. Ruby Hero Award(স)
    զΒ͕ʮRuby Heroʯ
    m_sekiͰ͢Β
    ϊϛωʔτ΋͞Εͳ͍
    ͱ͍͏ݱ࣮

    View Slide

  58. ೔ຊਓͷϓϨθϯεෆ଍ͷཁҼ
    ✴஍ཧత৚݅ʁ
    ✴ݴ༿ͷนʁ

    View Slide

  59. ஍ཧత৚݅
    ؔ܎ͳ͍Αɻ
    Πϯλʔωοτ
    ͩ΋Μɻ

    View Slide

  60. ݴ༿ͷน
    ҰॹͩΑɻ
    Rubyͩ΋Μɻ

    View Slide

  61. ͨͿΜ೔ຊਓͷࠃຽੑͷ໰୊
    ʮԶͷcoolͳίʔυΛ
    ݟͯ͘Εʂʯతͳ΍ͭ
    ͕ۤख

    View Slide

  62. ʮ೔ຊਓʯ͕ډͳ͍
    ஍ํ֨ࠩͱ͔
    Ҏલͷ໰୊

    View Slide

  63. ೔ຊ͸Rubyޙਐࠃ
    ౦ژͱ͔ͱͪ͗ͱ͔
    ؔ܎ͳ͍

    View Slide

  64. Social Coding࣌୅
    ஍ํͰRubyΛؤுͬͯ
    ͍Δօ͞Μʹ͸େ͖ͳ
    νϟϯεɺ͔΋Ͷɻ

    View Slide

  65. ୈ2෦
    Social Coding Practices

    View Slide

  66. GitΛ஌Δ
    Practice 0

    View Slide

  67. 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

    View Slide

  68. WEB+DB Vol. 50 ಛू2

    View Slide

  69. FAQ
    Windows?

    View Slide

  70. Windows?
    ࢖Θͳ͍Ͱ͍ͩ͘͞ɻ

    View Slide

  71. Practice 1
    ଞਓʹಡ·Εͯஏ͔ͣ
    ͘͠ͳ͍ίϛοτΦϒ
    δΣΫτΛ࡞Ε

    View Slide

  72. ଞਓʹಡ·Εͯஏ͔ͣ͘͠ͳ͍
    ίϛοτΦϒδΣΫτΛ࡞Ε
    ✴ৗʹΞτϛοΫͳίϛοτΛ
    ৺͕͚Δ
    ✴ಡऀͷؾ࣋ͪΛߟ͑ͨɺ
    ਖ਼͍͠ίϛοτίϝϯτΛॻ͘

    View Slide

  73. ΄Μͱ͏ʹ͋ͬͨ
    μϝͳίϛοτྫ
    ✴“various changes”
    ✴“ xed a bug”
    ✴“ xes #1326”
    ✴TL;DR

    View Slide

  74. ίϛοτίϝϯτͷॻ͖͔ͨ
    ✴1ߦ໨: what is this
    commit?
    ✴2ߦ໨: ۭߦ
    ✴3ߦ໨ʙ: details, why,
    etc.

    View Slide

  75. ྑ͍͔΋͠Εͳ͍ίϛοτ
    “rails g scaffold user
    name age:integer ...”

    View Slide

  76. ྑ͍͔΋͠Εͳ͍ίϛοτ
    ✴“OMG”
    ✴“oops!”

    View Slide

  77. ιʔγϟϧίʔσΟϯάͷجຊ
    ϓϩάϥϛϯάͱ͸
    ೔ʑͷίϛοτΛ๰͙
    ࡞ۀ

    View Slide

  78. product = [commit, commit,
    commit, ...]
    ϓϩμΫτͳΜ͍ͯ͏
    ΋ͷ͸೔ʑͷίϛοτ
    ͕ੵΈॏͳͬͨ݁Ռͷ
    ද૚Ͱ͔͠ͳ͍

    View Slide

  79. “Commit” matters
    ͔ͩΒGHͰ͸commit
    ʹ͸ίϝϯτͰ͖Δ͚
    Ͳtreeʹ͸ίϝϯτͰ
    ͖ͳ͍

    View Slide

  80. ࢀߟ
    https://github.com/
    rails/rails/commits

    View Slide

  81. ιʔγϟϧίʔσΟϯάͷਅ਷
    ͲΕ͚ͩ੣࣮ͳɺ༗ҙ
    ٛͳίϛοτΦϒδΣ
    ΫτΛੈͷதʹૹΓग़
    ͤΔ͔

    View Slide

  82. Practice 2
    ਓͷόάΛ௚͢

    View Slide

  83. ࠷௿ݶͷϚφʔ
    ✴ਓͷϓϩμΫτΛ࢖ͬ
    ͯͯόάΛ౿ΜͩΒ௚͢
    ✴௚ͨ͠Βupstreamʹ
    pull request͢Δ

    View Slide

  84. ຖ೔࢓ࣄͰRubyॻ͍ͯ
    Ε͹࠷௿Ͱ΋ि1ճ͸୭
    ͔ͷόά౿ΜͰΔ͸ͣ

    View Slide

  85. Railsͷ৔߹
    http://
    contributors.rubyonrail
    s.org/

    View Slide

  86. ਖ΋ੵ΋Ε͹
    جຊతʹϋοΫ͢ΔͨΊ
    ͷϋοΫ͸ͯ͠ͳ͍ɻ࢓
    ࣄͰ౿Μͩόάʹύον
    ౰ͯͯΔ͚ͩɻ

    View Slide

  87. ͍ͭ΋ݴͬͯ·͕͢ɺ
    Rails͸όάͷๅݿͳͷͰ
    ௚͠ͳ͕Β࢖ͬͯͩ͘͞
    ͍

    View Slide

  88. Practice 3
    Sending “pull request”

    View Slide

  89. ΄Μͱ͏ʹ͋ͬͨ
    μϝͳpull request
    https://github.com/
    amatsuda/kaminari/
    pull/181

    View Slide

  90. https://github.com/amatsuda/
    kaminari/pull/181
    ૬ख͕೔ຊਓͰ΋ӳޠ
    Ͱॻ͍͍ͯͩ͘͞

    View Slide

  91. ӳޠ͕ۤखʁ

    View Slide

  92. ӳޠ͕ۤखʁ
    ษڧ͠Ζ

    View Slide

  93. ӳޠ͕ۤखʁ
    ίʔυͰઆ໌͢Δͱ͍
    ͏ςΫχοΫ

    View Slide

  94. μϝͳྫ
    https://github.com/
    amatsuda/everywhere/
    pull/2

    View Slide

  95. https://github.com/amatsuda/
    everywhere/pull/2
    “If you like this, please
    merge in.”

    View Slide

  96. “If you like this, please merge
    in.”
    ͜ΕɺGitHubͱ͍͏
    ΞϓϦͷػೳͷઆ໌
    Ͱ͢ΑͶɻ

    View Slide

  97. ڭ܇
    ʮΑΖ͓͘͠ئ͍͠·
    ͢ʯ͸ཁΓ·ͤΜ
    Αʔɻ

    View Slide

  98. Practice 4
    ࣗ෼ͷϓϩμΫτΛ࡞
    Δ

    View Slide

  99. http://git.io/kaminari
    Kaminariͷ৔߹

    View Slide

  100. Thank you for your +1
    <3 <3 <3
    1900+ watchers!!

    View Slide

  101. Why I made it
    ✴Rails 3Ͱwill_paginate͕ಈ͔ͳ
    ͔ͬͨ
    ✴ࠔͬͨ
    ✴ιʔεಡΜͰ΋ΧΦεա࣏͗ͯͤ
    Δؾ͕͠ͳ͍
    ✴͠ΐ͏͕ͳ͍͔Β৽͍͠ͷ࡞ͬͨ

    View Slide

  102. ެ։ͯ͠Έͨ
    ΈΜͳࠔͬͯͨΒ͠
    ͘ɺΈΜͳ͕ඈͼ͍ͭ
    ͨ

    View Slide

  103. ఻೻ܦ࿏
    ʮ࡞ͬͨΑʯͬͯtweet
    ͨ͠
    RT @kakutani => ࠃ಺
    RT @jmettraux => ւ֎

    View Slide

  104. Thank you @jmettraux
    ͜ͷ৔ΛआΓ͓ͯྱΛ
    ݴ͍͍ͨ

    View Slide

  105. ࠷৽࡞
    http://git.io/
    active_decorator

    View Slide

  106. ڭ܇
    ࣗ෼͕ඞཁʹ͔ΒΕͯ
    ࡞ͬͨ΋ͷ͸ΈΜͳ΋
    ඞཁͳ͜ͱ͕͋Δɻ

    View Slide

  107. μϝͳ(੯͍͠)ྫ
    ThinReports https://
    github.com/thinreports

    View Slide

  108. ThinReports
    @a_matsuda: @thinreports_org ΋͔ͯ͠͠GitHubͰ
    ιʔε͕ެ։͞Ε͍ͯͳ͔ͬͨΓ͠·͔͢ʁ

    ͸͍ɺGitHubͰ͸ͳ͘(ͳΜ͔ࣗલSVN)Ͱެ։ͯ͠·
    ͢ɻͰ͕͢ɺݱࡏGitHubʹϛϥʔ͠Α͏ͱըࡦதͰ͢ɻ

    ThinReports ͸ɺͦͷશͯͷιʔείʔυΛެ։͍ͯ͠
    ·͢ɻιʔείʔυ͸ϝΠϯͷ Subversion ϦϙδτϦ
    ʹՃ͑ͯ GitHub ʹ΋ϛϥʔͱͯ͠ެ։͍ͯ͠·͢ɻ

    View Slide

  109. ࠓ͔ΒΦʔϓϯιʔε΍Δͷʹ
    ࣗલSVNཁΒͳ͘ͳ͍ʁ
    ๭ruby-lang͡Ό
    ͋Δ·͍͠

    View Slide

  110. μϝͳ(੯͍͠)ྫ
    CastOff https://github.com/
    soba1104/CastOff

    View Slide

  111. Practice 5
    ஥ؒΛݟ͚ͭΖ

    View Slide

  112. hocus_pocusͷ৔߹
    http://git.io/hp

    View Slide

  113. ͋Δ೔GHʹDM͕
    “colaborating with
    hocus_pocus” by
    @kurko

    View Slide

  114. “colaborating with
    hocus_pocus”
    ✴஍ٿͷཪଆ͔Β
    ✴໘ࣝ͸ͳ͍
    ✴ख఻͍͍ͨʂ
    ✴ςετॻ͘Αʂ
    ✴υΩϡϝϯτॻ͘Αʂ

    View Slide

  115. So, I gave him a commit right
    Stay tuned, and see
    how we work together!

    View Slide

  116. ڭ܇
    Πϯλʔωοτ͍͢͝

    View Slide

  117. Practice 6
    meet the people

    View Slide

  118. RubyKaigi
    “RubyձٞͰ֎ࠃͷrubyistsͱ೔ຊͷ
    rubyists͸ྑ͍ਓؒؔ܎ΛੜΈग़ͤΔ
    ͱࢥ͏ɻͦΕͰɺདྷ೥ͷRubyձٞ͸
    ͳ͍͔Β൵͍͠ɻ”
    https://twitter.com/#!/
    takoyakikamen/status/
    142439088052649985

    View Slide

  119. RubyConf
    ೔ຊਓ΋͍ͬͺ͍Ͱ
    ҆৺

    View Slide

  120. RailsConf
    ✴RubyHero͕͏͡Ό͏
    ͡Ό
    ✴RailsϓϩάϥϚʔͳΒ
    RubyConfΑΓָ͍͠͸ͣ

    View Slide

  121. Conclusion

    View Slide

  122. Why Ruby?
    ✴designed for Humans
    ✴ΈΜͳͰΩϝΔͱ
    ؾ࣋ͪྑ͍

    View Slide

  123. Practices
    Hack Ruby and spread
    your commits!!

    View Slide