Kohana と CodeIgniter の違い

Notes on Choosing a PHP Framework: A Quick Comparison of CodeIgniter and Kohana | thislab.com - Web development and design by Fred Wu.の要約。
誤訳あり。

Kohana と CodeIgniter の簡単な比較

PHPフレームワークで、CakePHP を使ってみた。しかし、残念ながら、ドキュメントはほぼ存在しないのと同義語だった。
次に試してみたのが、CodeIgniter だった。何よりもドキュメントが充実していることが素晴らしかった。そのお陰で、数時間後には開発を開始することができた。それに、開発もすごい楽だった。
今現在、WEB アプリケーションは、CodeIgniter と Kohana、Zend Framework で開発している。
CodeIgniter と Zend Framework の比較は他で記されているから、そちらを参考にしてほしい。
CodeIgniter で開発を始めたときのバージョンは 1.2 だった。今は 1.6.1 で、それに至るまでは本当に長かった。CodeIgniter は今も順調に開発され、少しばかりの不具合があるにも関わらず、多くの WEB アプリケーション開発者の信頼を得ている。
そして、CodeIgniter から派生したフレームワークのひとつが Kohana だ。
短期間とはいえ、CodeIgniter の開発者は、ExpressionEngineの新しいバージョンをリリースすることにリソースを割いていた。そのことで、CodeIgniter フォーラムのユーザーらは、バグ報告や機能追加の要望が無視されていることに不満を抱くようになった。
その結果、BlueFlame が開発され、後に Kohana と名称が変った。
CodeIgniter と比較して、Kohana はあまり知られていない。事実、Kohana のユーザーは元 CodeIgniter を利用していたか、両方のフレームワークを使っている。
Kohana と CodeIgniter の違いは次の通りだ。

  1. PHP5 のオブジェクト指向に準拠。これによって、アクセス制御、クラスの自動読み込み、継承、抽象化など多大のメリットを提供している。
  2. PHP5への移行プロジェクトに参加している。また、Kohana 2.2 からは、このプロジェクトに準拠している。
  3. CodeIgniter のデザインパターンは続ける。このことによって、(CodeIgniter のユーザーは)誰でも Kohana の構造とデザインパターンをすぐに理解できる。
  4. Kohana の開発コミュニティは企業が主体ではない。だから、開発サイクルやバグフィックス、機能の追加に柔軟かつ迅速に対応できる。
  5. GET、POST、クッキーやセッションは通常の PHP として利用できる。グローバル変数への制限を取り払ったが、変数へのフィルターや XSS 対策は CodeIgniter と同様に行っている。
  6. Kohana の配置やシステム設定変数、設定値の継承や上書きが可能。
  7. 名前空間の衝突を回避。これによって、同名のコントローラークラスが存在しても、同時にロードをすることが可能。
  8. 必要なときに必要なもののみロードする。クラスやモジュールなどを先読みすることはせず、呼び出し時にロードをする。
  9. ヘルパーはスタティック・クラス。ユーザー定義関数ではなく、クラスのメソッドとして呼び出している。
  10. ライブラリのドライバとAPIの整合性保持。
  11. パワフルなイベント・ハンドラ

評価

CodeIgniter は小規模から中規模のプロジェクト、または PHP4 で開発しなくてはならない場合にとても効果的だ。
Kohana は柔軟な拡張が必要とされ、それよりも大きいプロジェクトに適している。
いずれにしても、どちらが優れているとか劣っているとかというわけではない。ユーザーそれぞれに好みがあるはずだ。CakePHPSymfony にも同様なことがいえる。また、言語は違えども、Ruby コミュニティのように事実上、標準のフレームワークが存在することが羨ましい。
それに、上記以外の他の選択肢もあるかもしれない。だからこそ、君の意見や経験を共有することに躊躇わないでほしい。