CakePHP2から5に乗り換えた話 〜ようやくのぼりはじめたはてしなく遠い開発坂〜

CakePHP2から5へ一足飛び

この記事を三行にまとめると

つい先日までCakePHP2で動いておりました
CakePHP5で作り直すことにしました
まずはログイン画面が作れねえって話ですよ
CakePHP3が誕生したのが2015年、CakePHP4が誕生したのが2019年、そして今や最新バージョンはCakePHP5まで来ています。

そんな中、未だにわたくしはCakePHP2をメインで使っておりまして、というのも10年以上ずっと開発と保守を続けているサービスがあるんですが、それがCakePHP2で動いてるんですよ。ついでに言うとこのサイトもブログ以外の部分はつい先日までCakePHP2で動いておりました。

正直5、6年くらい前からさすがにそろそろアップデートしなきゃなとずっと思い続けていたんですが、何せサービスの規模がでかすぎるもんだからCakePHP3や4に簡単に乗り換えるってわけにいかなかったんですよ。バージョン2と3以降では中の作りがガラッと変わったので、本体だけアップデートしてAppはそのまま使うってことができなくて、だからやるならほぼほぼ一から作り直しみたいな感じで、そうなると年単位での開発が必要になっちゃうから手が出せずにいたんですよ。そんな時間は取れねーってことで。

でもさすがにもう限界かなと。どっかのタイミングでは絶対にやらなきゃいけない案件だから、とりあえず最新のCakePHPがどんなもんかだけでも触って知っておこうと思いまして、まずは練習用にこのサイトをCakePHP5で作り直すことにしました。

で、いざ本体をインストールして触ってみたんですけど、想像以上に作業が進まねえっすわww

バージョン3は少しだけ触ったことがあるし、3と5が似たような構成なら何とかなるかなあなんて結構楽観的に考えてたんですけど、そもそもバージョン3を触ったのはもう8年くらい前だし、あのときは単発の案件でちょこっと触っただけだからほぼ覚えてなかった。

CakePHP3を触ってみました 〜まとめという名の箸休め〜

何がダメだったって、まずはログイン画面が作れねえって話ですよ。自分でセッション管理やら何やらめんどうなことしなくてもAuthコンポーネントを使えばすぐにログイン画面が作れますよってのがCakePHPの特徴だったはずだし、それがフレームワークの良いところなんだから、ログイン画面くらいならすぐ作れるだろうと思ってたんですけど甘かったさ。

まずCakePHP5ではAuthコンポーネントがなくなってて(非推奨)、Cake本体とは別にauthenticationのプラグインを入れてそれを使わないといけないんですよ。しかもバージョン2とバージョン5ではパスワードのハッシュ化の方式なども違うから、2の頃のパスワードをそのまま使うことができない。使うにはLegacy何ちゃらっていう昔の方式でハッシュ化できるクラスを読み込む必要があって、でもそのLegacy何ちゃらの使い方が公式のドキュメントを見るとAuthコンポーネントを使ったやり方で書いてあったりして、AIさんに訊いてもAuthコンポーネントのやり方を教えてくるしって感じで意外と手こずってしまいました。

ちなみにAuth以外にも現時点(2025年7月)では公式のドキュメントがCakePHP4の内容(?)をそのまま書いてあったりするようなので、CakePHP5では廃止された関数を使ったコードが書かれていたりします。だから公式を信じてその通りのコードを書いても「Class not found」とか「Call to undefined function」とか言われちゃいます。

結局CakePHP5をインストールしてからログインができる状態になるまで丸一日かかってしまいましたとさ。

というわけでこれからしばらくCakePHP5を触りながら気になったことがあれば記事にしていこうと思います。本当は今日ログインまでの処理を書くつもりだったんだけど、愚痴が長くなってしまったので次回ログイン周りについて書こうと思います。

それ以外も記事にしたものはここに一覧でリンク貼るようにするので、みなさんがこの記事にたどり着く頃には公式のドキュメントだけで十分に足りてる状態になっているかもしれませんが、もし公式を見ても解決できんかったってときにこの記事が役に立てば幸いです。



CakePHP5系の記事まとめ

鋭意執筆中……
 もしかしたら何か関連しているかも? 
 質問や感想などお気軽にコメントしてください