読者です 読者をやめる 読者になる 読者になる

SideCI Blog

自動コードレビューサービスSideCIを提供している株式会社アクトキャットのコーポレートブログです。



Railsから見たCakePHP3

Ruby PHP Other

Rails好きな私の視点でCakePHP3系をざくっと紹介します!CakePHPは嫌いじゃないので!Codeigniter好きだけど嫌いです。(Codeigniterで外注なんてしようものならコードがファックな感じになっちゃうことが多々あるよね、だってルールがないんだもん!学習コストの低さは圧倒的に素晴らしいんだけどね!)

CakePHPRuby on Rails派生系と言われる、MVC構造のウェブアプリケーション用Frameworkです。PHP言語で開発されています。

Rails37signals(「強いチームはオフィスを捨てる」などを執筆している先進企業)が主になって開発しているFrameworkです。歴史は結構古く、2004年からあります。もっとも、私が初めてRailsを使ったのは2系。たぶん2.1~2.3あたりでした。

この頃Railsの主だって紹介される特徴は主に下記の3つだったと思います。

  • ActiveRecordなどによるSQLを使用することなしでのアプリケーション構築
  • rubygems(Gemfile)で配布されるたくさんのライブラリ
  • scaffold自動生成

残念ながらscaffoldはそれほど使う機会はないですが、結構初めての時だと、ある程度ページが自動生成されて、「おーっ!」って感動した気がします。

CakePHPRailsと似た思想でPHP言語向けに作られました。2005年スタートのFrameworkです。

  • RailsライクなMVC構造
  • たくさんのCakePHP用ライブラリ
  • scaffoldもありますが、あまり多用はしない(RoR同様)と思う

実際の所、登場時からRails風だと言われてはいますが、2014年現在でも全然Rails風じゃないと思っています。だって、DBのマイグレーションも標準装備じゃないですし、ライブラリ管理も標準装備じゃありません。サーバーだってApacheとか起動しないといけない(逆に言うと、Apacheで動く)し。 RailsならDBは必ずマイグレーションファイルで管理されているし、ライブラリはGemfile及びBundlerで管理されている。サーバの起動はrails sコマンドで一発。 CakePHPActiveRecord的な物は、返ってくる値がModelじゃなかったりとか。「風」なだけで全然Railsじゃありません(笑)

しかし、Railsほどルールは多くないので、学習コストもRailsより当然低く、使いやすいFrameworkです。PHPの方がエンジニアの母数も多く、Rubyより圧倒的メジャー。

そのCakePHPがそろそろ、3系がリリースされます。 CakePHP 3.0 Roadmap

ActiveRecord的なORM(オーアールマッパー)がRails風に、ArrayやHashじゃなくてModel(オブジェクト)が返ってくるようになります。ActiveRecordのカラムへのアクセスも、今までの2系だと、使わないタイミングでもSQLが発行されてDBにアクセスしてましたが、実際に使うタイミングで呼び出される遅延実行になります。データベースのマイグレーションもほぼ標準、ライブラリのバージョン管理(Composer)も標準になります。(scaffoldはなくなるかも)

正直な所、Railsを普段使ってるエンジニアから見ると、CakePHP3系には全く真新しい点はありません。Railsが当初から持っていた機能を備えるようになったように見える感じです。しかしながら、古いPHP言語のサポートを捨て、新しいスタイルの開発手法をFrameworkの使い手に強制させ、大きな進歩を手に入れようとしているように見えます。

Rails4系は3系、2系と比べてそれほど劇的な進歩があったわけじゃありません。turbolinksなんて一部の人しか使いこなせない、使う必要がありません。Frameworkとしてのサポート範囲が少々大きくなりすぎているような気がします。CakePHP3系はCakePHPRailsに追いついたな、と思うほどの大幅アップデートだと思います。

CakePHP2系でもComposerなど使えるんですが、それらが標準になって、強制されるようになって、コミュニティやライブラリが一元管理されるようになって、全員の努力があちこちのコピペコードではなく集約、統一、DRYな感じになることによって、一気に開発生産性が上がると思います。

CakePHP3は真新しくはないけど、きっと文化に変化を与えると思います。楽しみです! 2系の人もComposerとかCakeDC Migrationとかは今のうちから使って良いと思いますw。

(Railsのコミッターでもないのにでしゃばった記事でごめんなさいm( )m CakePHPにだけ今回言及してますが、PHPは他にも沢山のFrameworkがありますよ!)