Laravelを追いかけて疲れたので、FuelPHPの源流に回帰してみる
1. 「最新」が「レガシー」になるスピードが早すぎる
最近のPHP開発の主流といえばLaravelだが、とにかく変化が激しすぎる。
エコシステムの強さや開発体験は圧倒的だが、その分、追従コストも高い。
サポート期間を改めて見ると、LTS(長期サポート)であっても、新機能を追いかけながら1年かけてじっくり開発していると、リリースする頃には「次のバージョンへのアップデート」が背中に迫っている。
この「常に追いかけ続けなければならない」疲労感は、長期運用を前提とするシステム屋にとっては、なかなかのストレスだ。
2. 中小企業の現場(レンタルサーバー)という制約
中小企業のシステムを請け負う場合、インフラは「使い慣れたレンタルサーバー」になることが多い。
モダンなフレームワークは、
最新のPHPバージョン
特定のミドルウェア
フロントエンドビルド環境(Viteなど)
を前提とすることが多く、共有レンタルサーバーではそれが壁になる。
「動かしたいだけなのに、環境構築で一苦労する」のは、本質的ではないと感じる。
3. そこで再発見した CodeIgniter 4(CI4)
そんな中で改めて注目したのが、CodeIgniter 4(CI4)だ。
かつて軽量フレームワークとして知られた思想を受け継ぎつつ、PHP 7.4 / 8.x 向けに再設計されている。
CI4の特徴
圧倒的に軽量:フレームワーク自体のオーバーヘッドが少なく、とにかく速い
「規約」よりも「自由」:書き方を強制されない
長期安定性:破壊的変更が少なく安心して運用できる
設置が簡単:レンタルサーバーでもそのまま動く
一言でいうと、「ちゃんと自分で組めるフレームワーク」だ。
4. テンプレートは「あえて」外付けする
CI4は標準で純粋なPHPテンプレートを使う。
それはそれで良いのだが、今回はあえて Twig を使うことにした。
Bladeほど多機能ではない
だがシンプルで壊れにくい
デザイナーとの分業もしやすい
5. 最小構成で動かす(CI4 + Twig)
CI4自体のインストールは非常に簡単なので割愛するが、
Twigを組み合わせる場合、少しだけ手を入れる必要がある。
ルーティング設定(app/Config/Routes.php)
$routes->get('/', 'Home::index');
$routes->get('hello', 'Hello::index');
/hello にアクセスできるようにする。
Twigサービスの登録(app/Config/Services.php)
CI4はTwigを標準では持たないため、自分でサービスとして登録する。
public static function twig($getShared = true)
{
if ($getShared) {
return static::getSharedInstance('twig');
}
return new \App\Libraries\TwigRenderer();
}
service('twig') で呼び出せるようになるのがポイント。
コントローラ
namespace App\Controllers;
class Hello extends BaseController
{
public function index()
{
return service('twig')->render('hello.twig', [
'name' => 'Twig'
]);
}
}
テンプレート(app/Views/hello.twig)
<h1>Hello {{ name }}!</h1>
6. 「簡単なはず」でちょっとハマる
CI4はシンプルな分、全部が自動で揃っているわけではない。
自分の場合はこのあたりで少し詰まった:
Twigのサービス定義
パスの扱い
キャッシュディレクトリ
Laravelのように最初から全部揃っているわけではないが、
「必要なものを自分で差し込む」感覚がCI4の良さでもある。
簡単なフレームワークほど、“少し外したとき”に自分で考える余地がある。
その感覚は、嫌いじゃない。
まとめ
モダンを追い続けるのに疲れたなら、
一度「変わらない良さ」に立ち返るのも悪くない。
CI4は、派手さはないが、現場で長く使うにはちょうどいい距離感のフレームワークだ。
ロートル親父の分室の、ちょっとした近況報告でした。

コメント