ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?