先週はものすごく寒かったですね。こんにちは nojimage です。
今回は技術的な話はほとんどなくて、自分語りになります。ゴメンナサイ。
私はCakePHP 1.2がリリースされたぐらいからずっと、メインに使用するフレームワークはCakePHPだったのですが、この1年、
SilexとかLaravelとか使ってました
新規開発案件ではCakePHPを使うことがありませんでした。
もちろん保守をしているものはあるので、まったくCakePHPに触れていなかったということはないのですが、CakePHP以外のフレームワークとライブラリを使用することが多かったです。
なぜか
理由は色々あるんですが、主に次のようなものです。
- 規模の大きくないちょっとした案件だった
- composerが使えるようになった
- namespaceが使いたかった
- CakePHPの配列地獄に心が折れた
- Laravelを使うとモテるらしいので使ってみたかった
半分以上適当ですが。:p
一番はそろそろLaravelを触っておかないと、取り残される気がしたからでしょうか。
ともあれ、宿敵Symfony一族(?1)の軍門に降りました。
で、どうだったかというと
Laravel スゲー!!
えぇ、カルチャーショックでしたね。
Eloquent(CakePHPのModelに相当)が良くできています。目的の操作をストレスなく実装できます。
特に、Eager Loading
やAccessor, 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と関わっていきます。