Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
RubyとRailsの何が強いのか
Akinori MUSHA
December 02, 2022
Programming
7
12k
RubyとRailsの何が強いのか
Presented in Qiita Night Lightning Talks on 2022-12-02
https://increments.connpass.com/event/265957/
Akinori MUSHA
December 02, 2022
Tweet
Share
More Decks by Akinori MUSHA
See All by Akinori MUSHA
日本語入力を再考する
knu
1
24
OSSで結果を出す方法
knu
16
9.7k
Rails and JSON API in 2019
knu
0
110
Evolution Of Enumerator
knu
3
4.6k
What's Cooking In Ruby 2.7
knu
1
390
Other Decks in Programming
See All in Programming
レガシーフレームワークからの移行
ug
0
120
ペパカレで入社した私が感じた2つのギャップと向き合い方
kosuke_ito
0
280
OSC大阪 パスワード認証は人類には早すぎる ~ IDaaSを使ったソーシャルログインのすすめ ~
authyasan
7
1.4k
AWS App Runnerがそろそろ本番環境でも使い物になりそう
n1215
PRO
0
1.1k
jq at the Shortcuts
cockscomb
1
420
Git Rebase
bkuhlmann
10
1.2k
Step Functions Distributed Map を使ってみた
codemountains
0
110
データドリブンな組織の不正検知
fkubota
0
250
Gradle build: The time is now
nonews
1
470
Hasura の Relationship と権限管理
karszawa
0
170
子育てとEMと転職と
_atsushisakai
1
410
Use KMM to call the API of the National Tax Agency
akkeylab
0
300
Featured
See All Featured
Embracing the Ebb and Flow
colly
75
3.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
Scaling GitHub
holman
453
140k
Learning to Love Humans: Emotional Interface Design
aarron
263
38k
What's in a price? How to price your products and services
michaelherold
233
9.7k
How STYLIGHT went responsive
nonsquared
89
4.2k
Agile that works and the tools we love
rasmusluckow
320
20k
Support Driven Design
roundedbygravity
88
8.9k
How to name files
jennybc
47
73k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
No one is an island. Learnings from fostering a developers community.
thoeni
12
1.5k
Practical Orchestrator
shlominoach
178
8.9k
Transcript
RubyͱRailsͷԿ͕ڧ͍ͷ͔ ऀ থل
Software Engineer, Senior Expert at WED Inc. ✓Ruby Committer /
ex. FreeBSD Committer ✓Huginn (⭐37k) Co-maintainer ✓Hammerspoon (⭐9.8k) Contributor Writes Production Code In Ruby / TypeScript / Go / Lua ऀ থل (Akinori Musha) @knu on GitHub and Twitter
తʹݴ͏ͱɺ ͱͯͭͳ͍ॊೈ͞Λ͍࣋ͬͯΔ RubyͱRailsͷڧΈͱ ΕͯΈΔͱ࿀͘͠ͳΔڧΈΛৼΓฦΔ
Railsࠓੜ࢈ੑͷ࠷దղͷͻͱͭ • ϏϡʔΛ࣋ͨͳ͍APIαʔόͰ͋ͬͯڧΈ͕ͨ͘͞Μ͋Δ • Ή͠ΖϑϩϯτΤϯυJS/TSʹ͍ͤͨ • RubyͱRailsϏδωεϩδοΫΛॻ͘ͷʹదͨ͠ݴޠͱϑϨʔϜϫʔΫ • جຊޠኮ͕๛ͰɺυϝΠϯʹదͨ͠৽͍͠ޠኮΛ૿͢ͷಘҙ •
ΓͱΓ͢ΔΦϒδΣΫτ͕΄΅ActiveRecord ModelΠϯελϯεRelationΦϒδΣΫτʹدΔͷ Ͱɺ΄΅self-documented, ݟΔ࣮͕ܾ·͍ͬͯΔͷͰಈతܕ͚ͷऑΈཱ͕ͪͮΒ͍ • ActiveRecordͷྫ֎ͱrescue_fromʹΑΔิػߏ͕RESTͱ͔ͬͪΓϋϚ͍ͬͯΔ
ActiveRecord͕ڧ͍ • CRUD: ܕมόϦσʔγϣϯΛඋ • ݅ݕࡧɺJOINɺूܭɺࢥ͍ͷ·· • ·ͱͳSQLΛ࡞ͬͯ͘ΕΔ • DRYͷపఈ
• DBͷεΩʔϚͱstructఆٛΛೋॏཧ͠ͳ͍͍ͯ͘ • defaultಡΜͰ͘ΕΔ
ActiveRecord Migration͕ڧ͍ • ฒߦ։ൃॱෆಉͷσϓϩΠʹ͑Δόʔδϣϯཧ • ݸʑͷϚΠάϨʔγϣϯʹ͍ͭͯద༻ঢ়ଶ͕ཧ͞Ε͍ͯͯɺݸผʹup/downՄೳ • DDLDMLྲྀͤΔ • ϏϡʔϑΝϯΫγϣϯͷྨՃgemͰεΩʔϚͷҰ෦ͱͯ͠ཧՄೳ
• σʔλϕʔεΤϯδϯΛ͍ͤΔʂ GoͰۤ࿑͠·ͨ͠😝
Sidekiq͕ڧ͍ • खܰʹδϣϒΛ࡞͙ͬͯ͑͢Δ • PubSubͩͱTerraformͰτϐοΫΛ৽ઃͯ͠ϫʔΧʔʹsubscriberΛ༻ҙͯ͠… • ߴͳྲྀྔ੍ޚॏෳɾഉଞ੍ޚ͕ඞཁʹͳͬͯ༰қʹରԠ • Sidekiq Pro/EnterpriseΛങ͍͍ͬͯ͠ɺOSSͷιϦϡʔγϣϯ๛
RSpec͕ڧ͍ • ͳΜͰϞοΫͰ͖Δ • ΠϯλϑΣʔεΛఆٛͨ͠Γ͠ͳ͕ͯͯ͘͢Test Ready • σʔλϕʔεͷΫϦΞͳͲͥΜͿRails+RSpecଆͰ໘Λݟͯ͘ΕΔ • E2EςετʢFeature
specʣඪ४උ
Rails console͕ڧ͍ • ௐࠪσʔλෆ߹ͷۓٸमਖ਼ɺόονॲཧͷϦϋʔαϧͳͲʹେ׆༂ • ίϯύΠϧσϓϩΠͳ͠ʹɺҙͷϏδωεϩδοΫΛݺͼग़ͤΔ • όονॲཧͷྨ֎෦αʔϏε࿈ܞଟ͘ɺϫϯγϣοτͩͬͨΓͯ͠ɺ೦ೖΓͳςε τΛॻ͍͔ͯΒ࣮͢Δίετ͕·ͬͨ͘ݟ߹Θͳ͘ײ͡Δ͜ͱଟ͍ •
ͦΜͳͱ͖ɺ։ൃڥεςʔδϯάڥͰRails console͔Β෮ࢼߦͯ֬͠ೝͰ͖Δ͜ ͱେ͖ͳث ͜Εຊʹݟա͕ͪ͝͠😳
తʹݴ͏ͱɺ ։ൃମݧͰޙΕΛऔ͍ͬͯΔ RubyͱRailsͷऑΈͱ ΕͯΈΔͱΓͨ͘ͳ͘ऑΈΛৼΓฦΔ
Rubyͷ։ൃମݧϋοϐʔͳΜ͡Όͳ͍ͷʁ 👍 ҙਤΛࣗ༝ʹදݱͰ͖ΔɺറΓ͕গͳ͍ • ݴޠͷ੍ճආͷςΫχοΫ͕ཁΒͳ͍ • ʮͨΊͷʯσβΠϯύλʔϯɺΠϯλʔϑΣʔε͕ͳ͍ 👎 ੍Λදݱɺڧ੍͢Δޠኮʹ͍͠ •
ಡΈखʹͱͬͯͷώϯτɺΠϯλϓϦλʹͱͬͯͷώϯτ • ॻ͖खͷϛεࢭ
ॳΊͯ͞ΘΔਓʹ͘͞͠… • ϕʮRubyͰ͜Μͳ෩ʹॻ͚ΔΑʯ • ॳʮ͍͢͝ɺ؆ܿͰ͔͍͍ͬ͜Ͱ͢Ͷʂʯ • ॳʮʢͰଞͷݴޠʹԠ༻ޮ͔ͳ͍ࣝͩ…ʣʯ • ॳʮͥΜͥΜิީิ͕ग़ͯ͜ͳ͍Μ͚ͩͲΈͳ͞ΜͲ͏ͬͯઃఆͯ͠ΔΜͰ͔͢ʁʯ •
ϕʮ͍͢͝ϓϥάΠϯઃఆͱ͔ಛʹͳͯ͘ɺΈΜͳۭͰॻ͍ͯ·͢… ͦΕ͔RubyMineͬͯΈΔʁʯ • ॳʮʢࢧԉͳ͠Ͱॻ͘ͷ·͔͡…ʣʯ TypeScript/Go/KotlinݴΘ͕ͣͳɺPythonPHPܕΞ ϊςʔγϣϯΛॻ͘͠ఆٛδϟϯϓΛΜΜ͏ͷ͕;ͭ͏😇
LinterΛࣂ͍׳Β͢ͷ͕େม • RubocopͷσϑΥϧτઃఆ͕ͭΒ͍ • ίϛϡχςΟʔϕʔεͱ͍͏ͷ͕ۂऀͰɺͤͱݴΘΕΔ͕ཧ༝͕ෆ໌ͳͷͰ࠷ॳ͔Β ܗ֚Խ͍ͯ͠Δ • ࣗಈϑΥʔϚολʔͱͯ͠ಈ࡞͕͗͢Δ • อଘ࣌ࣗಈܗʹͯ͠ؾܰʹηʔϒͰܗɺͱ͍͕ͨ͠ඵֻ͔ΔͷͰମݧ͕ྑ͘ͳ͍
ܕ͚ରԠΛͬͱ͕ΜΓ͍ͨ • ܕݱϓϩάϥϚʔͷϝϯλϧϞσϧʹ͍ࠜͯ͟͠Δ • Ή͠ΖίʔυͷҙਤͷҰ෦ͱͯ͠ܕΛॻ͖͍ͨͰ͟͝Δ • ผϑΝΠϧཧ͠ΜͲ͍.rbs (.rbi) • ΤσΟλͰΠϯϥΠϯදࣔɾฤूͰ͖Ε؇ʁ
• SorbetʹΑΔΞϊςʔγϣϯDRYʹͳ͍ͬͯͳ͍ • ϝιουͷԾҾɺಛʹΩʔϫʔυҾͷೋॻ͖͕ͩΔ͍
ͦΕͰ… RubyͱRailsڧ͍ มԽΛแ༰͢Δྗ
͜Ε͕మ൘ߏ✨ RailsϞϊϦεͷपΓʹϚΠΫϩαʔϏε • ߴϨΠϠʔΛ୲͏ʹ;͞Θ͍͠ॊೈੑ • GoͰ֎෦γεςϜ࿈ܞόοΫΤϯυΛॻ͍ͯRails͔ΒgRPC • PythonͰը૾ॲཧαʔϏεΛॻ͍ͯSidekiq͔Β࣮ߦ • LPಛઃαΠτNuxt.jsFreshͰָ͘͠ॻ͘
https://wed.company/recruit WED Inc. is Hiring! WEDҰॹʹ։ൃ͢ΔؒΛ୳͍ͯ͠·͢ʂ