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
大規模 Padrino アプリケーション Rails 移行 / Migrating to Ra...
Search
Tsukuru Tanimichi
April 26, 2016
Technology
13k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大規模 Padrino アプリケーション Rails 移行 / Migrating to Rails from Padrino
Tsukuru Tanimichi
April 26, 2016
More Decks by Tsukuru Tanimichi
See All by Tsukuru Tanimichi
react-rails で SPA, SSR を実現する / react-rails-spa-ssr
ttanimichi
2
1.2k
マネーフォワードにおけるウェブメディア高速化の取り組み / yamagoya2018
ttanimichi
7
2.4k
WebSocket はどれくらい通じるのかの統計 / websocket-connectivity-survey
ttanimichi
0
630
共通基盤システムの開発について
ttanimichi
5
13k
Other Decks in Technology
See All in Technology
はじめてのWDM
miyukichi_ospf
1
120
ゼロをイチにする仕事が終わったあと
smasato
0
300
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
150
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
1
210
そのハーネス、本当に境界になっていますか? AIエージェント時代の実行環境設計【MEGU-Meet #4】
cscengineer
PRO
0
120
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
1.5k
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
3
790
金融の未来を考える / Thinking About the Future of Finance
ks91
PRO
0
150
背中から、背中へ /paying forward to community
naitosatoshi
0
220
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
1
200
AI Driven AI Governance
pict3
0
130
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
260
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Documentation Writing (for coders)
carmenintech
77
5.4k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
450
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
310
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
410
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
250
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.6k
Transcript
େن Padrino ΞϓϦέʔγϣϯ Rails Ҡߦ 2016/04/27 @ttanimichi (C) Tsukuru Tanimichi,
2016 1
ࣗݾհ • @ttanimichi • 20146݄ʙ גࣜձࣾ Aiming • ڞ௨ج൫ͷ։ൃΛ͍ͯͨ͠ •
࠷ۙήʔϜλΠτϧʹҟಈ • https://github.com/ttanimichi •
[email protected]
(C) Tsukuru Tanimichi, 2016 2
ݬౝઓهάϦϑΥϯ (C) Tsukuru Tanimichi, 2016 3
ڥ • Ruby 2.0 • Padrino 0.11 • MySQL 5.5
• nginx • Redis (C) Tsukuru Tanimichi, 2016 4
rake stats % bin/rake stats +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines
| LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 2984 | 2566 | 50 | 302 | 6 | 6 | | Helpers | 86 | 86 | 0 | 1 | 0 | 84 | | Models | 15810 | 13029 | 422 | 1513 | 3 | 6 | | Mailers | 0 | 0 | 0 | 0 | 0 | 0 | | Javascripts | 11577 | 7916 | 1 | 809 | 809 | 7 | | Libraries | 19329 | 13621 | 693 | 1754 | 2 | 5 | | Controller specs | 223 | 181 | 0 | 2 | 0 | 88 | | Lib specs | 4404 | 3603 | 6 | 6 | 1 | 598 | | Model specs | 31852 | 26255 | 0 | 19 | 0 | 1379 | | Request specs | 15 | 13 | 0 | 0 | 0 | 0 | | Service specs | 24027 | 19808 | 3 | 37 | 12 | 533 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 110307 | 87078 | 1175 | 4443 | 3 | 17 | +----------------------+-------+-------+---------+---------+-----+-------+ Code LOC: 37218 Test LOC: 49860 Code to Test Ratio: 1:1.3 (C) Tsukuru Tanimichi, 2016 5
rake stats % bin/rake stats +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines
| LOC | Classes | Methods | M/C | LOC/M | ... | Models | 15810 | 13029 | 422 | 1513 | 3 | 6 | ... +----------------------+-------+-------+---------+---------+-----+-------+ 400 Models (C) Tsukuru Tanimichi, 2016 6
(C) Tsukuru Tanimichi, 2016 7
rake stats • COOKPAD Ͱ 1500 Models • lib/ ҎԼʹ
Model ͬΆ͍Ϋϥε͕100ݸ͘ Β͍͋ͬͨ • ͋ΘͤΔͱ 500 Models ͘Β͍ • COOKPAD ͷ 1/3 ͘Β͍ʁʁ (C) Tsukuru Tanimichi, 2016 8
ੈք࠷େͷ Padrino ΞϓϦέʔγϣϯʁʁ (C) Tsukuru Tanimichi, 2016 9
ͭΒΈ • rake spec ʹ1͔͔࣌ؒΔ • autoload ͬͯͳ͔ͬͨ • ىಈʹ2͘Β͍͔͔Δ
• spec Ұ࣮݅ߦ͢Δ͚ͩͰ2 • AR ͷΩϟογϡ͕ޮ͍ͯͳ͍ͬΆ͍ʁʁ (C) Tsukuru Tanimichi, 2016 10
ґଘϥΠϒϥϦ • activerecord 3.2 • activesupport 3.2 ͭ·Γɺ΄ͱΜͲ Rails3 (C)
Tsukuru Tanimichi, 2016 11
͜Ε Rails ʹҠߦͰ͖ΔΜ͡ΌͶʁ (C) Tsukuru Tanimichi, 2016 12
͍ͭΧοͱͳͬͯ... (C) Tsukuru Tanimichi, 2016 13
(C) Tsukuru Tanimichi, 2016 14
Ҡߦίετ • Padrino ͔Β Rails ͷҠߦ • activerecord ͷόʔδϣϯΛ্͛Δ •
activesupport ͷόʔδϣϯΛ্͛Δ • ͍ͭͰʹ Ruby ͷόʔδϣϯ্͛Δ (C) Tsukuru Tanimichi, 2016 15
ํ • ·ͣ Rails4 Ͱಈ͔͢͜ͱ͚ͩߟ͑Δ • ʮ͍ͭͰʹϦϑΝΫλϦϯάʯೝΊͳ͍ • ػցతʹҠߦ࡞ۀ͚ͩ͢Δ •
ϦϑΝΫλϦϯάࡉ͔͍վળҠߦޙʹ͍͘ ΒͰͰ͖Δ (C) Tsukuru Tanimichi, 2016 16
ํ • RailsͷҠߦͱ͍͏ʮେ͖͍ʯ • ಉ࣌ʹϦϑΝΫλϦϯά͠͡ΊΔͱӬ ԕʹҠߦ࡞ۀ͕ྃ͠ͳ͍ • Ϗδωεଆ͕ΩϨΔ → Ҡߦ͕ࣦഊ
• ͱʹ͔͘ػցతʹҠߦ͢Δ • Կߟ͑ͣʹ spec ͕ίέ͍ͯΔॴΛ͢ (C) Tsukuru Tanimichi, 2016 17
Ҡߦखॱ • ͱʹ͔͘·ͣσΟϨΫτϦߏΛ࡞Δ • Padrino ଆ͔Β Models ͳͲΛҠ͍ͯ͘͠ • bundle
exec rspec ͕ಈ͘ͱ͜Ζ·ͰҰਓ Ͱͬͯ͘ • rails new • rails generate rspec:install • database.yml ͷઃఆͱ͔ (C) Tsukuru Tanimichi, 2016 18
(C) Tsukuru Tanimichi, 2016 19
(C) Tsukuru Tanimichi, 2016 20
bundle exec rspec ಈ͍ͨ • ͔͜͜Βઌϝϯόʔʹ࡞ۀΛৼΔ • ͱʹ͔͘ spec ͑͞ಈ͚ۀͰ͖Δ
• ୲ͯ͠ spec ͕ίέ͍ͯΔ෦Λमਖ਼ (C) Tsukuru Tanimichi, 2016 21
େʹίέΔ spec (C) Tsukuru Tanimichi, 2016 22
(C) Tsukuru Tanimichi, 2016 23
େʹίέΔ spec • ͲΜ͚ͩίέͯͯ spec ͕ಈ͖͑͢͞Εम ਖ਼ϝϯόʔʹ୲Ͱ͖Δ • Active Record
3 ͱ 4 ͷඇޓͱ͔ • ઃఆ·ΘΓͷ • padrino helper ͷґଘ • ಉ໊͡લͷϝιουΛఆٛͯ͠ rails ͷ helper ΞΫηε͢ΔΑ͏मਖ਼ (C) Tsukuru Tanimichi, 2016 24
Ͱ͖·ͨ͠ % rails -v Rails 4.2.4 % ruby -v ruby
2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin14] ຊ൪ڥͰطʹಈ͍ͯ·͢ (C) Tsukuru Tanimichi, 2016 25
ৼΓฦΓ (C) Tsukuru Tanimichi, 2016 26
(C) Tsukuru Tanimichi, 2016 27
ৼΓฦΓ • Ҡߦίετʹݟ߹͏͚ͩͷϝϦοτ͕͋ͬͨͷ ͔ͳ͔ͬͨͷ͔ʮ͔Βͳ͍ʯ • ϝϯόʔͷ։ൃʹର͢ΔϞνϕʔγϣϯΞοϓ • େֻ͔ΓͳҠߦʹ༐ؾͱܾஅྗ͕ඞཁ • Padrino
ͷ··࠷ݶͷվળ͚ͩ͢Δͬͯબ ࢶΞϦ͔ͩͬͨ (C) Tsukuru Tanimichi, 2016 28
͓·͚ (C) Tsukuru Tanimichi, 2016 29
ཧը໘ • ຊମͱཧը໘ผΞϓϦέʔγϣϯ • ཧπʔϧଆຊମଆͷ Model Λࢀর • ཧπʔϧଆҰ୴ Padrino
ͷ··ͨ͠ • Ұ෦ͷ Model ͕ Rails.env ʹґଘʢྑ͘ͳ͍ʣ • Padrino ͷ߹ Padrino.env Λࢀর͍ͨ͠ (C) Tsukuru Tanimichi, 2016 30
Rails = Padrino ΩλίϨ Rails = Padrino Rails.env #=> "development"
ॳظԽ࣌ʹ Rails ͱ͍͏ఆΛఆٛ ※ ωλͰ͢ ※ ཧը໘ Rails ͷҠߦ࡞ۀΛࠓ͍ͯ͠ΔΑ ※ ཧը໘ͷ Rails Ҡߦ΄ͱΜͲྃ (C) Tsukuru Tanimichi, 2016 31
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ (C) Tsukuru Tanimichi, 2016 32