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.7k
Hanamiを支える技術 2023 / Asakusa.rb Hanami 2023
a_matsuda
2
530
Rails 7.1をn倍速くした話
a_matsuda
11
12k
RubyKaigi 2022 After Talk
a_matsuda
0
400
Coming Soon…💎 / coming soon
a_matsuda
12
7.7k
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.3k
Ginza Rails 1
a_matsuda
6
1.2k
Other Decks in Programming
See All in Programming
Realtime API 入門
riofujimon
0
150
RubyLSPのマルチバイト文字対応
notfounds
0
120
Pinia Colada が実現するスマートな非同期処理
naokihaba
4
220
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
距離関数を極める! / SESSIONS 2024
gam0022
0
280
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
みんなでプロポーザルを書いてみた
yuriko1211
0
260
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
1.9k
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.1k
Laravel や Symfony で手っ取り早く OpenAPI のドキュメントを作成する
azuki
2
110
Featured
See All Featured
Building an army of robots
kneath
302
43k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Side Projects
sachag
452
42k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Being A Developer After 40
akosma
86
590k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
The Language of Interfaces
destraynor
154
24k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Designing Experiences People Love
moore
138
23k
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