フレームワーク選定:Laravel vs Symfony(DDDの場合)

公開日:2019-07-07
最終更新:2019-07-14

フレームワークを選定する前段階として、アプリケーションの形態と設計・開発手法を決めました。それを踏まえてフレームワークを選定したいと思います。

  • アプリケーションの形態:SPA + API
  • 設計・開発手法:ドメイン駆動設計(DDD)

フレームワークの分野

以下の3つの分野のフレームワークを決めていきます。

  • フロンエンド JavaScript フレームワーク
  • CSS フレームワーク
  • バックエンド Web フレームワーク

フロンエンド JavaScript フレームワーク

これは迷うこと無く Vue.js を採用することに決まりました。理由は以下の通り

  • Laravel を今後も多くの案件で使うと思われる。Laravel はフロントエンドにVue.js を推している。
  • 社内の他のチームも Vue.js を採用しており、スキルの横展開が可能。

CSS フレームワーク

これは色々調査しましたが Bootstrap 4 を採用することに決まりました。

  • 今までに使った実績があり慣れ親しんでいる
  • テンプレートを購入して使用する場合、Bootstrap ベースのものが圧倒的に多い

バックエンド Web フレームワーク

そして、いよいよ本丸の Web フレームワークの選定です。PHPで開発することは決まっていたので、Laravel か Symfony から選択することにしました。選択の最大のポイントはDDD開発に向いているかどうかです。

本来、フレームワークはドメイン層に関心がなくDDDに制約を与えないはずです。一方でDDDはドメイン層以外には具体的な実装方法を提示していません。DDDをやるのにどのフレームワークを使ってもいいのでは?と思うのですが、実際にはそうではありませんでした。フレームワークが採用しているORMによってDDDが出来るものと困難なものがあります。

FW ORM パターン 調査結果
Laravel Eloquant Active Record 設定が無く簡単
モデルで constructor や public, private といったアクセス修飾子が自由に使えない
不変条件の実装ができずDDDに不向き
Symfony Doctrine Data Mapper DBのテーブルカラムとモデル属性のマッピング設定が必要
モデルで constructor や public, private といったアクセス修飾子が自由に使える
不変条件の実装ができてDDDに向いている

上記表の結果からPHPでのDDD案件ではSymfonyを採用することに決定しました。

我々はLaravelをとても気に入っていたので、なかなかLaravelをあきらめる気にはなれませんでした。しかし、色々と調べたのですが良い方法は見つかりませんでした。Active Record でもうまくDDDやっているという方がいましたら、ぜひ、知見をお聞かせください。

記事が少しでもいいなと思ったらクラップを送ってみよう!
5
+1
DDDやアジャイルに挑戦する記録

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする