CakePHP4.0 時代への展望とこれまでの振り返り

2015年に CakePHP3.0 がリリースされたことは記憶に新しいですが、先日 CakePHP の Core Developer の @mark_story 氏により CakePHP4.0 時代への展望とこれまでの歩みの振り返りがスライドとして公開されていた ので、内容を要約してみたいと思います。

※ 以下の内容は自分が CakePHP を触っていて感じたことを元に補足している内容も含まれますのでニュアンスが異なる部分もあるかもしれません。

2.x – 3.00 アップデートの振り返り

  • 3.0.0 はとても大規模で困難なアップデートだった
  • PHP7 対応に伴うモダン化
    • フレームワークのインストール方法が composer になった
    • コアコード・モデル周りの大幅な改修
      • 連想配列地獄からの脱却・オブジェクト化
      • モデルクラスが Table と Entity クラスに分離された
  • 2.x もまだメンテンナンスされている
    • CakePHP2.7 で PHP7 にも対応した

現行版の 3.2.x – 3.3.x について

  • getter / setter 分離のため移行中の段階 (詳細は後述)
  • Middleware 対応 (PSR-7互換)
    • Request / Response の構築処理に任意の処理を挟み込める
    • PSR-7 対応に伴う Request & Response オブジェクトの不変化
      • with から始まるメソッド名のメソッドは新しいインスタンスを返す
<?php
// $response オブジェクトの内容は変わらない
$response->withHeader('X-yes', 'yes');

// 戻り値に変更が反映された状態で clone instance が返ってくるので
// もし変更したい場合は代入する。
$response = $response->withHeader('X-yes', 'yes');

3.5 で提供される新機能

  • 新しいミドルウェアの提供
    • CSRF
    • Cookies
    • Authentication
  • ルーティング設定とミドルウェアの紐付けが可能に

3.6 について

  • 4.0 リリースに向けたバージョンになる
  • 3.6 未満と下位互換性は保たれる

4.0 はどんな感じになる?

  • ベースはあくまで 3.x のまま
  • PHP7.1 以上の環境が必須に ( ! )
  • 全ての非推奨メソッドの削除
    • getter と setter の両方を兼ねたメソッドも削除される

進められている getter / setter 分離対応について

より簡単なインターフェースにしてコードの複雑さを軽減することが目的。

これまで:

  • Entity::errors()

これから:

  • Entity::getErrors()
  • Entity::setErrors()

リリース予定日は?

まだ未定だが 2017年末 〜 2018年初頭になりそう。

所感

CakePHP3 はかなり大掛かりなアップデートでしたが、CakePHP4 は PHP7.1 以上が要求されること以外は比較的シンプルなアップデートになるのではないでしょうか。

近年のモダン PHP の流れを汲みつつ堅実に進化していっているなという印象を受けました。

最近の PHP フレームワークのトレンドを見ていると Laravel に押され気味な感はありますが、CakePHP も古株のフレームワークとして安心感のあるフレームワークであることは今後も変わらないと思います。がんばれ CakePHP。

Macのキーボード掃除補助アプリKeyboard Cleanerが良かった

キーボード掃除補助アプリって?

Keyboard Cleaner はアプリを起動するとキーボード入力が反応しなくなるので、その間にウェットティッシュなどでお掃除しましょうというアプリです。(←掃除まではしてくれませんw)

会社のデスクにウェットティッシュを常備して、このアプリを使ってたまに掃除しています。

今までは類似アプリの KeyboardCleanTool を使っていたのですが、macOS Sierra にアップデートしたら動かなくなってしまったので、代わりに Keyboard Cleaner を入れてみたら問題なく動くし、むしろ便利だったので紹介します。

類似アプリ「KeyboardCleanTool」との違い

KeyboardCleanTool はキーボード掃除補助専用のアプリなのですが、Keyboard Cleaner では更に以下の様なことができます。

画面の掃除に使える!

アプリを起動している間は画面全体が真っ黒になるため、画面についている指紋や埃が分かりやすくなります。
一緒に掃除してしまうといいと思います。

トラックパッド掃除に使える!

アプリを起動するとトラックパッドの入力も無効化されるので、トラックパッドも掃除できます。

アプリのダウンロード方法

Keyboard Cleaner のダウンロードページ からダウンロードできます。

2022/05/16 追記:
公式サイトからアプリをダウンロードしようとしてもブラウザ(Chrome)の Mixed Content エラーによりダウンロードが始まらない現象を確認しています。
これは https のページ上から http の zip ファイルを落とそうとしているためで、ブラウザのセキュリティ強化によりアクセスが遮断されているためです。
ダウンロードページにある zip ファイルへのリンクの URL をコピーして、それをブラウザのアドレスバーに入力して開くことでこのエラーを回避しダウンロードできます。自己責任でどうぞ。

アプリの終了方法

起動すると何も操作を受け付けなくなるのでアプリを終了できないと大変です。

通常のアプリと同様、Command キーを押しながら Q キーを押すと終了できます。(⌘+Q)