Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rails Committer Talk
Search
Akira Matsuda
December 16, 2016
Programming
8
920
Rails Committer Talk
「コミッターから見たRuby on Rails」の発表資料
https://connpass.com/event/46395/
Akira Matsuda
December 16, 2016
Tweet
Share
More Decks by Akira Matsuda
See All by Akira Matsuda
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
13
4.9k
Hanamiを支える技術 2023 / Asakusa.rb Hanami 2023
a_matsuda
2
550
Rails 7.1をn倍速くした話
a_matsuda
11
12k
RubyKaigi 2022 After Talk
a_matsuda
0
420
Coming Soon…💎 / coming soon
a_matsuda
12
7.9k
Rails Performance Issues and Solutions
a_matsuda
9
35k
Extending Rails for Real World App Development
a_matsuda
9
7.4k
A RubyKaigi Talk
a_matsuda
8
2.4k
Ginza Rails 1
a_matsuda
6
1.2k
Other Decks in Programming
See All in Programming
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.2k
快速入門可觀測性
blueswen
0
450
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
110
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
250
週次リリースを実現するための グローバルアプリ開発
tera_ny
1
110
命名をリントする
chiroruxx
1
480
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
120
為你自己學 Python
eddie
0
400
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
2
980
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
360
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
180
CloudflareStack でRAGに入門
asahiiwm
0
130
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
50k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Six Lessons from altMBA
skipperchong
27
3.5k
The Language of Interfaces
destraynor
155
24k
Building Your Own Lightsaber
phodgson
103
6.1k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
ίϛολʔ͔Βݟͨ Ruby on Rails @a_matsuda
Ruby on Railsͷίϛολʔ ͬͯ·͢
ʮRailsͷίϛολʔʯͱʁ
Ruby on Railsͷίϛολʔ
18 Members • ίϛοτݖอ༗ऀݱࡏ18໊
41 Repositories • ϝΠϯϓϩμΫτͪΖΜ rails/rails • ಛʹ୲Λ࣋ͨͣɺશһͰ1ͭͷϦϙδτϦͷશମΛ د͔͍ͬͯͨͬͯ͡Δ • github.com/rails
ԼͷશϦϙδτϦʹίϛοτ Ͱ͖ΔݖݶΛ༗͢Δ
ࢀߟ·ͰʹRubyͷ߹ • Rubyͷίϛολʔ୲੍ • ॎׂΓͰ୲Ϟδϡʔϧ͕ܾ·͍ͬͯΔͷ͕ଟ͍ • github.com/ruby ԼͷϦϙδτϦͷॻ͖ࠐΈݖɺ ڵຯͷ͋Δਓ͕ࣗͰΫϨͬͯݴΘͳ͍ͱΒ͑ͳ͍
Rubyίϛολʔͱ Railsίϛολʔͷҧ͍ • RubyํࣜͩͱɺશମΛѲͯ͠ͳͯ͘ɺॲཧܥͷ ͋ΔҰ෦ͷΈʹؔ͢Δਂ͍͕ࣝ͋Ε·Δ • ͦͷ߹ɺଞͷϝϯόʔͱͷίϛϡχέʔγϣϯ ࿈ܞඞͣ͠ཁٻ͞Εͳ͍͔͠Εͳ͍ • Railsํࣜͩͱɺ͋ΔఔओମతʹશମʹؔΘΔؒͰ
͋Δ͜ͱ͕ٻΊΒΕΔ
Railsίϛολʔ͕ΞΫςΟϒ͡Όͳ͘ͳΔͱ ίϛοτݖΛฦ্ͨ͠ΓΞϨͨ͠Γ͢Δ׳श͕ ͋ΔͷͰɺίϛολʔͷਓ͕গͳΊ
ҰํRubyͰ • ίϛολʔجຊతʹӬੈίϛολʔɻ • ਓશ෦Ͱ100ਓऑ͙Β͍ʁ(ৄ͘͠shugo͞Μʹ ฉ͍͍ͯͩ͘͞)ɻ • RubyKaigiͷίϛολʔେू߹اըͰஃ্ʹ্͕ͬͯ ͩ͘͞Δͷ30ਓલޙɻ
RubyRailsνʔϜͷنײ ͍͍ͩͨಉ͙͡Β͍ͱݴ͑Δ • 20ਓલޙͷΞΫςΟϒͳϝϯόʔ
RubyνʔϜͱRailsνʔϜͷ ӡ༻ख๏ͷҧ͍
Ruby • Ϟδϡʔϧ͝ͱʹ͓͓·͔ʹ୲ऀ͕ܾ·͍ͬͯΔ • ୲ൣғΛඈͼӽ͑ͯࣗ༝ʹίϛοτ͍ͯ͠Δਓؒ(ʁ) ύονϞϯελʔ͙Β͍ • ϝϯςφ͕inactiveʹͳΔͱɺͦͷ··Ϟδϡʔϧࣗମ͕ unmaintainedঢ়ଶʹؕΔ
Rails • খϓϩδΣΫτ੍Έ͍ͨͳײ͡ • νʔϜBasecampʹͯλεΫ͕ϦετΞοϓ͞Εͯɺ Γ͍ͨਓ͕Γ͍ͨͷΛऔ͍ͬͯ͘ • ͋ͱɺGHͷΔΓΛͻͨ͢Βtriage͢Δ໊͕͍ͯɺ botͰ୲͕ϥϯμϜΞαΠϯ͞ΕΔ
ຊͷ͓
ʮRailsΞϓϦͷίʔυઃܭʯ
ୈҰ෦ • RailsΞϓϦͷίʔυઃܭ
ʮαʔϏεͷ࡞Γ͔ͨʯ
Έ͍ͨͳ͠·ͤΜ
ʮίϛολʔ͔Βݟͨʯ ؍ͰΛ͢ΔͳΒ • Railsͬͯօ͞Μ͕ࢥ͍ͬͯΔҎ্ʹΑ͘Ͱ͖ͯΔΜͰɺ ιʔείʔυΛΑ͘ಡΜͰษڧͯ͠ɺϑϨʔϜϫʔΫ ࣗମͷػೳΛ͏·ͬͯ͘ΞϓϦΛ࡞ͬͯΈ͍ͯͩ͘͞
෭ಡຊ • Rails3 ϨγϐϒοΫɺͱ͔ʁ • ͪΐͬͱݹ͍͚Ͳɺ༰͕ਖ਼֬Ͱ͜Ε͚ͩ·ͱ·ͬͯ ͍Δॻ੶͕ࠓͷͱ͜Ζଞʹ͋Μ·ΓݟͨΒͳ͍͔
͔ͯ͜͠͠͏͍͏͕ظ ͞ΕͯΔʁ • C◦◦kpadͰͲ͏ͬͯRailsΞϓϦΛεέʔϧͤͯ͞Δ ͔ • Speaker Deckʹ্͕ͬͯΔΜͰɺউखʹݟ͍ͯͩ͘͞ https://speakerdeck.com/a_matsuda/the-recipe-for-the- worlds-largest-rails-monolith
Ϩʔϧͷ֎Εํ • ͋ΔఔҎ্ʹϏδωε͕ෳࡶʹͳͬͨΓن͕େ͖͘ ͳͬͨΓͨ͠ΞϓϦ෦తʹϨʔϧ͔Β֎ΕΔܾஅΛ ͨ͠΄͏͕ྑ͍͜ͱ͋Δ͔
ݱʹΑͬͯ͋·Γʹ έʔεόΠέʔεͳͷͰ • ҰൠԽͰ͖ΔιϦϡʔγϣϯಛʹ͋Γ·ͤΜ
ͦ͏͍͏ͱ͖
ωοτ্ͷ҆қͳใʹ Θ͞Εͣ • ࣗͷ಄ͰΑ͘ߟ͑ͯ
ͷຊ࣭Λ͖ͪΜͱ ݟۃΊͯ • దͳٕज़Λͬͯ • ϝϯςφϯεՄೳͳίʔυΛ
Good Luckʂ
ୈҰ෦
Questions?
ୈҰ෦(ཪ)
γϯɾίϛολʔ͔Βݟͨ Ruby on Rails • ͱ͍͏͜ͱͰɺRuby on RailsࣗମͷΛ͠·͢ɻ
Ruby on Rails • 1stϦϦʔε͕2005
͕Υον࢝͠Ί͔ͯΒ ͪΐ͏Ͳ10͙Β͍
ͱ͍͏Θ͚Ͱɺͪΐͬͱ࣌ ΛͬͯੲΛ͠·͢Ͷ
ͷ͔ΒݟͨRailsͷ10
1.x
1.x • BasecampͷόοΫΤϯυΛΦʔϓϯιʔεԽͨ͠ͷ • Basecamp͕ॻ͍ͨίʔυ͕େ • @dhh, @jeremy, @sstephenson, @jamis
͋ͨΓ
AR finder • HashͰͳΜͰ͢ελΠϧ • ࣌Hash rocket͕ॻ͖ʹ͔ͬͨ͘ͷͰ͋ͷ࣌ʹΓ ͍ͨͱࢥΘͳ͍͚ͲɺࠓͷHashه๏ͳΒҊ֎ѱ͘ͳ͍ API͔ʁ
WebϑϨʔϜϫʔΫͱͯ͠ • controllerͷivarʹಥͬࠐΜͩͷ͕viewͰݟ͑Δ Ṗͷ(ศརͳʁ)API • form_tag :controller => 'users', :action
=> 'create' • authenticity_tokenͱ͔ଘࡏ͠ͳ͍Վతͳ Πϯλʔωοτͷ࣌
RJS • JavaScriptΛॻ͔ͣʹAjax! • ͍͢͝ςΫϊϩδʔͩͬͨ • Turbolinksͷݪͱݴ͑Δ • (Turbolinksͱҧͬͯ)࣮ͰΊͪΌΊͪΌͬͯͨ
ActiveSupport • ݴޠΛ֦ு͢Δͱ͔͍͏ؾͷ৮Εͨൃ • Jakarta Commons͋ͨΓͱ࣍ݩ͕ҧ͍͗ͨ͢ • AMC • Symbol#to_proc
• ఱ࠽ͨͪͷ࠽ೳᷓΕΔίʔυ͕ຯΘ͑ͨ
2.0
2.0 - RESTֵ໋ • verb == HTTP method • RESTΛ࣠ʹͨ͠نͰ࠶ߏங͞Εͨ࠷ߴʹΧοί͍͍
ੈք؍ • ϞσϧΦϒδΣΫτͷURLදݱͱ͔·͞ʹఱ࠽ͷൃ • form_for @user ͱ͔ॻ͚ΔΑ͏ʹͳͬͨ
2.1
2.1 • ͜ͷΜ͔ΒύονΛ͛ͯؔΘΓ࢝ΊΔ • ͷར(Asakusa)Λ׆͔ͨ͠Ruby 1.9ରԠͷύονΛ ৭ʑ
2.2
named scope • ޙʹArelͱ࣮݁ • ͜ΜʹͪͷAR APIͷํੑΛܾఆ͚ͮͨస • @nk •
ৄ͘͠gihyo.jpͷهࣄΛࢀর http://gihyo.jp/dev/serial/01/ruby/0043
I18n • I18nϓϩδΣΫτʹࢀը • ϦʔμʔυΠπͷ @svenfuchs • ถࠃओಋͰͳ͍ଟࠃ੶܉ʹΑΔϓϩμΫτͩͬͨ͜ͱҙٛਂ͍ • ϓϩμΫτࣗମɺ·͊೦ͳग़དྷ
• I18n.t ͷμα͞͏ͪΐͬͱͲ͏ʹ͔ͳΒͳ͔ͬͨͷ͔ɺࠓͰߟ͑Δ • i18nͷίʔυϕʔεͷͻͲ͞ • ͜ΜͳʹͻͲ͘ͳΔͳΒ͜ͷ࣌ʹϓϩδΣΫτͷίϛοτݖΒ࣮ͬͯʹ ؔΘ͓͚ͬͯྑ͔ͬͨ…͔
I18n - ෭࢈ • i18n_generators • GHͰॳΊͯެ։ͨࣗ͠࡞Gemɺͩͬͨͱࢥ͏ • ੈքͰԿ൪͔ʹI18nʹৄ͔ͬͨ͠ݟΛ׆͔ͯ͠ɺ ݱͰΊͪΌΊͪΌཱͭϓϩμΫτΛ࡞ͬͨ
• ࠷ۙʹͳΔ͜ͱগͳ͍͚Ͳɺ࣮Rails 5Ͱ όονϦ͑ΔݱϓϥάΠϯ
Rackͱ͍͏HTTPநԽ ϨΠϠʔͷొ • PythonͷWSGIͷϙʔςΟϯάͳΜ͚ͩͲɺRubyͳΒ call() ΛAPIʹ͢ΕProcͰΠέΔ͡ΌΜʂͱ͍͏ɺ ൃͱ࣮ͷΧοίྑ͞
Rackͷొʹ͏ɺWeb Ap αʔόʔ࣮ϒʔϜͷນ։͚ • WEBrick͕࣌ͷׂΛऴ͑Δ͜ͱʹ
Merb͍ͬͯ͏͍͢͝ΠέͯΔRails alternative͕ ຊͰʹͳͬͨͷ͜ͷ͜Ζ͙Β͍ ͔ͩͬͨ • ໊ࣈ͕ಡΊͳ͍͜ͱͰ༗໊ͳࠓ͖ @ezmobius ͕ ఏএ͢Δbetter Rails
͜ͷ͜Ζɺhpricotͱ͍͏_whyͷײಈతͳ XMLύʔαʔͷalternativeΛ࡞ͬͨAaron͞Μ ͱ͍͏͍ͷ͋Δएऀ͕ొ • RubyKaigiʹͯεϐʔΧʔσϏϡʔ • (̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋ ̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋ ̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋)
2.3
ΦϥΠϦʔͷHead First Rails Λ༁
Head First Rails༁ͷ෭࢈ • ίʔυΛͨ͘͞ΜಡΜ͍ͩͭͰʹύονΛྔ࢈
3.0
Merb Merger • MerbνʔϜͷcarlhudaϖΞ(̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋ ̋̋̋̋̋̋̋̋̋̋̋̋̋)͕ɺAPIޓੑΛอͬͨ··શͯΛϦϥΠτͱ͍͏ ΕۀΛୡ • ঈͱͯ͠ɺಈ࡞͕͑Β͘ಷॏʹͳͬͨ • ͦͷޙRuby͕ண࣮ʹ͘ͳ͍͔ͬͯͬͨΒϓϥϚΠθϩ͙Β͍ʹͳ͔ͬͨ
ͳ͊ • ৭ʑ͚͋ͬͨͲɺBundler͕രͨ͠ͷ͕࠷େͷՌͰͳ͍͔ • ThorΛϕʔεʹͨ͠Ṗͷgenerator࣮ͳͲ̋̋̋̋̋࢈·ΕΔ (GSoCͰJose܅͍ͬͯ͏एऀ͕औΓΜͩσϏϡʔ࡞)
Merb Merger • Rails Engines, Applicationͱ͍͏֓೦ɺ৽͍͠ϓϥάΠ ϯγεςϜ • طଘͷϓϥΪϯͷޓੑΛෘͳ͖·Ͱʹഁյ •
kaminariੜͷ͖͔͚ͬ (͋Ε͔Β5ɺͬͱ1.0͕ ग़ͤͦ͏ʂ)
͜ͷ͋ͨΓͷৄࡉ WEB+DB PRESSͷRails 3ಛूΛࢀর • Vol. 58 • WEB+DBࣥචͷ෭࢈ •
ίʔυΛͨ͘͞ΜಡΜ͍ͩͭͰʹύονΛྔ࢈ • ͜ͷ͜ΖʹCampfire্ͷRailsίϛολʔνϟοτʹট ͞Εͯɺίϛολʔͨͪͱձ͢ΔΑ͏ʹͳΔ
At Matz-e • 3.0ϦϦʔεલʹୈ1ճRWC • JeremyͷײಈతʹΠΠ
3.1
Sprocketsͱ͔͍͏ෛͷҨ࢈ • Basecamp͔Βొ • ·ͨͯ͠sstephensonͱ͍͏͍͢͝ϋοΧʔ • Railsͷͤ͘ʹڥߏஙͱ͔σϓϩΠ͕ͨΒ͍͠ͷ ʹͳΔ • ޙͷల։ʹͭͳ͕Δੴ
Arel/ARͷվྑ • Aaron͕ArelʹखΛೖΕͯvisitorύλʔϯΛۦͨ͠ ͍͠ίʔυʹॻ͖͑ͯίʔυ͕୭ʹಡΊͳ͘ͳΔ
Rails 3ϨγϐϒοΫࣥච • ࣥචͷ͍ͭͰʹύονΛྔ࢈
RailsConf • ͜ͷ͜Ζ͙Β͍(͍ɺ͏ͪΐͬͱલ͔ʁ)ʹ RailsConfʹॳࢀՃͯ͠ɺίϛολʔͨͪʹϦΞϧͰձ͏ • Ҏ߱ຖࢀՃ͢ΔΑ͏ʹͳΔ
3.2
where.not • ࠷ॳͷύονΊͬͪΌΤϨΨϯτͳ࣮ͩͬͨ(̋̋̋ ̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋) • ̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋ ̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋ ̋̋̋̋̋̋ • likeҰॹʹೖΕͨΜ͚ͩͲDHHʹݴ͍ෛ͔͞Εͯrevert
Aaron͕͞ΒʹARΛ͍͡Γ·ͬͯ͘ ޓੑΛखʹഁյ • ͬͱग़ἧ͖ͬͯͨAR֦ுܥϓϥΪϯͨͪʹ࠶ͼக໋త ͳμϝʔδ
ϧʔςΟϯά͍ΛAaron͕Journeyͬ ͍ͯ͏࣍ੈrouterʹஔ͖͑ͯ՚ྷʹղܾ • visitorύλʔϯΛۦ͍ͨ͠͠ίʔυʹͳͬͯɺී௨ ͷਓʹಡΊͳ͘ͳΔ • ͜Εʹؔͯ͠ɺҎલͷίʔυ͕͋·Γʹμϝ͗ͨ͢ ͚ͩͰɺ͍ͬͯ͏͔ɺ͜ͷલͷੈͷϧʔλʔ̋̋̋̋ ̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋̋
ϦϦʔεϚωδϝϯτ͕ େࠞཚ • ηΩϡϦςΟΞοϓσʔτʹฆΕͯؔͳ͍ίϛοτ͕ ೖͬͯσάϨʔυΈ͍ͨͳࣄ͕݅සൃ • ͜ͷ͜ΖࣗϦϦʔεʹؔΘΔηΩϡϦςΟύον Λ͍͔ͭ͘ॻ͍ͨهԱ͕͋Δ
4.0
Ruby
Turbolinks • SprocketsͰͷ෬ઢ͕ͭͳ͕Δ • DHHͬͺఱ࠽ • ͰjQueryͱͷ৯͍߹Θ͕ͤѱ͗ͯ͢ਏ͔ͬͨ
ए͖ϗʔϓjonleighton͕ϦϑΝΫλϦϯάͱশͯ͠ ARΛແବʹ͍͡Γ·ͬͯ͘ഁյ • Ϋϥε໊ͱ͔ϑΝΠϧ໊·ͰΉΈʹมߋ͢Δͷ ΄Μͱצห…
Object#try ͱ try! ͷ༷มߋΛ ఏҊͨ͠ͷ͔֬͜ͷΜ
WEB+DBͰRails 4ಛूࣥච • Vol. 74 • ࣥචͷ͍ͭͰʹͬͱίϛοτݖΛऔಘ
͜ͷ͜Ζ͙Β͍͔ΒϦϦʔεϚωδϝϯτͷ ϧʔϧΛ෦Ͱ͠߹ͬͯɺ ͖ͪΜͱΔΑ͏ʹͳͬͨ • 2ੈ͙Β͍ηΩϡϦςΟύονΛड͚͚Δ • 1ੈલ͙Β͍όάfixύονड͚͚Δ • ͋͘·ͰϒϥϯνϝϯςφͷؾΛ༏ઌ
4.2
4.2ʙ • ৽Ωϟϥͷsgrif͕ARΛ͍͡Γ·ͬͯ͘ޓੑͱ ύϑΥʔϚϯεΛ༰ࣻͳ͘ഁյ
ARͷडͷྺ࢙ • Δؾͷ͋Δ৽ೖΓίϛολʔ͕͙͢ʹΦϞνϟʹ ͕ͨ͠ΔͷͰɺ͍͔ͭΘ͍ͦ͏ͳʹૺ͏…
5.0
ruby 2.2+
WebϑϨʔϜϫʔΫతʹ ͷ͋ͷػೳ
Symbol GC!!! • @nari3 ΧοίΠΠʂ
GCབྷΈͰ͏Ұͭ • ۭલͷ .freezeϒʔϜ • Ruby 2.3ͷfrozen_string_literalಋೖͷ͖͔͚ͬ
Rails 5͔Β2.3+ ʹͨ͠΄͏͕ ྑ͍ͷͰʁͱ͍͏ٞ͋ͬͨ • frozen_string_literal ͍͍ͨ • ରԠRubyόʔδϣϯͷδϟϯϓ͕େ͖͗ͯ͢Ҡߦύε͕ ݫ͗͢͠ΔͷͰ٫Լ
• 2.2Ͱಈ͔ͨ࣌͠ͱ2.3Ͱಈ͔ͨ࣌͠Ͱڍಈ͕มΘΔͷ ϝϯς/σόοά͕େม͗͢ΔͷͰಋೖ·ͩͦ͠͏
ͦ͏͍͑5.0ͷͱ͖WEB+DBॻ͍ͯͳ͍͔Β ͋Μ·ΓίʔυಡΜͰͳ͍͠ίϛοτͯ͠ͳ͍ ͔
͜ͷ͜Ζɺkamipo͞Μʹձ͏ͨΊʹԿ͔ ͷษڧձʹࢀՃͯ͠ɺkamipo͞ΜΛἤΔ
5.1 • JSपΓͰ͍Ζ͍Ζ
͜Μͳ;͏ʹɺਓΛͬͯίϛοτΛͬͯ ϓϩμΫτΛΥονͯ͠Δͱݟ͔͕͑ͨมΘΔ • ΈΜͳ͕Φʔϓϯʹ׆ಈ͍ͯ͠ΔOSSͳΒͰ
OSSͨͷ͍͠ʂ • ͱ͍͏͔ɺ͜͜Λָ͠·ͳ͍ͱɺOSSΛͬͯΔޣຯ ͷେΛࣺͯͯΔΜ͡Όͳ͍͔
RailsʹԿ͔৽ػೳ͕ೖΔͷɺԿ͔ࣗવͷ େ͖ͳྗ͕ಇ͍ͯఱ͔Β߱ͬͯ͘Δ͔Βͱ͔Ͱ ͳͯ͘ɺͦͷػೳ͕ཉ࣮ͯͨ͘͠͠ਓ͕ډΔ͔Β
͜͏͍͏ใද͖ίϛοτϩάʹ͔͠ ؚ·Εͳ͍߹͕ଟ͍ͷͰɺίʔυϦʔσΟϯά ͷجຊίϛοτΛಡΈ·͠ΐ͏
͋Δ࣌Ͱ۠ͬͨฏ໘తͳίʔυΛݟΔ ͷͰͳ͘ɺਓʑͷ͍͕ࠐΊΒΕͯ ͕Ε͖ͯͨྲྀΕΛಡΈऔΔ
͔Βݟͨίϛολʔͷ ਓʑ • ruby: ͍͢͝Ϡό͍಄ͷ͓͔͍͠ҞΕଟ͍ਓʑ • rails: ΈΜͳ༑ୡ
ͳ͔ͥʁ • ੈަͯ͠Δ͔Ͳ͏͔ͷҧ͍ • ྸͱྺͷ྆ํͷҙຯͰ
OSSਓͰͭ • ΞΫςΟϒͳίϛολʔ20ਓલޙ • RubyͦΜͳΜ • RubyνʔϜͷنײɺΞΫςΟϒͳίϛολʔຖਆࡏ݄ʹ8ׂ͕ͨౡࠜʹ ू݁͢ΔͷͰɺ͜͜ͷօ͞Μ͝ଘͷͣ • ͪΐ͏Ͳ͜ͷ෦ʹ͍Δਓͱಉ͘͡Β͍
• ίʔυʹͷ͘͢͝ਓͷݸੑ͕ग़ΔͷͰɺ͕ࣗ͏ϓϩμΫτʹ͍ͭͯ ࡞ऀΛΔ͜ͱ͕େࣄ • ಛʹɺOSS׆ಈ͕ͨ͠Δ͚Ͳίʔυ͕೦ͳཕͳਓɺΈ͍ͨͳͷɺ͍Ζ͍Ζ ίʔυΛಡΜͰΔ͏ͪʹ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔ͠ɺղܾͷେ͖ͳखॿ͚ ʹͳΓ·͢
Railsͷίϛολʔʹ ձ͍ʹߦ͜͏
RubyKaigi? • RailsͷίϛολʔRubyKaigiʹ໓ଟʹདྷ·ͤΜ • աڈʹRubyKaigiʹདྷͨ͜ͱ͕͋ΔRailsίϛολʔɺ dhh, tenderlove, wycats, carllerch, josevalim,
chancancode, schneems ͙Β͍ͳͣɻ
RubyKaigiʹݺΜͰ ͍͍Μ͚ͩͲ • ຊͷΈΜͳ͕Railsίϛολʔͱ͔Βͳ͗ͯ͢ɺ ݺΜͰʮ୭ʁʯͬͯͳΔ͚ͩͰ͠ΐʁ • Ͱͦ͏Ͱ͠ͳ͍ͱΈΜͳͱΓ߹͏ػձͳ͍ ͱ͍͏ܲ&ཛঢ়ଶ • ͋ͱɺඇӳޠωΠςΟϒऀ͕ଟ͍ͷͰɺਓલͰ͢ͷ
͕ۤखͳਓ͕ҙ֎ͱଟ͍ͷ͍͠ͱ͜Ζ
Asakusa.rb? • ্هҎ֎ͰAsakusa.rbʹདྷͨ͜ͱ͕͋ΔRailsίϛολʔ senny ͙Β͍ɻ
Railsίϛολʔཧతʹ ͳ͔ͳ͔ձ͑ͳ͍
ͳ͔ͥʁ
Rubyίϛολʔͱ Railsίϛολʔͷҧ͍ • Ruby: ͍͍ͩͨຊʹॅΜͰΔɻ͝ொͰձ͑ͨΓ ͢Δ • Rails: ੈքதͷ͋ͪͪ͜ʹࢄΒͬͯΔ
Railsίϛολʔͷࠃ੶ (͍͍ͩͨډॅ) • ถࠃ: 6 • ϒϥδϧ: 3 • ϧάΞΠ:
1 • εϖΠϯ: 1 • ίϩϯϏΞ: 1 • ӳࠃ: 1 • εΠε: 1 • Χφμ: 1 • ΦʔετϥϦΞ: 1 • σϯϚʔΫ: 1 • ຊ: 1
͜ͷਓʑʹ·ͱΊͯձ͑Δ །Ұͷػձ • RailsConf (ʹซઃ͞ΕΔίϛολʔύʔςΟʔ)
ͳͷͰɺRailsʹڵຯ͕͋ͬͯRailsͷ͜ͱΛͬͱ ਂ͘Θ͔Γ͍ͨਓRailsConfʹߦͬͯΈΔͱ Α͍ͱࢥ͍·͢
RailsConf • ถࠃͰʹ1։࠵͞ΕΔɺੈք࠷େͷRubyؔ࿈ Πϕϯτ (ࢀՃऀ2000ਓ͙Β͍)
RailsConfͷ͓͢͢ΊϙΠϯτ • Ruby Hero Awardͷදজ͕ࣜߦΘΕΔͷͰɺͦͷͷ(ੈ քͷ)Rubyք۾ͷ(͍ΖΜͳҙຯͰ)ͷਓʹձ͑Δ • ΈΜͳ͕RailsΞϓϦͰͬͯΔGemͷ࡞ऀͱ͔͕͚ͬ͜ ͏དྷΔ(RubyKaigiʹ͋Μ·Γདྷͳ͍Ͱ͢Ͷ)
RailsConfͷ͓͢͢Ί͡Όͳ͍ ϙΠϯτ • ࢀՃඅͷ҆͞ʹఆධͷ͋ΔRubyKaigiͱҧͬͯɺνέο τ͚ͩͰ750υϧͱ͔͔͔Δ • RubyKaigiͱҧͬͯɺτʔΫ͕ͲΕϏοΫϦ͢Δ͙Β ̋̋̋̋̋̋ • RubyKaigiͱҧͬͯɺถࠃͷͲ͔͜ͷࢢͰ։࠵͞ΕΔ
ͷͰɺجຊతʹϝγ͕Ϛζ͍
Railsίϛολʔ͔Βݟͨ Railsͷݟ͑ํ • 18ਓத16ਓձͬͯͨ͜͠ͱ͕͋Δ • Railsͷ͋ΔػೳΛݟͨͱ͖ʹɺ͍ͭ୭͕࣮ͨ͠ίʔυ ͔͕͍͍ͩͨࢥ͍ग़ͤΔ • ओཁͳGemΛ࡞ͬͯΔਓ͍͍ͩͨΓ߹͍ •
͍͟ͱ͍͏࣌ʹͳΜͱ͔Ͱ͖Δ
༑ୡ͕ؔΘͬͯΔͷͬͯड͚औΔ ͱ͖ͷؾ͕࣋ͪ͘͢͝มΘΔͰ͠ΐʁ • ༑ୡ͕ॻ͍ͨຊ • ༑ୡ͕ԋͯ͠ΔCD • ༑ୡ͕ग़ԋͯ͠Δ • ༑ୡ͕ௐཧͯ͠ΔϨετϥϯ
• ༑ୡ͕ৢͨ͠ञ
͕ࣗͪΐͬͱʮίϯτϦ Ϗϡʔτʯͯͨ͠Γ͢Δͱ • ࣗϨϏϡʔͨ͠༑ୡͷຊΈ͍ͨͳײ͡
͕ࣗओମతʹؔΘͬͯΔͱ • ͕ࣗओԋͯ͠Δөըͱ͔͕ࣗ࡞ۂͨ͠ۂͷԋձ Έ͍ͨͳࢥ͍ೖΕ
͕ࣗ࡞ͬͨgem͕ΘΕͯΔ ΞϓϦ • ࣗͷࢠڙ͕ͬͯΔӡಈձͷ͔͚ͬ͜ΛݟकΔؾ࣋ͪ
શ͘Βͳ͍ਓͷϓϩμΫτ Λ͏ͷෆ҆ʹͳΔ • ͕ࣗΑ͘Θ͔͍ͬͯͳ͍ͷΛ͓٬͞Μʹग़ͨ͘͠ ͳ͍ • ͍͟ͱ͍͏࣌ʹίϯτϩʔϧͰ͖ͳ͍
༑ୡͷGemͷόάΛ ౿Μͩͱ͖ • ʮ͓ʔ͍ɺ͜Μͳόάݟ͚ͭͨͧʔɻ͜ΕͰି͠1ͭ ͳʔʯ • ʮ͓ͬͱɺαϯΩϡʔɻࠓձͬͨͱ͖Ϗʔϧ1ഋᇋΔ Θʔʯ • ͬͯͳ۩߹ʹͳΔ
͍͍ͩͨͦΜͳײ͡ • OSS͕ͬͱࣗ͝ͱʹͳΔ • ͏ͷָ͕͘͠ͳΔ • (ͦͯ͠ͲΜͲΜপʹϋϚΔ) • (Ͱແঈͷ׆ಈͳͷͰ͓ۚʹͳΒͳ͍)
ʮRailsίϛολʔ͔Βݟͨʯ ਖ਼͍͠ϨʔϧͷΓํ • ਓͷߟ͑ํΛΔ • ਓΛΔ • ਓͱ͢
ίʔυͷಡΈํ • ͋Δ࣌ؒ࣠ͰͬͨίʔυΑΓ࣌ܥྻʹԊͬͯ ίϛοτϩάΛಡΉ • ίʔυΛॻ͍ͨਓͷཧղΛத৺ʹɺྲྀΕΛѲ͢Δ • ྺ࢙ͷษڧͷָ͠Έํʹ͍͔ۙ
ίϛοτ ίϛϡχέʔγϣϯͷखஈ • ͦͷͱ͖ࣗͷͷલʹ͋ͬͨʹରͯ͠ԿΛߟ͑ͯ ͲͷΑ͏ʹରԠ͔ͨ͠Λޙੈͷಡऀʹ͑Δ
༏ΕͨOSS։ൃऀʹͳΔʹ • ಛผͳεΩϧཁΒͳ͍ • ࡢࠓ͓ࣄͷ։ൃݱͱOSS։ൃͰΘΕͯΔಓ۩΄ͱΜͲಉ͡ͷʹͳͬͯ ͖͍ͯΔ • ͦ͠͏Ͱͳ͍ͳΒࣄͷΓํΛม͑Δ͔ɺ৬ͦͷͷΛҠΔ͔ͨ͠΄͏ ͕ྑ͍ •
Λ୳ͯͦ͠ΕΛղ͍ͯίϛοτʹͨͨ͠Ίͯɺ୭͔ʹՁΛೝΊͤ͞Εྑ͍ ͚ͩ • ύονΛ͚͛ͭΔ૬ख͕৬ͷಉ྅Ͱͳͯ͘ɺੈքͷͲ͔͜ʹډΔRailsνʔϜ ͷਓGemͷ࡞ऀʹͳΔ͚ͩ • ʑͷ1ͭ1ͭͷίϛοτΛେࣄʹ
ͦͷ͋ͨΓͷɺOSSͷίʔυ Λॻ͘·ͨ໌
ࠓɺRailsʹؔΘΔਓʑΛΥον͠ͳ͕Β RailsͷίʔυΛಡΉָ͠͞ΛޠΓʹ͖·ͨ͠ • ͷײ͍ͯ͡Δָ͕͠͞গ͠ͰΘ͍ͬͯΕ͍ Ͱ͢
end