Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ginza Rails 1
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Akira Matsuda
September 20, 2018
Programming
1.4k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ginza Rails 1
銀座Rails #1の招待講演のスライド #ginzarails
Akira Matsuda
September 20, 2018
More Decks by Akira Matsuda
See All by Akira Matsuda
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
My daily life on Ruby
a_matsuda
3
800
Ruby x Terminal
a_matsuda
7
900
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
16
8.5k
Hanamiを支える技術 2023 / Asakusa.rb Hanami 2023
a_matsuda
2
920
Rails 7.1をn倍速くした話
a_matsuda
11
14k
RubyKaigi 2022 After Talk
a_matsuda
0
580
Coming Soon…💎 / coming soon
a_matsuda
12
8.7k
Rails Performance Issues and Solutions
a_matsuda
9
40k
Other Decks in Programming
See All in Programming
Next.js: The final boss of Web Performance
guaca
0
380
Kotlinの15年とServer-Side Kotlin
n_takehata
1
190
SODA - FACT BOOK(JP)
sodainc
1
40k
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.2k
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
320
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.5k
ActionController meets Protocol Buffers
sorah
1
780
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
280
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.5k
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
300
Crash Auto Pipelines
veronikapj
1
350
Groovy as a human and AI friendly programming language
paulk
0
180
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Music & Morning Musume
bryan
48
7.5k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
650
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
Believing is Seeing
oripsolob
1
270
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
510
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3.1k
Unsuck your backbone
ammeep
672
58k
Exploring anti-patterns in Rails
aemeredith
4
560
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
Faster Mobile Websites
deanohume
310
32k
Un-Boring Meetings
codingconduct
0
490
Transcript
10.years of Rails Development @a_matsuda ۜ࠲Rails #1
self Twitter: @a_matsuda GitHub: amatsuda
ࣄ ྲྀ͠ͷٕज़ސۀΈ͍ͨͳ
झຯ
झຯ৯า͖
RubyϓϩάϥϚʔ / Railsϓϩά ϥϚʔ
ࠓͷ͓ͳ͠
ͬͺGinza SIX͔ͩΒ Rails 6ͷ
ͬͺGinza SIX͔ͩΒ Rails 6ͷ ͱࢥ͚ͬͨͲɺ ͋Μ·Γ͍ͨ͜͠ͱ͕ͳ͍ͷͰɺ
ʮRailsʹ͍ͭͯͷࣝΛަ͠ɺ ʑͷ։ൃʹཱ͍ͯͯ͜͏ʯ
Rails։ൃऀͷํʁ
10Ҏ্Rails։ൃऀ ͬͯΔํʁ
ͪΐͬͱੲ
10.years.ago
github.com͕Ͱ͖ͨ
Rails͡Ί·ͨ͠
Asakusa.rbୈ1ճmeetupͷ Ռ
ϦϙδτϦ4݄͔ΒGitHubʹஔ͔Ε͚ͯͨͲɺ ύονΔΓ͡Όͳͯ͘BTSʹషΔํࣜͩͬͨ https:/ / rails.lighthouseapp.com/ projects/8994/tickets/623
͋Ε͔Β10
739 Commits ฏۉ5Ͱ1ίϛοτ͙Β͍ͱ͍͏ ͜ͱ͕Θ͔Δ
ࢥ͍ग़ਂ͍ίϛοτͨͪ
always enable pp on the Rails console https:/ /github.com/rails/rails/ commit/d54c7781
always enable pp on the Rails console 2011ͷ࣌Ͱmame͞Μͷ Ruby 2.5ͷ৽ػೳΛઌऔΓ͍ͯ͠
ͨ͜ͱ͕Θ͔Δ
for ... in => .each https:/ /github.com/rails/rails/ commit/22ed6cb7
for ... in => .each Railsਓͨͪ each Λ͏ͷͩ ͱࢥΘΕ͕͚ͪͩͲɺ࣮DHH
for ... in Ͱॻ͍ͯͨʂ
treat fullwidth whitespace as a blank character https:/ /github.com/rails/rails/ commit/9c608603
treat fullwidth whitespace as a blank character String#blank? ͕શ֯εϖʔεͱ ͔ͦͷଞݟ͑ͳ͍จࣈΛશ෦ۭന
ѻ͍͢ΔΑ͏ʹ ͭ·ΓɺString#blank? ͨ͘͠ ͷΦϨΦϨ
Relation.where with no args can be chained with not, like,
and not_like https:/ /github.com/rails/rails/ commit/de75af7a
Relation.where with no args can be chained with not, like,
and not_like 4छྨͷsyntaxΛ࣮ͯ͠ఏҊ ࠓͷ where.not() ͷsyntaxJeremyҊ where.like ͱ͔ where.not_like ࣮͚ͨ͠ͲɺޙʹDHHʹϦόʔτ ͞Εͨ
tyop https:/ /github.com/rails/rails/ commit/c7f1bcd2
tabenai (typo) https:/ /github.com/rails/rails/ commit/407baa2b
tabenai (typo) ͍·ͩʹkamipo͞Μʹݴٴ͞Ε Δίϛοτ……
Space Oddity https:/ /github.com/rails/rails/ commit/d9bdb611
Space Oddity David Bowie͕͘ͳͬͨͷͰ͓ ͔͠ͳεϖʔεΛ୳ͯ͠ίϛοτ
Ruby and Rails ࣗͷओͳकඋൣғRubyͱ Railsͷؒͷ͋ͨΓ͔ͳɺͱࢥͬ ͯΔͷͰɺͪΐͬͱͦ͜Μͷ Λ͠·͢ɻ
kwargs & binding.local_variable_get Rails ͰͬͯΈΔ͜ͱͰ :if ͱ͔ :unless ͱ͍͏ϢʔεέʔεΛൃݟ Ruby
2.2͋ͨΓͰ binding.local_variable_get Λ ಋೖ
frozen_string_literal https:/ /bugs.ruby-lang.org/ issues/8976#change-53900
frozen_string_literal Railsͷ .freeze ࠈΛղফ͢Δ ͨΊʹRubyଆʹಋೖΛఏҊ
Refinements https:/ /github.com/rails/rails/ commit/571f0f32
Refinements Railsʹಋೖ͠(ͯRubiniusͰಈ͔ ͳ͘͠)ͨͷΦϨΦϨ
require_relative ͩ͞͞͞Μʹͦͦͷ͔͞Εͯ RailsͰͬͯΈͨΒόάͬͯͨ Ruby 2.4͙Β͍Ͱमਖ਼
protected Railsք۾ͰͨΒͱޡ༻͞Εଓ ͚͖ͯͨػೳ ΄΅શͯ private ͷؒҧ͍
When you say `protected` in Ruby, you might 99% be
meaning `private` https:/ /github.com/ amatsuda/rails/commit/ 6832343c
࣮ࡍͷίϛοτϥΠϒϥϦ͝ͱʹ rdocͷग़ྗ݁ՌΛ֬ೝ͠ͳ͕Β
Privatize unneededly protected methods in Active Record https:/ /github.com/rails/rails/ commit/5b14129d
ͳͲͳͲ
ηΩϡϦςΟؔ࿈ύον ͍͔ͭ͘ https:/ /github.com/rails/rails/ commit/87eab595 https:/ /github.com/rails/rails/ commit/dfa33fa3 ͱͦͷपล ͳͲͳͲ
௨Βͳ͔ͬͨఏҊͨͪ
Sexier migrations https:/ /github.com/rails/rails/ pull/1163
Sexier migrations migrationͷ t. ΛΔͭ t. ཁΒͳ͍ͱࢥ͏Μ͚ͩͲͳ͊
automatic client side validation with HTML 5 "required" attribute https:/
/github.com/rails/rails/ pull/3590
automatic client side validation with HTML 5 "required" attribute Ϟσϧʹॻ͍ͨvalidationΛΫϥ
ΠΞϯταΠυʹө 2011ʹఏҊ ࣌ΛઌऔΓ͗ͯͯ͢͠ݟૹΒΕ ͨ
Action Args ΞΫγϣϯϝιουʹҾΛ ΔΓग़ͯ͠ͳͯ͘ɺνϟοτͰ ఏҊͨ͠ؾ͕͢Δ DHHʹେےͰؾʹೖͬͯΒ͑ͨ ͷͷɺࡉ͔͍෦ͷ༷͕ંΓ߹ Θͣ٫Լ
օ͞Μ͔Βͷ :+1:ܴ͠·͢
͜Μͳײ͡ͰɺRailsຊମʹಥͬࠐΉҎ֎ʹɺ ϓϥάΠϯͱ࣮ͯ͢͠Δ͜ͱ͋Γ·͢
ϓϥΪϯ։ൃ
i18n_generators
i18n_generators I18nͷϦιʔεΛਓ͕ؒॻ͔ͳ͘ ͯΑ͘ͳΔ࠷ߴʹΜΓͳͭ 10લʹ࡞͚ͬͨͭͩͲɺ Rails 5.2Ͱະͩʹ͑Δ
kaminari
kaminari ϖʔδωʔγϣϯ͢Δͭ Rails 3Ͱಈ͍ͯΔͷ͕ͳ͔ͬͨ ͷͰ࡞ͬͨ M, V, Cͷ3ͭͷϨΠϠʔʹ ·͕ͨΔػೳ
Rails 3ͷ৽ػೳɺRails Engine ͬͯͭͰ࡞ͬͯΈͨͯ͘࡞ͬͨ
ͨͿΜੈքͰ2൪͙Β͍ʹݹ͍ ࣮༻ϨϕϧͷEngine
action_args
action_args DHHʹఏҊ͕௨Βͳ͔͚ͬͨͲɺgemͰ ͝ར༻͍͚ͨͩ·͢ Asakusa.rb໊ٛͰϝϯς શRailsϓϥάΠϯͷதͰҰ൪͖ ͱ͍͏͔ɺ͜Ε͕ೖͬͯͳ͍ͱRailsΞϓ Ϧॻ͚ͳ͍
active_decorator
active_decorator ϔϧύʔॻ͖ͨ͘ͳ͍(ϔϧύʔࢮΜͰ ΄͍͠) ઌߦϓϩμΫτ͕ͼͬ͘Γ͢Δ͙Β͍ ϔϘ͔ͬͨͷͰ༷࣮1000ഒ͙ Β͍ϚγͳͭΛࣗ࡞ OpinionatedͳσβΠϯ
OpinionatedͳσβΠϯ ࠷ۙͷόʔδϣϯͰ݁ہંΕͨͷ Ͱɺ෦తʹഊͨ͠ͱݴ͑Δ
html5_validations ຊମͷఏҊ௨Βͳ͔͚ͬͨͲ gemͰ͝ར༻͍͚ͨͩ·͢ ϓϥάΠϯ࡞Γͷڭࡐʹͪΐ͏Ͳ ͍͍͔
stateful_enum
stateful_enum AR֦ுܥ ΊͪΌΊͪΌ࣮༻త σβΠϯ࣮γϯϓϧͰ៉ྷ (ͩͬͨ)
erd
erd ERਤΛϒϥβ্Ͱΰχϣΰ χϣ͢ΔEngine ඍົʹະ
Rails Engine͍͍ΑͶ
hocus_pocus
hocus_pocus Rails Engineͷݶքʹઓͨ͠ ҙཉ࡞ υΩϡϝϯτ͕օແͳͷͰͨͿΜ ͑ͳ͍ web_consoleΛΠϯεύΠΞͨ͠ͱ ͍͏ྺ࢙తҙٛ
ͦΖͦΖ·ͱΊ
ʮRailsʹ͍ͭͯͷࣝΛަ͠ɺ ʑͷ։ൃʹཱ͍ͯͯ͜͏ʯ
ͱ͍͏͜ͱͰɺʑͷ։ൃͷ Λ͠·ͨ͠
Railsϓϩάϥϛϯάͨͷ͍͠
RailsϓϩάϥϛϯάͰΛ ੜͦ͏ʂ
ଓ͖࠙ձͰʂ