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
930
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
5.5k
Hanamiを支える技術 2023 / Asakusa.rb Hanami 2023
a_matsuda
2
570
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
36k
Extending Rails for Real World App Development
a_matsuda
9
7.5k
A RubyKaigi Talk
a_matsuda
8
2.4k
Ginza Rails 1
a_matsuda
6
1.2k
Other Decks in Programming
See All in Programming
traP の部内 ISUCON とそれを支えるポータル / PISCON Portal
ikura_hamu
0
240
chibiccをCILに移植した結果 (NGK2025S版)
kekyo
PRO
0
190
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
510
Terraform で作る Amazon ECS の CI/CD パイプライン
hiyanger
0
120
[Fin-JAWS 第38回 ~re:Invent 2024 金融re:Cap~]FaultInjectionServiceアップデート@pre:Invent2024
shintaro_fukatsu
0
380
Java Webフレームワークの現状 / java web framework at burikaigi
kishida
9
2k
AWSマネコンに複数のアカウントで入れるようになりました
yuhta28
2
150
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
2.3k
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
240
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
1
530
rails newと同時に型を書く
aki19035vc
6
750
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
19
3.3k
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
40
2.5k
Automating Front-end Workflow
addyosmani
1367
200k
Navigating Team Friction
lara
183
15k
Music & Morning Musume
bryan
46
6.3k
Writing Fast Ruby
sferik
628
61k
GraphQLとの向き合い方2022年版
quramy
44
13k
Docker and Python
trallard
43
3.2k
Code Reviewing Like a Champion
maltzj
521
39k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
We Have a Design System, Now What?
morganepeng
51
7.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
128
19k
Facilitating Awesome Meetings
lara
51
6.2k
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