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
美しいコードを書くためにF#を学んでみた話
yud0uhu
1
410
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.1k
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
250
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
2
3.7k
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
180
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
150
ポストモーテム! DDoSからサイトは守れた。 でもビジネスは守れなかった。
bengo4com
0
2.8k
SRE Lounge Hiroshimaへの招待
grimoh
0
640
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
1
110
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.7k
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
3
3.7k
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
280
Featured
See All Featured
Navigating Team Friction
lara
192
16k
Ethics towards AI in product and experience design
skipperchong
2
330
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
690
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
310
Discover your Explorer Soul
emna__ayadi
2
1.2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Why Our Code Smells
bkeepers
PRO
340
58k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Balancing Empowerment & Direction
lara
6
1.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
360
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