Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
大規模 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
640
共通基盤システムの開発について
ttanimichi
5
13k
Other Decks in Technology
See All in Technology
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
610
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
170
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
310
大型犬好きによるPugの紹介
yamanoku
1
150
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
150
Classmethod Company Deck
satoshi7
0
200
go-sqletch
moznion
0
140
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
4
940
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
130
[AWS 秋のクラウドオペレーション祭り 2026]AWS DevOps Agentで変わるリリースと運用対応 ~リリース管理機能と Directed actions のご紹介~
furuton
4
1.2k
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
140
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Paper Plane (Part 1)
katiecoart
PRO
2
11k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
620
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
930
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Mobile First: as difficult as doing things right
swwweet
225
10k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
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