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
Ginza Rails 1
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Akira Matsuda
September 20, 2018
Programming
6
1.4k
Ginza Rails 1
銀座Rails #1の招待講演のスライド #ginzarails
Akira Matsuda
September 20, 2018
Tweet
Share
More Decks by Akira Matsuda
See All by Akira Matsuda
Ruby x Terminal
a_matsuda
7
580
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
15
7.6k
Hanamiを支える技術 2023 / Asakusa.rb Hanami 2023
a_matsuda
2
770
Rails 7.1をn倍速くした話
a_matsuda
11
13k
RubyKaigi 2022 After Talk
a_matsuda
0
520
Coming Soon…💎 / coming soon
a_matsuda
12
8.4k
Rails Performance Issues and Solutions
a_matsuda
9
39k
Extending Rails for Real World App Development
a_matsuda
9
8k
A RubyKaigi Talk
a_matsuda
8
2.7k
Other Decks in Programming
See All in Programming
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
180
猫の手も借りたい!ので AIエージェント猫を作って社内に放した話 Claude Code × Container Lambda の Slack Bot "DevNeko"
naramomi7
0
240
SourceGeneratorのマーカー属性問題について
htkym
0
140
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
200
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.4k
TROCCOで実現するkintone+BigQueryによるオペレーション改善
ssxota
0
130
Rubyと楽しいをつくる / Creating joy with Ruby
chobishiba
0
200
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
170
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
310
文字コードの話
qnighy
43
17k
The Ralph Wiggum Loop: First Principles of Autonomous Development
sembayui
0
3.7k
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
1
130
Featured
See All Featured
Visualization
eitanlees
150
17k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Site-Speed That Sticks
csswizardry
13
1.1k
WENDY [Excerpt]
tessaabrams
9
36k
New Earth Scene 8
popppiees
1
1.7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Code Review Best Practice
trishagee
74
20k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
130
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ϓϩάϥϛϯάͰΛ ੜͦ͏ʂ
ଓ͖࠙ձͰʂ