どうしてCakePHPを選ぶのか / CakePHP Advent Calendar 2014

標準

この投稿はCakePHP Advent Calendar 2014の8日目の記事です。

先週はものすごく寒かったですね。こんにちは nojimage です。

今回は技術的な話はほとんどなくて、自分語りになります。ゴメンナサイ。

私はCakePHP 1.2がリリースされたぐらいからずっと、メインに使用するフレームワークはCakePHPだったのですが、この1年、

SilexとかLaravelとか使ってました

新規開発案件ではCakePHPを使うことがありませんでした。
もちろん保守をしているものはあるので、まったくCakePHPに触れていなかったということはないのですが、CakePHP以外のフレームワークとライブラリを使用することが多かったです。

なぜか

理由は色々あるんですが、主に次のようなものです。

  • 規模の大きくないちょっとした案件だった
  • composerが使えるようになった
  • namespaceが使いたかった
  • CakePHPの配列地獄に心が折れた
  • Laravelを使うとモテるらしいので使ってみたかった

半分以上適当ですが。:p

一番はそろそろLaravelを触っておかないと、取り残される気がしたからでしょうか。

ともあれ、宿敵Symfony一族(?1)の軍門に降りました。

で、どうだったかというと

Laravel スゲー!!

えぇ、カルチャーショックでしたね。

Eloquent(CakePHPのModelに相当)が良くできています。目的の操作をストレスなく実装できます。
特に、Eager LoadingAccessor, Mutator、簡単にJSONに変換できる点などが気に入りました。

リクエストのルーティングは、ちょっと面倒くさいのですが柔軟に設定できるのがいいですね。

また、標準でキュー&ジョブワーカーの仕組みがあり、非同期処理が簡単に実装できるのも魅力です。

標準のValidation機能はちょっと貧弱で使いづらいかったのですが、拡張機能を入れることにより解決しました。

さすが今一番人気のフレームワークワークだけあって、だいたい欲しいと思う機能は既に誰かが拡張を作っています。

Web職人のためのフレームワークを謳っているだけあって非常に使いやすかったです。

あと、某カートシステムのDB周りが気にくわなかったので、LaravelのEloquent部分を使って書き直してアクセスするようにしたりしました。ORMだけ導入することもできて便利ですね。

それでも!

次のプロジェクトはCakePHPで開発しようと考えています。もうすぐ正式リリースされるであろうバージョン3ベースですね。

なぜでしょう。

  • Laravelは自由すぎた

いろんなことが自由にできるので、ちょっと気を抜くとコードがとっちらかり気味になってしまいました。
慣れの問題なんでしょうが、長年Bakerとしてやってきた身からするとやっぱりある程度決まりがあって欲しいんです。

  • CakePHPもORM部分が変わる

長年、Cakeの弱点だった配列地獄が、CakePHP 3からは改善されます。

Models — CakePHP Cookbook 3.x documentation

Table, Entitiyという組み合わせで、データを取得して処理することができるようになります。オブジェクト万歳!

  • サポート期間が長い・大きなアップデートが頻繁ではない

これが大きいですね。
1.3系は4年前にリリースされましたが未だにバグやセキュリティの修正がされています。2

今回、3になることでだいぶ変わりますが、それでも今後数年は使えることを考えると新規プロジェクトで導入する価値はあります。業務で作ったシステムは数年動くのが当たり前なので、サポート期間が長いことは嬉しいことなんです。

  • 過去の資産

これまでCakePHPで開発してきて、いろんなノウハウとプラグインが溜まっているので、やっぱりこれらを捨てるのはもったいないと。
プラグインの移行(特にデータソース系)で死亡しそうですが…

そんなこんなで、nojimageはこれからもCakePHPと関わっていきます。

やっぱりCakePHPが好き!

この投稿はCakePHP Advent Calendar 2014の8日目の記事でした。

  1. LaravelはSymfonyのコンポーネントを使っていますが、全然別物なので適切な表現とはいえませんね。 
  2. 3.0が正式リリースされたらサポート終了となるそうです。 

コメントを残す

Page optimized by WP Minify WordPress Plugin