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
【あじわう EC-CUBE 2系】~ Laravel との徹底比較 ~
Search
ranoooooooooooo
December 03, 2025
23
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【あじわう EC-CUBE 2系】~ Laravel との徹底比較 ~
ranoooooooooooo
December 03, 2025
More Decks by ranoooooooooooo
See All by ranoooooooooooo
【AIで爆速UI開発!】Vercel_v0 を使ってみた
ranoooooooooooo
0
50
【あじわう Zend Framework】~ Laravel との徹底比較 ~
ranoooooooooooo
0
200
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
529
40k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
760
HDC tutorial
michielstock
2
960
Designing for Performance
lara
612
70k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Test your architecture with Archunit
thirion
2
2.4k
Exploring anti-patterns in Rails
aemeredith
4
540
Writing Fast Ruby
sferik
630
63k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
Transcript
あじわう EC-CUBE 2系 ~ Laravel との徹底比較 ~ 2025.08.29 株式会社アドシード 平野
雄己 EC-CUBEは株式会社イーシーキューブの商標です
• 国産ECオープンソースの トップランナー • 日本で一番選ばれている ECオープンソース • スモールスタートから大規模 ECまで、個人・企業を問わず、 あらゆる業種で利用
• その圧倒的な実力は、様々な数字が物語っている ※ 公式サイトより EC-CUBE とは? EC-CUBEは株式会社イーシーキューブの商標です
• 初めて EC-CUBE 使う • Laravel などの MVC で例えるとどんな感じだろうか EC-CUBE
あじわう
• バージョンは EC-CUBE 2.17.2-p2 • 言語: PHP(2系はPHP5時代の設計) • FW: 独自フレームワーク
◦ 4系だと Symfony 寄り • テンプレート : Smarty(2系) EC-CUBE スタック
• Controller = LC_Page_* • View = Smarty • Model
= ない(= SC_Query直 or Helper) • ルーティング = ない EC-CUBE 2 MVCで例えると
Laravel との 徹底比較!
• Laravel: public/index.php→routes/web.php→Controller • EC-CUBE2: html/ 配下の *.php がエントリ ◦
いわゆるフロントコントローラはなく、 html/*.php が各ページのエントリ ◦ 例:/products/detail.php で商品詳細 ◦ → Controller相当は LC_Page_Products_Detail が担う ◦ URL直叩き的な! 1) エントリポイント/ルーティング
• Laravel: app/Http/Controllers/* • EC-CUBE2: data/class/pages/**/LC_Page_* ◦ 例:LC_Page_Products_Detail(商品詳細) ◦ 拡張は
class_extends/page_extends/LC_Page_*_Ex.php に置く(コア改変しない流儀) ◦ 各ページごとに、対応するコントローラ! 2) コントローラ層( Controller)
• Laravel: FormRequest / Validator • EC-CUBE2: SC_FormParam(定義・整形)+ SC_CheckError(検証) ◦
SC_FormParam が input 定義・型/桁整形 ◦ SC_CheckError がルール検証(必須、数値、メール等) 3) リクエスト /バリデーション
• Laravel: Eloquent/Query Builder(User::query()->where(...)->get()) • EC-CUBE2: SC_Query(独自ラッパ) ◦ トランザクション: $objQuery->begin()
/ commit() / rollback() ◦ ORMはないので JOIN/集計も手書き(または Helper に委譲) ◦ Eloquent ない!SQL手書き! 4) DBアクセス( Eloquent/QueryBuilder)
• Laravel: resources/views/*.blade.php(return view('x', $vars)) • EC-CUBE2: Smarty .tpl ◦
テンプレパス: ▪ PC:data/Smarty/templates/default/ or html/user_data/packages/default/ ▪ SP:data/Smarty/templates/sphone/ or html/user_data/packages/sphone/ ◦ コントローラ →ビュー変数受け渡し: $this->tpl_xxx に詰める ◦ コンパイルキャッシュ: data/Smarty/templates_c/(Laravelで言う storage/framework/views) 5) ビュー(Blade)
• Laravel: Auth(guards)、Auth::user() • EC-CUBE2: SC_Session / SC_Customer ◦ 会員ログイン状態・会員情報取得は
SC_Customer で 6) セッション /認証
• Laravel は以下を明確に分ける文化 ◦ 「サービス = ビジネスロジック」 ◦ 「ヘルパー =
汎用便利関数」 • EC-CUBE2 は「Helper = ビジネスロジッククラス 」という位置づけ ◦ だから SC_Helper_* は Serviceクラスに近い ◦ 汎用関数的な役割は SC_Utils に集約されている 7) サービスクラス/ヘルパークラス
• Laravel の場合 ◦ サービスクラス (Service / Domain Service) ▪
→ ビジネスロジックを担当(例 : 注文処理、決済処理) ▪ → Controllerはなるべく薄く、ここに業務ルールを寄せる ◦ ヘルパークラス (Helper / Util) ▪ → 日付フォーマット、文字列操作、共通のちょっとした便利関数 ▪ → ビジネスロジックではなく「横断的な小物」 7-1) サービスクラス/ヘルパークラス
• EC-CUBE2 の場合 ◦ SC_Helper_ 系* ▪ → 「業務ロジックをまとめる場所」として使われる ▪
SC_Helper_Purchase : 購入処理の業務ロジック(受注作成、在庫引当、ポイント計算 …) ▪ SC_Helper_Customer : 会員情報の扱い(登録、認証、更新 …) ▪ SC_Helper_DB : DBに関わる共通処理(テーブル存在確認とかマスタ取得) ◦ 小物的な共通関数 ▪ → こっちは SC_Utils(ユーティリティクラス)や関数系に入る ▪ → 文字列整形、日付変換、バリデーション補助など。 ▪ つまり Laravel でいう「ヘルパー」に近いのは SC_Utils の方。 7-2) サービスクラス/ヘルパークラス
• Laravel: return redirect()->route(...) • EC-CUBE2: SC_Response_Ex::sendRedirect($url)、sendHttpStatus() 8) レスポンス /リダイレクト
• Laravel: .env + config/*.php • EC-CUBE2: data/config/config.php(DB等)+ data/cache/mtb_constants.php(定数) ◦
mtb_constants.php は mtb_constants_init.php から生成( Laravelの config/*.php 的な) 9) 設定/環境変数
• Laravel: app/Http/Middleware/*, Container, ServiceProvider • EC-CUBE2: 基本なし。 ◦ 共通前処理は
LC_Page::init()/process() や 共通ヘルパで吸収。 ◦ DIは使わず スタティック /シングルトン が基本。 10) ミドルウェア /DI/ServiceProvider
• Laravel: Events/Listeners、Package • EC-CUBE2: プラグイン機構( SC_Helper_Plugin のフックポイント)+ *_Ex 差し替え
◦ 例:LC_Page_*_action_before などのフックに処理を挿す 11) イベント/リスナー・拡張
• Laravel: database/migrations/*, seeders/* • EC-CUBE2: なし(インストーラや手書き SQL、プラグイン導入 SQLで対応) 12)
マイグレーション /シーディング
• Laravel: storage/logs/laravel.log • EC-CUBE2: data/logs/(プロジェクト設定による)+ trigger_error() ベースのエラー ◦ 例外より戻り値
/配列エラー文化がやや強い 13) ログ/例外
• Laravel: Artisan / Queue / Job • EC-CUBE2: 標準はなし。独自
CLIやバッチPHPを php で叩く運用が一般的 14) コンソール /ジョブ/キュー
Laravel とディレクトリ比較
Laravel と「リクエストの流れ」比較
• Laravel と比べると、原始的というか、不便なところもあるけど • わりとストレートで直感的! EC-CUBE 2 のお味は? © 満田拓也