時々はCodeIgniterの事も思い出してあげてください。

かちびと.net : 個人的に使いそうなPHP、CSS、HTML等のフレームワーク17個

かちびとさんのところで、フレームワークが紹介されていました。そのうちPHPフレームワークについてはcakePHPsymfonyが紹介されています。お願いします!騙されたと思って是非CodeIgniterを使ってみて欲しいのです。

実はこのところ、symfonyをいじり始め、何かと調査、テストをしていました。素晴らしいフレームワークですね。その辺りも踏まえながら、CodeIgniterとsymfonyの違いをまとめてみようと思います。(cakePHPはあまりいじったことが無いのです)

symfony

  • PHP5用フレームワーク
  • オブジェクト指向を使い倒している
  • DBをmodelクラスを通して容易に操作できる
  • 特定ディレクトリのファイルを全てincludeする
  • ジェネレーターが充実
    • モデルクラスの生成
    • sqlファイルの生成
    • DB作成etc
  • 開発ツールが便利
  • 纏まった日本語情報が少ない

symfonyは、PHP5から採用されたオブジェクト指向を利用して動作しています。継承やインターフェイス等々、できればデザインパターンに関しても学ぶと早く学習できるかと思います。modelクラスを操作することで、SQLを意識することなくDBのデータを操作できます。modelクラスについては、雛形はジェネレーターを使用すればすぐに作れます。一瞬でCRUDが作成できるという非常にパワフルな機能です。初めて使った時は感動モノでした。

残念な部分として、纏まった日本語情報がないことが挙げられます。訓練用のプログラムやCook Book、一応のマニュアルもありますが、全てを網羅している訳ではありません。使い倒す為には、ファイルの中身をgrepで延々と検索する必要があります。

CodeIgniter

  • PHP4,5対応
  • とにかファイル容量が小さい
  • シンプルなMVC構造
  • 指定したファイルのみinclude
  • ジェネレーターはない
  • 動作が速い
  • 学習時間が短い
  • 日本語マニュアルが存在する

CodeIgniterは、非常にシンプルなMVCフレームワークです。シンプルが故、ジェネレーターはなく、全てのmodelは自分で作らなければなりません。これはcakePHPやsymfonyに比べ劣る部分です。しかし、そのシンプルさから学習時間は非常に短くて済みます。他のMVCフレームワークをいじっていた方なら1日もあればマスターできると思います。

日本語情報は充実しています。但し、これはCodeIgniter自体に関するもので、追加するモジュールやライブラリに関しては英語を必死に使いながら読む必要があります。如何せん日本人ユーザーが少ないのです。

個人的使い分け方法

それぞれのフレームワークをどう使い分けるのか。これは難しい問題です。

今のところ、DBへのデータの出し入れが多く、規模も大きい案件の場合にはsymfonyやcakePHP、DBへのデータの出し入れが少なく、APIとの連携が中心になり、規模も小~中規模、又はサーバーリソースが限られている場合にはCodeIgniterかなと思います。具体的には、TwitterのAPIを利用してwebアプリを作るならCodeIgniterを使用すると思います。他には、企業サイトに若干の機能追加の場合等が考えられます。modelの自動生成機能は一切ないので、modelの使用が増える場合には不向きだと思います。

対してsymfonyでは、いくつものAPIを組み合わせ、そこからユーザー自身が作成したデータをDBにもつようなwebサービスを作る場合に選ぶべきだと思います。modelの生成機能のパワフルさがここで大きく活かされます。もちろん、”そうしなければいけない”訳ではなく、symfonyで小型サービスを作ることもできますし、CodeIgniterで大きなWebサービスを作ることもできるはずです。ただ、symfonyで作った小型サービスは高速には動作せずサーバーリソースを喰います。CodeIgniterで作った大型サービスは高速に動作するかもしれませんが、modelを山ほど書かなければなりません。

MVCフレームワークに初めて触れるならCodeIgniter

これは必ずCodeIgniterを勧めると思います。学習時間が短く、習得が容易です。初学者の学習用にも向いていると思います。

MVC構造についても、非常にシンプルで理解しやすいです。慣れの問題ではありますが、symfonyだとフロント・コントローラー(Controller)があり、その中にactionがあり…といった形で直感的ではありません。但し、modelは全て自分で作らなければなりません。←面倒。

簡単にまとめてみた次第ですが、内容としては如何でしょうか?具体的に書き始めると同じMVC構造であっても、それぞれの癖や弱点、Tipsがあります。これからMVCフレームワークを触れる方の参考になれば嬉しい次第です。

時々はCodeIgniterの事も思い出してあげてください。」への1件のフィードバック

  1. ピンバック: Tweets that mention 時々はCodeIgniterの事も思い出してあげてください。 - e2esound.com業務日誌 -- Topsy.com

コメントを残す

メールアドレスが公開されることはありません。