CakePHP
cakephp2
cakephp3
CakePHPDay 1

CakePHPの過去、現在、そして未来

これは CakePHP Advent Calendar 2017 の第1日目の記事です。

CakePHP に関する Advent Calendar の初日ということで、CakePHP の過去・現在・未来というのを書いてみたいと思います。

過去

日本ではPHPでフレームワークを使うということがまだ一般的でなかった2005年から CakePHP はじわじわとユーザを増やし始め、強力なコミュニティーと大量の書籍が出たことにより、日本のPHPプログラマーの間では Symfony とともにデファクトスタンダードになりました。

Symfony が世界的に流行したことに比べ、CakePHP は日本で爆発的に流行し、活発にイベントが行われ、マニュアルの翻訳も精力的に行われ、加速度的に流行していきました。

特に CakePHP1 系は PHP4/PHP5 の両方で使えたので、PHP5への移行が遅れていた日本の事情にマッチしたというのがあったのかもしれませんが、やはりあの当時あれだけ流行したのは、強力にコミュニティを引っ張っていった方々の功績が大きいと思います。

そして、PHP5専用になった CakePHP 2.0 が2011年10月にリリースされました。CakePHP 1.0 から 2.0 へのバージョンアップは PHP5 専用になった以外は基本的に同じ思想で作られたもので、同時期にバージョンアップした Symfony が 1.0 から 2.0 へのバージョンアップで互換性を捨てて大きくジャンプアップしたのとは対象的でした。

そこからしばらく CakePHP 2.x は順調にユーザを増やしていったのですが、その数年後問題が発生しました。

  • CakePHP 3.0 の計画はかなり早い段階で発表されていたが、なかなか出なかった
  • そして、ようやく出てきた CakePHP 3.0 は CakePHP 2.x との互換性を捨てて、特に ORM 部分が大幅に改良されたために今までのユーザがバージョンアップについてこれなかった

CakePHP 3.0 が出る前後で、CakePHP を使っていたユーザは選択を迫られました。

  • CakePHP 3.0 へ頑張ってバージョンアップする(かなり少数だったと思います)
  • CakePHP 2.x を使い続ける(かなりの人達がここになった)
  • 別のフレームワークへ移行する

ちょうど Laravel 4 が認知され始めた時期だったため、この時期に Laravel に移った方も多かったのではないかと思います。

現在

現在、CakePHPは以下のような状況にあります。

  • CakePHP 2系
    • 2系最後のメジャーバージョンでもあり、LTS(Long Term Support)が宣言されている 2.10.x がリリースされています
    • 最新は 2.10.5
    • 2.10.x は 4.0 がリリースされてから、1年間バグフィックスが行われ、18ヶ月間セキュリティフィックスがおこなわれます
  • CakePHP 3系
    • 最新は 3.5.6
    • 3系最後のメジャーバージョンになるのは 3.6.x であり、このバージョンが LTS される
    • 3.6.x は 4.0 がリリースされてから、18ヶ月バグフィックスがおこなれ、3年間セキュリティフィックスがおこなわれます
    • 3.6.0 までは積極的に新機能を盛り込んでいく
    • 将来廃止予定の機能に関しては非推奨マークをつけ、将来に備えることができるようにする

日本でのコミュニティの規模は、全盛期に比べると残念ながらかなり縮小しましたが、それでもマニュアルはほぼ完全に日本語化されていますし、そもそも本家サイトで言語切り替えするだけで日本語で読めるというPHPフレームワークは CakePHP だけなので、この点だけでもすごいと思います。

また、CakePHP の公式 slack には #japanese チャンネルがあり、そこでは情報交換が結構行われています。興味があるかた方は是非 join してみてください。

CakePHP公式の日本語話者向けSlackチャンネル開設のご案内

未来

そして、来年 2018 年には CakePHP4 のリリースが予定されています。

CakePHP4 は、CakePHP 2.x から 3.x への大幅な仕様変更により、コミュニティがついてこれなかったことからの反省を活かし、以下のようなバージョンアップポリシーになっています。

  • 3.6 までで非推奨となった機能が完全に廃止されるが、それ以外の機能に関しては互換性を保ったまま 4.0 として動作するようになる
  • ただし、PHP 7.1 以上専用になり、PHP 5.6 では動作しなくなる

上記のようなものとなるため、PHP 7.1 で CakePHP 3.6.x を(非推奨の機能を完全に取り除いて)動作させていれば、CakePHP4 への移行準備ができているという形となります。

まとめ

今回、過去/現在/未来 という切り口でまとめたのは、今年の春に行われた CakeFest というイベントにて、コアコミッターである Mark Story が以下のようなプレゼンを行ったのにちなんだものです。

プレゼンの動画は結構聞き取りやすい英語なので、興味がある方は是非見ることをおすすめします。

CakePHP はもともと PHP4/PHP5 の両方で動くという形から始まったフレームワークで、その当時の印象は、ちょっと前の書き方で書くことができる保守的なフレームワークというものだったんですが、今現在はそんなことはありません。

CakePHP3 は既に PHP 5.6 以上でしか動作しませんし、PSR 対応も積極的に行い、最新の環境および書き方を要求するフレームワークになっています。

さらに既に書いたように CakePHP4 では PHP 7.1 以上専用となり、引数及び返却値の型宣言等も積極的に利用するようなフレームワークになっていくと思います。

最後に

これから 12/25 までの期間、CakePHP に関するいろんなことを書いていただいて、これからも CakePHP を盛り上げていくのに少しでも助力できたらなと思っています。

まだまだ、枠はあいてますよ? こんなだらだらとした長文を書く必要はありません。ちょっとしたことでもいいので、アドベントカレンダーに参加してみませんか?

明日の担当は、@tenkoma さんです。