タイトル: FuelPHP
SEOタイトル: FuelPHP (PHP フレームワーク) 完全ガイド (Legacy)
| この記事の要点 |
|
FuelPHP の概要
FuelPHP は 2011 年、CodeIgniter コア開発者の Dan Horrigan、Phil Sturgeon、Jelmer Schreuder、Harro Verton らが立ち上げた PHP フレームワークです。CodeIgniter の薄さと軽さを継承しつつ、HMVC アーキテクチャと PHP 5.3+ の新機能(名前空間など)を取り入れ、当時の Laravel / CakePHP / Symfony と並ぶ選択肢として日本市場でも一定のシェアを獲得しました。
歴史と現状(重要)
| 年 | 出来事 |
|---|---|
| 2011 | 1.0 リリース、HMVC 注目 |
| 2013 | 1.7、日本でブーム期 |
| 2015 | 1.8 / FuelPHP 2.0 計画発表 |
| 2018 | 1.8.2 リリース(実質最後の安定版) |
| 2019〜 | 主要メンテナ離脱、コミット停滞 |
| 2020 以降 | 2.0 リリース実現せず、保守モード |
| 2024〜 | 新規採用は事実上ゼロ、Laravel 移行が主流 |
結論: 新規プロジェクトに FuelPHP を採用してはいけません。既存システムの保守・改修案件のみで関わる場面となります。
HMVC アーキテクチャ
HMVC (Hierarchical MVC) は、MVC を入れ子状に呼び出せる構造です。コントローラから別のコントローラをサブリクエストとして呼び出し、その結果(HTML 断片)を組み合わせて 1 ページを構成できます。
template->title = 'トップ';
$this->template->content = View::forge('page/index');
// サブコントローラを HMVC で呼出
$this->template->sidebar = Request::forge('news/latest')->execute()->response_body();
$this->template->footer = Request::forge('common/footer')->execute()->response_body();
}
}
// app/classes/controller/news.php
class Controller_News extends Controller {
public function action_latest() {
$news = Model_News::find('all', ['order_by' => ['created_at' => 'desc'], 'limit' => 5]);
return View::forge('news/latest', ['news' => $news]);
}
}
これによりサイドバー・フッターなどの共通要素をモジュール化でき、Symfony Bundle や Laravel パッケージ的な再利用性を提供しました。
インストール(参考)
# Composer で
composer create-project fuel/fuel my-app
# 旧来の oil コマンドで
curl https://get.fuelphp.com/oil | sh
oil create my-app
# 動作確認
cd my-app
php -S localhost:8080 -t public
ディレクトリ構造
fuel/
├── app/ アプリ本体
│ ├── classes/
│ │ ├── controller/ コントローラ
│ │ ├── model/ モデル
│ │ └── view/ ビュー
│ ├── config/ 設定
│ ├── lang/ i18n
│ └── tasks/ CLI タスク
├── core/ フレームワーク本体
├── packages/ パッケージ (auth, orm, parser ...)
├── modules/ モジュール (HMVC 用)
└── public/ ドキュメントルート
└── index.php
ORM(Eloquent ライク)
['model_to' => 'Model_Post', 'key_from' => 'id', 'key_to' => 'user_id'],
];
}
// 利用
$user = Model_User::find(1);
$user = Model_User::find('first', ['where' => [['email', '=', 'a@example.com']]]);
$users = Model_User::find('all', ['order_by' => ['created_at' => 'desc']]);
$new = Model_User::forge(['email' => 'b@example.com', 'name' => 'B']);
$new->save();
// リレーション
foreach ($user->posts as $post) {
echo $post->title;
}
API は Laravel Eloquent と類似ですが、メソッド名と細部の使い勝手が異なります。
Tasks(CLI バッチ)
execute();
\Cli::write('完了', 'green');
}
}
// 実行
// php oil refine cleanup
FuelPHP の問題点(2026 時点)
- PHP 8.x 公式サポートなし。コミュニティパッチで動かす状態
- セキュリティパッチが事実上止まっている
- Composer エコシステムから孤立気味(fuel/ パッケージ自体が古い)
- Stack Overflow / 日本語情報も 2018 年以降は希少
- 採用情報がほぼゼロ
- Laravel への移行コストは中規模アプリで 3〜6 か月見るのが現実的
Laravel への移行ロードマップ
- 業務要件と画面・API を棚卸し
- テストカバレッジを上げる(Migration 安全網)
- DB スキーマはほぼそのまま流用可(必要なら Laravel Migration 化)
- FuelPHP のルーティング →
routes/web.php+routes/api.php - Controller を Laravel 形式に書き換え(DI / FormRequest 活用)
- ORM: Fuel ORM → Eloquent(リレーション定義のマッピング)
- View: 独自テンプレ → Blade
- Tasks → Artisan command
- 段階的移行のためにリバースプロキシで URL ベース分割もあり
FAQ
Q: FuelPHP 2.0 はもう出ない?
A: 主要メンテナは公式に「リリース予定なし」とアナウンスはしていませんが、リポジトリ活動から実質開発停止です。期待しないのが安全。
Q: 既存システムを保守するうえで気を付けることは?
A: (1) PHP バージョン上げ時の互換性検証、(2) Composer 依存パッケージの脆弱性、(3) Session / Cookie の Secure / SameSite 設定、(4) HTTPS 強制リダイレクト、(5) 入力バリデーション強化。
Q: 採用案件にあるのですが学ぶ価値は?
A: 保守要員としての需要はあります。ただしLaravel に並行して習熟することを強く推奨します。