1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Drupal と EC-CUBE を触って気づいた——みんな Symfony に乗っかってる!?

Posted at

初めに

  • Drupal 10 も EC-CUBE 4 も中身は Symfony。
  • Symfony は部品(=コンポーネント)を自由に組み合わせられる “レゴ” みたいな PHP フレームワーク。
  • いま PHP 製プロダクトの “黒子” として存在感が急上昇中。
  • 「CMS も EC も作れるなら、次は自分のサービスで使ってみたくない?」というお誘い記事です。

1. この記事を書いたきっかけ

最近、業務で Drupal(CMS)と EC-CUBE(EC パッケージ)を並行して触ることになりました。
――で、設定ファイルを開いてみたらまったく同じディレクトリ階層・ほぼ同じ書き方のコードが並んでいる……。

「あれ? これって同じフレームワーク上に立ってない?」

調べてみると どちらも Symfony の上に成り立っている と判明。
しかも Laravel, phpMyAdmin, Composer CLI までもが Symfony コンポーネントを使っていると知り、軽く衝撃を受けました。

「Symfony きてるんじゃね?」——このワクワクを、Qiita レベルの言葉に落として共有します。
難しい専門用語は極力かみ砕くので、PHP 初心者の方でも大丈夫!


2. Symfony ってそもそも何?

一言で
PHP アプリを作るための フレームワーク部品置き場

2.1 フレームワーク編

  • MVC(モデル・ビュー・コントローラ)の箱をまるっと提供
  • ルーティング、テンプレート、フォーム、メール送信など “アプリに必須な機能” が最初から揃う
  • LTS(長期サポート)版があるので、エンタープライズ用途でも長く安心

2.2 コンポーネント編

  • 60 以上の小さなライブラリに分解されており、1 個だけ インストールしても OK
    • 例:symfony/console——CLI ツールをサクッと作れる
    • 例:symfony/validator——バリデーションだけ差し込みたい時に便利
  • だから Laravel や EC-CUBE みたいな「別フレームワーク」も、足りない所を Symfony の部品で補っている

3. Drupal・EC-CUBE が採用する理由

観点 つらみ Symfony 採用でどう変わる?
開発体験 OSS なのに独自実装の沼にハマる 部品が共通 → ドキュメント・記事が多い
エコシステム プラグイン同士が競合しやすい コーディング規約が統一され衝突しにくい
バージョンアップ CMS 側で脆弱性パッチを全部背負う Symfony の LTS を取り込むだけで最新に近づく

要するに
“車輪の再発明” をやめて、みんなで メンテしやすい共通部品 を使おうぜ、という流れ。


4. 「Symfony きてる」と感じる 3 つのポイント

  1. 採用実績がめちゃ増えた
    • CMS:Drupal、TYPO3
    • EC:EC-CUBE
    • SaaS:Shopware、OroCRM
    • フレームワーク:Laravel も内部で多数利用
  2. Composer install ひとコマンドで触れちゃう
    • composer create-project symfony/skeleton myapp ← 10 秒で “Hello World”
  3. PHP 8.3 時代に合わせたモダン設計
    • 属性(アノテーション)の標準対応
    • HTTP/2, Messenger (キュー) など “いまどき要件” も素でカバー

5. 具体例:Drupal と EC-CUBE、ここが同じ!

5.1 ルーティング定義

# routes.yaml(一部)
home:
  path: /
  controller: App\Controller\HomeController::index

「YAML で URL とコントローラをつなぐ」スタイルは両者そっくり。
だから片方を覚えるともう片方もすぐ読める。

5.2 サービス定義(DI コンテナ)

services:
  _defaults:
    autowire: true
    autoconfigure: true

依存性注入(DI)コンテナも Symfony 製なので書き方は統一。
「外部 API クライアントを差し替える」みたいなカスタマイズが CMS/EC 問わず同じ手順で済む!

6. もし Symfony を触ってみたくなったら

  1. まずは公式チュートリアル
    https://symfony.com/doc/current/index.html(英語でも読みやすい)
  2. コンポーネントだけ試す
    CLI ツールなら symfony/console を composer require してみる
  3. 小さな REST API を作ってみる
    ルーティング → コントローラ → JSON レスポンス、ここまで 30 行で動く
  4. 本格的にやるなら Docker
    symfony-cli が自動でコンテナ立ち上げまで面倒を見てくれる

Tip:
既に Drupal / EC-CUBE をいじっている人は 「設定を読む」こと自体が最高の教材。
「へぇ、このフックは Symfony Event で飛ばしてるんだ」みたいな発見が山ほどあります。

7. まとめ

• Drupal と EC-CUBE の共通点 を辿ると Symfony にたどり着く
• Symfony は フレームワーク でもあり 部品セット でもある
• OSS 界隈で「裏方としての採用」が急増 → 安定性と学習コスト削減が魅力
• CMS/EC のカスタマイズ案件が多い日本こそ、Symfony を知っておくと得する場面が多い

8. おわりに

感想:
Drupal と EC-CUBE、別々のプロジェクトなのに「設定読めばだいたい理解できる」状態は本当に快感でした。
“フレームワーク選び” で迷うとき、「その先に Symfony があるか?」 をチェックリストに入れてみてはいかがでしょう。

ここまで読んで「Symfony いいかも」と思ったら、ぜひコメントで盛り上がりましょう!
「〇〇でも使われてるよ」などの情報もお待ちしています 🙌

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?