ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
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 ページを構成できます。
<?php
// app/classes/controller/page.php
class Controller_Page extends Controller_Template {
public function action_index() {
// メインコンテンツ
$this->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 ライク)
<?php
// app/classes/model/user.php
class Model_User extends Orm\Model {
protected static $_properties = ['id', 'email', 'name', 'created_at', 'updated_at'];
protected static $_observers = ['Orm\Observer_CreatedAt', 'Orm\Observer_UpdatedAt'];
protected static $_has_many = [
'posts' => ['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 バッチ)
<?php
// app/tasks/cleanup.php
namespace Fuel\Tasks;
class Cleanup {
public static function run() {
\Cli::write('クリーンアップを開始します');
\DB::query('DELETE FROM sessions WHERE expires_at < NOW()')->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 に並行して習熟することを強く推奨します。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?