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
970
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
15
6.7k
Hanamiを支える技術 2023 / Asakusa.rb Hanami 2023
a_matsuda
2
710
Rails 7.1をn倍速くした話
a_matsuda
11
13k
RubyKaigi 2022 After Talk
a_matsuda
0
490
Coming Soon…💎 / coming soon
a_matsuda
12
8.2k
Rails Performance Issues and Solutions
a_matsuda
9
37k
Extending Rails for Real World App Development
a_matsuda
9
7.7k
A RubyKaigi Talk
a_matsuda
8
2.6k
Ginza Rails 1
a_matsuda
6
1.3k
Other Decks in Programming
See All in Programming
Namespace and Its Future
tagomoris
6
680
TDD 実践ミニトーク
contour_gara
1
270
MCPで実現するAIエージェント駆動のNext.jsアプリデバッグ手法
nyatinte
7
1k
Portapad紹介プレゼンテーション
gotoumakakeru
1
130
奥深くて厄介な「改行」と仲良くなる20分
oguemon
0
190
旅行プランAIエージェント開発の裏側
ippo012
1
590
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
0
230
Google I/O recap web編 大分Web祭り2025
kponda
0
2.9k
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
18
9.6k
AI時代のUIはどこへ行く?
yusukebe
6
2.1k
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
290
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
0
230
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Embracing the Ebb and Flow
colly
87
4.8k
A better future with KSS
kneath
239
17k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Code Review Best Practice
trishagee
70
19k
Bash Introduction
62gerente
614
210k
Building Applications with DynamoDB
mza
96
6.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
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