コネヒト開発者ブログ

コネヒト開発者ブログ

今からちょっとだけ先の未来、CakePHP4の話 〜Upcoming CakePHP Roadmap & Releases〜

こんにちは、森の蒸留所に行ってからずっとウイスキー飲みたい金城 (o0h_)です。
今回は、ちょっと小ネタを・・・

次世代のCakePHPの姿が、少しずつ。

先日CakeFestというCakePHPの公式カンファレンスが行われました。

その中でMark Story氏によってCakePHPのロードマップについての講演があったのですが、
私はそれを「未来だ、未来だ!!」と思ってワクワクしながら眺めていたわけです。

www.pscp.tv

さて、その内容が先程Bakeryにアップされました!! 🎉🎉
普段めっきりCakePHP3にお世話になっている弊社エンジニアとしては、この興奮を社(内|外)に少しでも早くおすそ分けしたいな‥?と思うのです。

そこで、本エントリーではBakeryで触れられている内容(+α)を簡単に紹介させてください。

ざっくり言うと

  1. 3.5はこの夏にリリースされる予定だよ。後方互換性はもちろんあるけど、廃止予定なAPIはランタイムエラーを吐くようにするよ
  2. 4.0は2017年の遅くか、2018年にリリースされる予定だよ。PHP7.1+を要求するけど、3.6を使っていれば簡単に移行できるようにするよ(&& 2.x系->3.0のような劇的な変化はしない!)
  3. 3.x系については、4.0.0が出た後18ヵ月はバグ対応をして36ヵ月はセキュリティ対応をする予定だよ
  4. 2.x系については、バグ対応:12ヵ月、セキュリティ対応:18ヵ月を予定しているよ

という内容でしょうか。
ぜひ 原文 を御覧いただきたいです!

姿を見せつつある4.0

Strawberry って言うのですねw 可愛い。1
コンセプトとしての4.0は、 こちらのスライドを是非ご一読ください。

www.slideshare.net

弊社では3.x系と2.x系のプロダクトが混在しているので、どちらも日常的に読み書きしていますが
3.xは書いていて「とても気持ち良いな」と感じています。お気に入り。

・・・とはいえ、2.x系 > 3.0では「非常に劇的」な変化があり、身体感覚に馴染むまでに大きな学習コストと時間を要したのは事実です。。
そのため、「3.6からの移行ハードルを下げる」というのはとても興味深く感じました。2

具体的には「非推奨のものを使っていなければ、ちょっとの手間で動く!」と明記されているので、
こうなると気の重さよりもワクワク感が大きくなってきますよね。

また、「厳密な型制約」についても言及されていて、この点も個人的に非常に目を引かれています。3

PHP全体で言える傾向として、 「簡単に書ける」の意味合いが「間違えても動く」から「間違いにくくなる」にどんどんシフトして行っていると感じる今日このごろです。
その文脈に則って、CakePHP4.0において「ますます今っぽく」なるのかな、という印象を受けます。

さて機能から見る4.0は、一体どんな姿になるのか?についてですが、当該のエントリーではあまり詳しく触れられていません。
気になる方は、4.0 Roadmap · cakephp/cakephp Wiki · GitHubをウォッチしてみてください!

4.0を見据えた3.6

3.6が、実質「3.x系の最後の進化」になるのかもしれません。4

そしてコレも「4.0への移行を簡単にしたいため!」という理由からだそうなので、位置づけとして「橋渡し」的な面があるのかと理解しています。

その3.6ですが、機能的には「Middlewareレイヤーの強化をする!!」というのが個人的な関心でありつつ
もしかすると、それよりも「非推奨のものを使うとランタイムエラーを吐く」というのに目を引かれました。すげぇな。。。5

次点として、「ルーティングを書きやすく」も便利そうだなぁ〜と思っています。 issue#10643を見ると、 例えば/users/:name/users/{name}となっていくのでしょうか。 これは今までよりも直感的だなと思います!6

今後の動向に注目 && 日頃から備えておく

個人的な感覚では、3.0が出たのは割と最近・・・とも思っていたのですが。。
もう具体的な「4.0」の声が聞こえてきつつあります。
どんな面白いコードやエレガントな機能が出てくるかな?と今から楽しみです。
もう少ししたら、次世代CakePHPの開発もいよいよ加速していくと思いますので、これは目が離せません!

また、今回のマイグレーションやそのサポートに関する指針を見て、
改めて「レガシー化させないための最大の武器は、小さなホコリは気付いたら払っておく」ことだと思いました。
弊社では方針として「なるべく最新に追従する」戦略をとってマイナーアップデートも積極的に行っています。
これは、小さな修正でも溜め込んでいくと「移行」自体が一大プロダクトになってしまうことへの恐怖からです。。。 開発の本分は「価値を提供する、サービスを育てる」点だと思っていますので、それ以外の心労や障壁は排除しておきたいものですね!

引き続き、必要な情報を適切に摂取しながら、PHPやプログラミングを楽しんでいけたらな〜と思います!


  1. ちなみに3.xは Red Velvetです。

  2. Lastly, an explicit goal is to make the upgrade easy. と記事中で述べられています。

  3. All currently documented types will be converted into strict typehints where possible. とのこと

  4. This would make 3.6 the last 3.x with the possibility of 3.7 happening. だそうで!

  5. 全くの余談ですが、先日行われたPHPカンファレンス福岡での@hirakuさんの発表を聴いて「もっと上手くerrorを使えば開発の高速化・安心化ができるのかもなぁ」と反省したところでした。CakePHPが「phpdocだけでなくランタイムエラーを吐かせる」という課題に対してどのように取り組んで行くのかは興味深いです。
    cf: PHPのエラーと例外再入門 / php-error-and-exception // Speaker Deck

  6. 「記法がシンプルっぽいやつに」は単なる一例で、それよりも強烈に「コンセプトレベルでの変更」と言えるような機能強化が予定されていると感じています。ぜひ当該Issueの議論を眺めてみてください!