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
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
My daily life on Ruby
a_matsuda
3
540
Ruby x Terminal
a_matsuda
7
730
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
16
8.2k
Hanamiを支える技術 2023 / Asakusa.rb Hanami 2023
a_matsuda
2
830
Rails 7.1をn倍速くした話
a_matsuda
11
14k
RubyKaigi 2022 After Talk
a_matsuda
0
560
Coming Soon…💎 / coming soon
a_matsuda
12
8.6k
Rails Performance Issues and Solutions
a_matsuda
9
40k
Extending Rails for Real World App Development
a_matsuda
9
8.2k
Other Decks in Programming
See All in Programming
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
180
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
170
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
260
これって Effect でできたのでは? / TSKaigi Mashup Kansai #2
susisu
0
230
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
850
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
1
230
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
500
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
290
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
480
Flow は今どうなっているか
mizdra
PRO
0
380
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Building an army of robots
kneath
306
46k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Between Models and Reality
mayunak
4
390
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
570
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Abbi's Birthday
coloredviolet
3
9.3k
The Spectacular Lies of Maps
axbom
PRO
1
910
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
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ϓϩάϥϛϯάͰΛ ੜͦ͏ʂ
ଓ͖࠙ձͰʂ