技術情報

PHPフレームワーク「FuelPHP」とは

PHP製Webアプリケーションフレームワーク「FuelPHP」について紹介します。

FuelPHPを使ったオフショア開発は、こちらへ

FuelPHPの概要

「FuelPHP」とは

FuelPHP(ヒューエルピーエイチピー)は、PHP5.3以上を対象に開発された、オープンソース高速軽量Webアプリケーションフレームワークです。フレームワーク構成は、MVCモデル(HMVCパターン)を採用しています。

FuelPHPは、既存のPHPフレームワーク(CakePHP、CodeIgniter、Symfonyなど)の長所を継承しつつ、「規約より設定」を重視して設計されているため、複雑な設定ファイルに悩まされることがありません。フレームワークのルールによる制限が強くないことから、高度なWebアプリケーションの開発に向いています。「従来のフレームワークの問題を解決するフレームワーク」として期待されています。

経緯

FuelPHPプロジェクトは、2010年10月に開始されました。2011年に最初のバージョンが公開され、PHPフレームワークの中では比較的新しい部類に入ります。

 

「FuelPHP」の特徴

最先端

他の多くのPHP製フレームワークは、古いバージョンのPHPをサポートしています。FuelPHPは「最先端のフレームワーク」というコンセプトを持っているため、PHP5.3以上が必須となります。これは、シンプルさや高速性につながります。

フルスタックフレームワーク

FuelPHPは、必要最小限の機能のみを備えたフレームワークではなく、Railsのようなフルスタックフレームワークです。

「規約より設定」

Ruby製フレームワーク「Ruby on Rails」では、「設定より規約」という方針により、Rails側で定められている規約に従ってソースコードを記述することにより、非常に短いコード量で必要な機能を実装できます。

一方、FuelPHPは、Railsとは逆の「規約より設定」という方針を採用しています。規約は必要最低限しか用意されていないため、Railsに比べて記述量は多くなりますが、シンプルで可読性の高いソースコードを書けるという特徴があります。設定ファイルでの細かな指定はなく、ディレクトリとクラス名で役割を指定します。
Railsでは、規約から外れたコーディングを行いたい場合、複雑な記述が必要になってきますが、FuelPHPでは一貫してシンプルを維持できます。

HMVC(階層化可能なMVCアーキテクチャ)

「FuelPHP」は、HMVC(Hierarchical Model-View-Controller)というアーキテクチャを採用しています。

MVCモデルとは、Model(データ処理)、View(表示)、Controller(処理司令)の3つの機能に分けるアプリケーションの設計方法です。
他の多くのフレームワークではMVC用のディレクトリが用意されていますが、HMVCでは、これらのMVCディレクトリを内包するディレクトリを作成できます。これをModuleといいます。

1つのプロジェクトに複数のModuleを持たせることによって、独立したMVCを利用できます。この仕組みにより、モジュール性を高めて、アプリケーションをモジュールに分割できます。

オートローダー

FuelPHPは、必要なクラスを自動で呼び出すオートローダーが実装されており、自動的にアクションとURIを結びつけてくれます。MVCの役割を担うクラスには命名規則があり、命名規則は必ず守る必要があります。

軽量高速

シンプル構成、スタティックメソッドの使用、オートローダ機能などにより、使用メモリ量を抑えつつ高パフォーマンスを実現しています。

Controllerからロジックを分離する「ViewModel」

MVCモデルを採用したフレームワークでは、Model/Viewに対する複雑な処理をControllerやModelのソースコードに記述してしまうことがあります。1ファイルごとのソースコードが肥大化し、メンテナンス性が落ちてしまいます。

FuelPHPでは、「ViewModel」というViewやModelに対する処理をControllerから分離する仕組みがあります。そのため、Controllerでは、リクエスト処理/バリデーションなどの本来やるべき処理に専念できます。

セキュリティ

FuelPHPのセキュリティとして、CSRFトークン発行、XSS対策、HTML/SQLのエスケープなどの仕組みを使えます。また、RubyのGemとして有名なDeviseのような認証機能も標準で搭載しています。

まとめ

FuelPHPは、後発の利点を活かして「従来のフレームワークの問題を解決するフレームワーク」として注目すべきフレームワークとなっています。

 

FuelPHPを使ったオフショア開発は、こちらへ

About the author: matsumoto