自社サービス
自社開発のSaaS
画面 jQueryBootstrap → Vue 3InertiaTailwind CSS
- どんなシステム
- 外部の10サービスとつながり、毎晩自動で動く業務の仕組み(画面約75)
- 難しかった点
- 10の外部サービスとの連携を、すべて動く状態のまま移した
- 引き継いだもの
- 利用者に配布済みのURLを、切らずに移した
- いま
- Laravel・PHP 8.4で稼働している
PHP 7.4 のサポートが終わりました。CakePHP 2系・3系が公式に対応しているPHPは 7.4 までです。出典:book.cakephp.org
CakePHP 4系のセキュリティ修正が終わりました。サポートが続いているのは 5系だけです。出典:book.cakephp.org
| CakePHP | Laravel |
|---|---|
AppModel・find('all', ['conditions' => ...])(2系) | Eloquent |
| Table・Entity(3系以降) | Eloquent のモデル |
$belongsTo・$hasMany・Containable | Eloquent のリレーション・with() |
AuthComponent・SecurityComponent | Laravelの認証・ミドルウェア(CSRF を含む) |
.ctp テンプレート(2系・3系)・FormHelper | Blade、または Inertia+Vue 3 |
| Shell+cron | Artisanコマンド+Laravel Scheduler |
app/Config/core.php・Configure::write() | config/・.env |
prefix routing(admin_index など) | routes/web.php のルートグループ |
3系で Model は Table と Entity に分かれ、find() は配列でなく Query オブジェクトを返すようになりました。Containable と recursive もなくなっています。2系からは、CakePHP の中で上げても、Laravel へ移しても、データの扱いはほぼ書き直しです。
2系の既定(Simple)は、多くの場合 Security.salt を足した sha1 です。移行先で同じ計算を一度通し、ログインできた時点で bcrypt に作り直します。3系以降の DefaultPasswordHasher は bcrypt で、Laravel でそのまま照合できます。
Security.salt・Security.cipherSeed の値 core.php に直書きされていれば、値は変えずに .env へ移します(変えると、保存済みのパスワードや暗号化した Cookie が読めなくなります)。
.ctp に書かれた業務ルール テンプレートの中の条件分岐や計算を画面ごとに書き起こし、移行先ではモデルやサービスに移します。
each() と create_function() は PHP 8.0 で削除され、動的プロパティは 8.2 で非推奨になりました。2系・3系のアプリ側のコードに残っていないかを確かめます。
lib/Cake/VERSION.txtcomposer.lock の cakephp/cakephpphp -v、またはサーバー会社の管理画面自社サービス
画面 jQueryBootstrap → Vue 3InertiaTailwind CSS
医療・ヘルスケア企業
画面 jQueryBootstrap → Vue 3InertiaTailwind CSS
2系からは、どちらもデータの扱いの書き直しに近い作業です。3系・4系からの作業量は、使っている API やプラグインを調べて判断します。調査のあとに、5系へ上げる場合と Laravel へ移す場合の作業量を並べてお出しします。当社が移行・作り直しで使うのは Laravel です。
はい。4系も2026年9月10日でセキュリティ修正が終わっています。
2系の sha1 の方式でも要りません。移行先で同じ計算を一度通し、ログインできた時点で bcrypt に作り直します。
はい。PHPの移行・作り直しと一緒に、jQuery・Bootstrap の画面を Vue 3・Inertia・Tailwind CSS に作り替えられます。