[和訳してみた] CodeIgniterとZend Frameworkの比較

2014年7月5日

php_frameworks
こんにちは榊原です。TwitterでPHPフレームワーク差についての話が盛り上がりました(こちらでまとめていただいております)。
日本ではドキュメントがあまりないCodeIgniterとZend Frameworkですが、海外ではかなりの量がありますので、秀逸な記事を2つ和訳します。ちなみに、ファジーに訳していますので、ぜひ原文に当たっていただければと思います。

Zend Framework vs. CodeIgniter: the good, the bad

出典はinventisです。原文に当たる方はこちらからどうぞ

 
ZendFramework-logo

1. Zend Frameworkのいいところ

Zend Frameworkは、PHP中核部を開発したチームが関わっていることでファンが多く、ライブラリは公式非公式問わず日々増え続けてます。Zend Frameworkにコードを提供する場合、コード網羅率80%以上の単体テストにパスする必要があるらしく。だからこその信頼できるライブラリが用意されてます。で、かつそのライブラリを適応するための改変も簡単(本当かは知りませんw)。
POP3、mbox形式、IMAPにはじまり、MySQL、オラクル、MS SQL Server、SQLite、かつSoup、RSS、とWeb標準技術をサポートしており、その上でGoogleやAmazonのAPIを使うためのライブラリまであり、その上で多言語化も対応!
 
といったように、ライブラリという技術サポートを網羅しているというところがいいところです。

2. Zend Frameworkの悪いところ

だからこそ、重いです。もちろんZend Framework自体のパッケージも重いですし(通常27MB!最小構成でも5MBあるらしいです)、ライブラリのロードがかなりの数に上るのでZend Frameworkの応答時間も遅い・・・。かつメモリ食いです。
しかも、重いのはZend Framework本体だけではなく、SQLのアクセスもです。厳密にいうと、SQLのアクセス自体が遅いわけではなく、チェック用クエリを追加で投げる機能がついてるらしく。
堅固さと重さって、反比例しますよね・・・。

ci_logo_flame

3. CodeIgniterのいいところ

Zend Frameworkと違って、MVCが厳格ではないので、分離することさえ可能。
また、軽い、軽量!ダウンロードしたら2.2MBのファイル群となりますが、これはユーザガイドが含まれてて、本体だけは1.6MB!Zend Frameworkの1/10〜1/5ぐらいの軽さ。驚異的!だからこそ、処理もとても高速です。
あと、学習コストも優れています。簡単な構成で、優れたドキュメントが整備されてるから、フレームワークをはじめて使う人も簡単に理解できることができますよ!

4. CodeIgniterの悪いところ

開発自体はZend Frameworkと比べてルールが少なく容易です。しかし、その反面ライブラリなどが非常に少なくZend Frameworkが持ってるような機能の実装は難しいです。POP3、mbox形式、IMAPにはじまり、MySQL、オラクル、MS SQL Server、SQLite、かつSoup、RSS、といったものは一部しか標準実装されていないので、プラグインやライブラリを自作する必要があります。
いい意味でも悪い意味でも「パッケージが小さい」ところが浮き彫りになりますね。
 

Codeigniter compared to Zend Framework 2

出典はEllisLabです。原文に当たる方はこちらからどうぞ

 

  • 質問者:今、CodeIgniterを使っていて軽量かつ軽快で気に入ってはいるんだけど、他のフレームワークにも興味を持ちました。Zend Frameworkを考えているんだけど、詳しく教えてください。
  • 回答者:共有サーバではまず使えないと思っていいよ。Zend Frameworkはいいと思うけど、CodeIgniterとくらべてサーバ条件が激増して、それはphp.iniをさわれるぐらいのレベルじゃないよ。
  • 質問者:CodeIgniterではオブジェクト指向プログラミングをしていないけど、これってCodeIgniterの問題?それとも私自身の問題?
  • 回答者:CodeIgniterもオブジェクト指向プログラミングだよ・・・。
  • 質問者:Zend Frameworkで開発する場合、CodeIgniterよりも多くのコードを書かないといけないのか。多様なライブラリがあるわけだから、逆にコードは少なくてすむと考えているんだけど
  • 回答者:同じような処理を書く場合のコード量はもちろん同じだよ。ただライブラリを利用できる場合は便利だけど、何をしたいかによると思うよ
  • 回答者:小さい開発だったらCodeIgniter、大きい開発だったらZend Frameworkを使ったらいいと思うよ
  • 回答者:両方使ったことあるけど、CodeIgniterとZend Frameworkの開発がまったく一緒だとはいえない。CodeIgniterは$thisのSuperObjectに頼った開発を行うことになるけど、Zend FrameworkはPHP標準にかなり近い開発ができる。Zend Frameworkを勉強したいなら、Zend Frameworkとdoctrineをセットに勉強したらいいと思うよ

 

まとめ

いかがだったでしょうか。日本ではCakePHPと最近FuelPHPかな、ばかりがフォーカスされますが、海外ではCodeIgniterやLaravelのシェアが大きいので、少しずつこちら学んでいければと思います。
 
それでは、また。

slackチームに参加下さい

ng-onsenui2.slack.com

OnsenUI2(Angular2)について知見を共有する場です。Angular2に限ってOnsenUI2を議論できる場がなかったのでつくりました。これから使い始めるという方はぜひご参加ください。
https://ng-onsenui2.herokuapp.com/

Ionic2.slack.com

日本語情報が少ないのでこちらで知見を共有できればと思います。お陰様で参加者100名を超えました。ありがとうございます。
https://ionic2-ja.herokuapp.com