Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ࣗͷͨΊͷ code Λॻ͜͏ ࣗ࡞πʔϧϥΠϒϥϦʹ͍ͭͯ
Slide 2
Slide 2 text
ݩʑখ͞ͳϕϯνϟʔاۀͰPHPͳࣄΛͯ͠ ͦͦ͜͜ʹຬ͍͕ͯͨࣗ͠ɺRubyΛͬͯ ͡Θ͡ΘͱපΈ͖ͭʹͳ͍͖ͬͯӬγεςϜ ϚωδϝϯτʹೖࣾɺதͷRubyͷ͓ࣄͰ ͖ͨΒͣ࣌ؒ͑͋͞Εݸਓతʹϓϩάϥϛ ϯάΛͯ͠ͱ͖Ͳ͖gemΛ࡞ͬͯެ։͢ΔΑ͏ ʹͳͬͨ؆୯ͳܦҢͱɺͦ͜Ͱ͍ͬͯΔ͜ͱ Λ͓͠·͢ɻ
Slide 3
Slide 3 text
Rubyͱग़ձͬͯ ࣌ PHP ͰࣄΛ͍ͯͨ͠ͱ͖ʹ Ruby Λझ ຯͰॻ͖࢝Ίͯɺ৭ʑͳͷΛಘΔ͜ͱ͕Ͱ͖ ͨɻ ͖Ε͍ͳίʔυʹ͍ͭͯ࣌ΜͰ͍ͨࣗʹ ͻͱͭͷ͑Λࣔͯ͘͠Εͨ͠ɺϒϩοΫʹͭ ͍ͯཧղͨ͠ͱ͖ͷ͍͋ͩײಈ͍ͯͨ͠ɻ
Slide 4
Slide 4 text
“͜Ε͍͍ͷ͔ͩΒ ͬͱ·Δͱ͍͍ͳ”
Slide 5
Slide 5 text
Rubyͱग़ձͬͯ Ruby ʹͱͬͯ + ʹͳΔ͜ͱΛ͍ͨ͠ ͬͱ Ruby Λॻ͚Δॴ͕૿͑Δͱ͍͍ͳ Ruby ίϛϡχςΟʹ Contribute Ͱ͖ͳ͍͔ͳ
Slide 6
Slide 6 text
2 ޙ
Slide 7
Slide 7 text
Contribution? త͕΅ΜΓ͗ͯ͢͠ݴ༿͚͕ͩͬͨ ͬͱଞʹΓ͍ͨ͜ͱ͕͋ͬͨͣ
Slide 8
Slide 8 text
Ruby Λͬͯ ͜Ε·Ͱ͑ͨΈͷ ࣗ
Slide 9
Slide 9 text
ѹతʹগͳ͍ɻ ࣗ
Slide 10
Slide 10 text
ͬͱͨ͘͞Μ ίʔυΛॻ͔ͳͪ͘Όɻ ͰɺԿͷͨΊʹ?
Slide 11
Slide 11 text
ࣗ ͷͨΊͷ code Λॻ͜͏
Slide 12
Slide 12 text
Ͳ͏ͯ͠? ͤΊͯࣗͷΈΛ͑ΒΕΔఔʹͳΓ͍ͨ ϢʔβͷࢹʹཱͯΔ/Ϣʔβ͕͙ͦ͢͜ʹ͍Δ తΛݟࣦ͍ʹ͍͘ ϞνϕʔγϣϯΛอͭྗ͕গͳͯ͘ࡁΉ ϦεΫ͕গͳ͍(Γ͍ͨΑ͏ʹΕΔ)
Slide 13
Slide 13 text
࠷ۙͬͨ͜ͱ
Slide 14
Slide 14 text
Retter هΛॻ͘श׳͕อͯͳ͍ݪҼɺهΛॻ͘ख ॱͷ໘͞ʹ͋Δͱ༧ɻ هΛॻ͘ͱ͍͏ຊ࣭తͳ࡞ۀҎ֎ͷ໘ͳखଓ ΛͰ͖Δ͚ͩ؆୯ʹ͢ΔͨΊʹ։ൃɻ γΣϧ্ͰΈͷΤσΟλΛ͏͜ͱ͕Ͱ͖ɺΦ ϑϥΠϯͰ͑ɺ؆୯ʹެ։Ͱ͖Δɻ https:/ /github.com/hibariya/retter
Slide 15
Slide 15 text
Cline ϑΟʔυͷߪಡ࣌ؒΛ֬อ͢Δ͜ͱΛఘΊͨɻҰ Ͱ࠷͘ʹ͍ͯ͠ΔλʔϛφϧͰɺৗʹ৽ ͍͠ใ͕ରྲྀ͍ͯ͠Δঢ়ଶʹ͠Α͏ͱࢥͬͨͷ ͕͖͔͚ͬɻ ʹ͍ͭͨͱ͖ʹ͙͢ϒϥβͰ֬ೝͰ͖Δɻ https:/ /github.com/hibariya/cline
Slide 16
Slide 16 text
Reditor gem edit bundle open ͷΑ͏ʹɺRubyͰهड़ ͞Εͨඪ४ఴϥΠϒϥϦΤσΟλͰ؆୯ʹ։ ͖͍ͨͱࢥͬͯ։ൃͨ͠ͱͬͯখ͞ͳπʔϧɻ https:/ /github.com/hibariya/reditor
Slide 17
Slide 17 text
Hiwai ࣄதɺcline Ͱදࣔ͞ΕΔ௨ʹͱͬͯͻΘ͍ ͳจࣈ͕ೖ͖ͬͯͯɺͳΜͱݴ͑ͳ͍ؾ࣋ͪʹ ͳΔͷͰΉͳ͘։ൃɻ https:/ /github.com/hibariya/hiwai
Slide 18
Slide 18 text
ࣗͷཉ͍͠ͷͰ͑͞ ΈͲ͓Γʹͭ͘Δ ͷׂͱ͍ͨΜ
Slide 19
Slide 19 text
ࣗ ͷͨΊͷ code Λॻ͜͏
Slide 20
Slide 20 text
Ͳ͏ͯ͠? पลٕज़ͷࣝಘΒΕΔ طଘͷϥΠϒϥϦΛΔ͖͔͚ͬʹͳΔ ಘΒΕͨݟனͷࣄʹཱͭ
Slide 21
Slide 21 text
Markdownͷه๏ɺparser (Redcarpet) ςϯϓϨʔτ (Tilt) Ϗϧυπʔϧ (Thor) ϑΟʔυͷੜ (Builder) ίʔυϋΠϥΠτ (Albino, Pygments.rb) ૬ରͬΆ͍จࣈྻͷparse (Chronic) Ωϟογϡ (ActiveSupport) ڒ (Nokogiri)
Slide 22
Slide 22 text
طଘͷ code Λ͓͏
Slide 23
Slide 23 text
طʹ͋ΔͷΛ͏ͱָ GitHubͷIssueͰղܾ͞Ε͍ͯΔ͔͠Εͳ͍ طʹमਖ਼͕औΓࠐ·Ε͍ͯΔ͔͠Εͳ͍ Ͱ͖Δ͜ͱͳΒύονΛૹΔ (औࠐ·ΕΔ͔!) Կ͔ʹͿ͔ͭͬͯ:
Slide 24
Slide 24 text
code Λެ։͠Α͏
Slide 25
Slide 25 text
ެ։ͨ͠ํ͕ྑ͍ཧ༝ ެ։͢Δ(ݟΒΕΔ)͜ͱΛҙࣝ͢Δ͜ͱʹͳΔ ಉ͡ΈΛ࣋ͭਓ͕ډΔ͔͠Εͳ͍ ֎͔Βݟ͑ΔΞΫςΟϏςΟʹͳΔ هͷछʹͳΔ
Slide 26
Slide 26 text
ΞΠσΟΞΛूΊΔ
Slide 27
Slide 27 text
@rubygems
Slide 28
Slide 28 text
GitHub ͷ Activity
Slide 29
Slide 29 text
͍͍ͩͨͷςʔϚΛܾΊΔ γΣϧ͕͖Ͱ ۃྗΩʔϘʔυͰࡁ·͍ͤͨਓ͚ʹ Ͱ͖Ε cool Ͱ ΑΓָͳੜ׆ΛૹΕΔΑ͏ͳͷΛͭ͘Γ͍ͨ ྫ͑:
Slide 30
Slide 30 text
ΞΠσΟΞ͕ු͔ΜͩΒ ѪணͷΘ໊͘લΛ͚ͭΔ ಉ໊͡લͷύοέʔδ͕ແ͍͔֬ೝ͢Δ ࠷ݶͷ࣮Ͱखૣ࣮͘ɾެ։ͯ͠ΈΔ ࠷ॳͷϢʔβͱͯ͠ҭͯଓ͚Δ
Slide 31
Slide 31 text
gem Λ࡞Ζ͏
Slide 32
Slide 32 text
gem Λ࡞Ζ͏ gem Λ࡞Δͷͱͯ؆୯ खݩͰࢼ͚ͩ͢ͳΒެ։͢Β͠ͳ͍͍ͯ͘ ࠓ͙͢࡞ΓํΛ֮͑Α͏
Slide 33
Slide 33 text
bundle gem my_gem
Slide 34
Slide 34 text
gem my_gem ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── Rakefile ├── bin # 実行可能なコマンドを置く ├── lib # ライブラリ本体 │ ├── my_gem │ │ └── version.rb # バージョンを変えるときはここ │ └── my_gem.rb ├── my_gem.gemspec # gemspec └── spec # test
Slide 35
Slide 35 text
gemspec Gem::Specification.new do |gem| gem.authors = ["hibariya"] gem.email = ["celluloid.key@gmail.com"] gem.description = %q{TODO: Write a gem description} gem.summary = %q{TODO: Write a gem summary} gem.homepage = "" gem.files = `git ls-files`.split($\) gem.executables = gem.files.grep(%r{^bin/}). map{ |f| File.basename(f) } gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.name = "my_gem" gem.require_paths = ["lib"] gem.version = MyGem::VERSION end
Slide 36
Slide 36 text
ґଘؔόʔδϣϯͷࢦఆ # Ruby の version gem.required_ruby_version = '>= 1.9.3' # 実行時の依存関係 gem.add_runtime_dependency 'thor', ['>= 0.14.6'] # 開発時の依存関係 gem.add_development_dependency 'rspec', ['>= 2.9.0']
Slide 37
Slide 37 text
Πϯετʔϧ࣌ͷϝοηʔδ # 普段はあまり使わない。必要な時だけ。 # install/update 時に端末に出力される gem.post_install_message = '(::)(::)Hi(::)(::)'
Slide 38
Slide 38 text
࣮ߦՄೳͳίϚϯυ gem.executables = %w(bin/foo)
Slide 39
Slide 39 text
࣮ߦՄೳͳίϚϯυ ίϚϯυͷͨΊͷίʔυ͚ͩΛॻ͘ ຊ࣭తͳͷ lib/ ׂͱյ͍͢͠෦ ͳΔ͘γϯϓϧʹ
Slide 40
Slide 40 text
README ࠷ॳʹʹೖΔͷͳͷͰඞͣॻ͘ ͔Γ͢͞Λ༏ઌ ͳΔ͘ӳޠͰ...!
Slide 41
Slide 41 text
gem ͷੜɾެ։ # gem の生成 gem build my_gem.gemspec # gem の公開 gem push my_gem.gem
Slide 42
Slide 42 text
ଈ࠲ʹެ։͞ΕΔ
Slide 43
Slide 43 text
ϦϦʔεͷͱ͖ʹΔ͜ͱ ςετ͕ green Ͱ͋Δ͜ͱΛ͏Ұ֬ೝ API͕มΘͬͨͳΒREADMEͷߋ৽ όʔδϣϯΛ্͛ͯɺλάΛ͚ͭΔ खݩͷ gem ଈ࠲ʹ update ͯ͠ࢼ͢
Slide 44
Slide 44 text
gem ͷ໋໊ʹ͍ͭͯ(ਪ) http://blog.segment7.net/2010/11/15/how-to-name-gems ୯ޠΛ۠Δ͚ͩͳΒΞϯμʔείΞΛ͏ طଘͷͷʹػೳΛՃ͢ΔͳΒϋΠϑϯ େจࣈΘͳ͍
Slide 45
Slide 45 text
gem ͷ໋໊ʹ͍ͭͯ(ਪ) gem: fancy_require require: 'fancy_require' constant: FancyRequire gem: net-http-persistent require 'net/http/pipeline' constant: Net::HTTP::Persistent
Slide 46
Slide 46 text
͋ͦͿͱ͖(ਪ) 冗談っぽい gem をつくるなら pebbles というプリフィクスをつける。 http://randd.kwappa.net/2010/12/19/192
Slide 47
Slide 47 text
͋ͦͿͱ͖(ਪ) $ gem search -r pebbles- *** REMOTE GEMS *** pebbles-anti_hangover (0.1.0) pebbles-compgacha (0.1.0) pebbles-dajare (0.1.0) pebbles-fizzbuzz (0.1.1) pebbles-kenshiro (1.0.0) pebbles-rack-hanoi (0.1.0) pebbles-sl (0.9.1) pebbles-xmas (0.1.0) pebbles-zenra (0.1.1)
Slide 48
Slide 48 text
·ͱΊ
Slide 49
Slide 49 text
ࣗͷͨΊͷ code Λॻ͜͏ ࣗͷͨΊͷ code Λॻ͘ɺͱ͍͏ͷͱͯج ຊతͳߦҝ ࣗͷͨΊͷΞΠσΞɺखೖΕ͕ԼखͰதʑ ރΕͳ͍২ͷΑ͏ʹҭ͍ͯ͢ gemΛ࡞Δͷ͘͠ͳ͍