FuelPHP vs CodeIgniter #FuelPHPAdvent2012

この記事は FuelPHP Advent Calendar 2012 : ATND の 23日目の記事です。
昨日は@ts_asanoさんの「QueryBuilderで小難しいSELECT文を書くためのノウハウ #FuelPHPAdvent2012 - Dazing days」でした。


本日の「FuelPHP Advent Calendar 2012」は @mukaken こと向井が担当させて頂きます。よろしくお願いします。
本日は「FuelPHP vs CodeIgniter」について書きます。
FuelPHPのコア開発者はCodeIgniterに関わった事のある人達が作ったFWですので、両FWは非常に似ています。
また、私自身、FuelPHP と CodeIgniter の両方のユーザなので、両方の比較記事を書きます。

ライセンス、対応する PHP のバージョン、開発元

ライセンスや対応するPHPのバージョン、開発元などについての比較です。

名称 本家ホームページ ライセンス 対応する PHP 最新の安定バージョン 開発元
FuelPHP http://fuelphp.com MIT 5.3 以上 1.4 コミュニティ
CodeIgniter http://ellislab.com/codeigniter CodeIgniter License 5.1.6 以上 2.1.3 アメリカのEllisLab
本家ホームページ

今年、両方ともリニューアルされました。特に大きな変化があったのはCodeIgniterで、URL が今年の12月になり変わり、ellislab.comの直下になりました。これは、何かの意図があるのかは不明ですが、より企業ベースで開発されている感が感じられるようになりました。

ライセンス

FuelPHP は MIT ですので何も問題ないでしょう。
CodeIgniter のライセンスは、現時点では CodeIgniter License ですが、今後は OSL 3.0 になる予定です。この OSL 3.0 といわれるライセンスが非常に難しく、変更になる件については一時期、本家のフォーラム(CodeIgniter changes license to OSL 3.0? / Forums / Community / EllisLab)や、いろいろなサイトで活発に議論されていましたが、ここ最近半年は議論している人を見かけなくなりました。

対応するPHPのバージョン

FuelPHPPHP 5.3 以上なので新しい機能を積極的に取り入れています。また、下位互換がないために簡潔にコードを記述する事ができます。少しの事なのですが、開発者にとっては気分が良いです。

CodeIgniter は 過去のしがらみがあるために、メンテナンスをしていると PHP 4 で記述されたコードをチラホラと見かけます。メンテナンス時などは気分が沈みます。

運用時の問題

現在の PHP の Old stable は PHP 5.3.20 なので、メンテナンスされているサーバであれば両方とも問題なく動くと思います。
ですが、ごくたまに、 FuelPHP で開発していて開発環境は PHP 5.3 だったのに本番環境は PHP 5.2 だったので作り直した、という話を見かけますので注意です。
CodeIgniter は PHP 5.1.6 以上なので、大抵の環境では動くと思います。

コミュニティ

FuelPHP

日本のコミュニティの活動は凄く活発です。今年、短期間で爆発的に増大しました。
私自身、「FuelPHP 日本語ニュース | Facebook」でFuelPHPの記事についてウォッチしているのですが、ほぼ毎日、日本語で何かしらののブログが書かれています。

日本以外ではブラジル、アジア諸国で人気が高いと感じます。
また、本家フォーラムの方もより一層活発になってきています。

CodeIgniter

日本では、それほど活発ではありませんが、世界的にはかなり巨大なコミュニティになっています。
日本以外だと、FuelPHPと同じくブラジル、アジア諸国がとくに活発だと感じます。

本家フォーラムは活発過ぎてカオス状態になっています。何が何だか分からない状態です。

注目度

注目度の比較です。
web での注目度の指標として「Google トレンド」が使われるのを、よく見かけますが、今回は開発者に注目されている指標として近いであろう「はてなブックマーク」と「stackoverflow」で比較してみました。
やはり、実際の運用や業務で使用していて、困った事がでてきたときに開発事例が豊富にあり探せるというのは心強いです。

はてなブックマーク

日本国内で使われているであろうサービスで、web系サービスの人気度が分かるといえば、はてなブックマークです。

ブックマーク数が1user以上で、それぞれのタグ名別で比較しました。

ブックマーク数の結果は大差ありませんでした。
Codeigniter より FuelPHP の方が新しいフレームワークという点を考慮すると、短期間で数が増えた FuelPHP の方が勝っています。

stackoverflow

Stack Overflow は世界中のプログラマーが連日連夜、技術的な疑問を投稿しているサイトです。
stack overflow でのタグの数を比較してみました。

やはり、世界的にみると Codeigniter が強いみたいです。 FuelPHP はこれからといった感じでしょうか。

ドキュメントの読みやすさ

両方とも、とても使いやすいドキュメントページだと思います。FuelPHP や Codeigniter が、他のフレームワークと比べて優れている点は、やはりドキュメントの読みやすさだと思います。
両方ともすばらしいのですが、FuelPHP の方が目次をマウスオーバすれば色分けされて表示されるなど、より見やすいように工夫されています。

パフォーマンスの比較

パフォーマンスの比較をしてみました。

前提

Model Name: MacBook Air
Model Identifier: MacBookAir4,1
Processor Name: Intel Core i5
Processor Speed: 1.6 GHz
Memory: 4 GB

PHP Version 5.3.15
Apache/2.2.22
APC なし

localhost にて、それぞれのFWはデフォルト設定でコントローラーに"Hello World!"と表示する単純な例で比較しました。
比較ツールは siege を使い、下記の設定で実行しました。

siege -b -c 10 -t 3S http://localhost

結果
  • FuelPHP
    • Transaction rate : 93.06 trans/sec
  • CodeIgniter
    • Transaction rate : 155.67 trans/sec

(Transaction rate : 数値が高い方が、よりアクセスがさばけている)

パフォーマンスの比較では FuelPHP より Codeigniter の方が性能が良いという結果になりました。FuelPHP の方が何かと便利ですが、速いとなると Codeigniter の方です。

ただ、ある程度のアクセスが見込めるようなパフォーマンスが気になるサイトとなると、リバースプロキシを使ったりとwebのシステム全体で最適化するので、今回比べたような Web FW 自体の純粋な性能は問題にならないかもしれないです。

案件での採用のしやすさ

実案件での国内での代表的な採用実績

上記以外の、日本でのビジネス的な実案件での採用実績を調べようとしたのですが公開されている企業が少なく分かりませんでした。
ですので、PHP のイベントや IT 勉強会で聞いた、私の知る限りで書きます。
現在、実稼働しているサービスで多く使われている方は Codeigniter でした。
ただし、小規模な受託案件(開発メンバは1から3人)や自社サービスなどの開発環境を開発者が自ら自由に選べる新規案件では FuelPHP を採用したという話をよく聞きました。
現時点で実稼働しているサービスは Codeigniter で、新規案件では FuelPHP を採用するという流れみたいです。
開発メンバーの集めやすさでは FuelPHP にしろ Codeigniter にしろ学習コストが低いので、PHPプログラマーならすぐに開発メンバーに加われるので問題ないと思います。

イースター・エッグ

イースター・エッグとはプログラムの裏技の事です。
FuelPHP には Mac 限定で喋る機能や、 oil から表示されるロボットなど、いろいろな楽しい仕組みが提供されています。
Codeigniter には裏技的なものがありません。

イースター・エッグ については FuelPHP の圧勝です!
少しの事ですが、楽しく開発できる事は大切ですね。

機能面 & まとめ

機能面の比較に関しての詳細な比較は、Google で検索すると、すばらしい記事を書かれたブログが多数ヒットします(例えばCodeigniter vs FuelPHP (Revisited) - I Like Kill Nerdsなど)。
ですので、詳しくはそちらを参考にしていただくとして、今回は私が感じた事を書きます。
機能の多さは FuelPHP > CodeIgniter です。FuelPHP にあって CodeIgniter にない機能は、大抵はCodeIgniter の本家フォーラムを探せば同じような機能の追加方法(ハック)が見つかります。しかし、CodeIgniter のコアを改造しなければいけないものもあり、そうするくらいなら最初から、ある程度まとまっている FuelPHP を採用した方がいいように思います。

新規案件で FuelPHP か CodeIgniter を採用するのを迷っているなら、 思いきって FuelPHP を採用するのもいいかもしれません。FuelPHP の方が凄く開発が活発で新機能が積極的に取り入れられていますし、日本のコミュニティが活発だからです。
そして、何より開発時のコードがシンプルに保たれていて開発者の気分が良いからです。

来年の抱負

今年は「FuelPHP 勉強会 東京」を2回開催できたのはよかったのですが、継続開催ができませんでした。来年こそは継続して開催したいと思います。やはり、OSSにおいてコミュニティの継続活動は大事だと思います。
また、来年は本家のFuelPHP Github へのPRを積極的にしたいと思います。



明日は@kurotakyさんです。お楽しみに!

[book]書評『@cosme公式総合年鑑 2012年保存版@cosmeクチコミランキング 940万件のクチコミ集計結果発表』

@cosme」という、コスメフリークなら当然知っているであろうコスメのクチコミサイトが出した本です。
2011年で一番売れた化粧品ランキングがジャンルごとに掲載されていますので、コスメ系マーケティングをされている方に凄く役立ちそうな感じがします。
本書の「おわりに」に書かれていますが、2011年は節約志向が高まってきている年で「自分基準」で「本当に納得できた商品」を選ばれる方が増えてきているそうです。インターネットサービスの流行も同じようにフェイスブックのタイムラインなど、自分基準のサービスが流行っていますね。今の時代は「自分基準」がキーワードになっているのだと思います。
また、本書は写真が沢山載っているので、普通のコスメ好きの方も見ているだけで楽しめると思います。


本書をIT技術書に例えるとなると、、、
オライリーの本に例えると『●●が知るべき97のこと』か『Hacksシリーズ』だと思います。同じように、ページごとに内容が分離していますので、通勤電車などの空き時間に読むのにも適していると思います。


本書の定価は1,000円ですが、@cosmeのwebショップで使える500円のクーポンが付いていますので、実質の価格は500円です。
これはお得です!

おまけ

@cosme ランキング −コスメ・化粧品・美容の最新ランキング−

当ブログを見ている方が興味があるのは「@cosme」のランキングのアルゴリズムだと思います。「@cosme」のランキングのアルゴリズムは非公開で、いまだ読解されていないみたいです。
Amazonランキングの謎を解く: 確率的な順位付けが教える売上の構造 (DOJIN選書)』という本に書かれていたのですが「確率順位付け模型による分析」を使うと非公開のランキングのアルゴリズムが分かるみたいです。
数学の得意な方はランキングのアルゴリズム読解に挑戦してみてはいかがでしょうか!?

Scientific Linux で CodeIgniter-for-PHP_CodeSniffer を使う

Scientific Linux で CodeIgniter-for-PHP_CodeSniffer を使う例を書きます。
RedHat系も同様の手順で大丈夫だと思います。

動作環境

動作環境は Scientific Linux release 6.0 です。

$ cat /etc/redhat-release
Scientific Linux release 6.0 (Carbon)

インストール方法

pear から PHP_CodeSniffer をインストールします。
(pear の使い方はManual :: PEAR Manualをご覧下さい。)

$ sudo pear install PHP_CodeSniffer

github から CodeIgniter-for-PHP_CodeSniffer を git clone します。

$ cd
$ git clone git://github.com/thomas-ernest/CodeIgniter-for-PHP_CodeSniffer.git

PEAR の該当のディレクトリにコピーします。

$ sudo cp -Rv CodeIgniter-for-PHP_CodeSniffer/src /usr/share/pear/PHP/CodeSniffer/Standards/CodeIgniter

次のように CodeIgniter が表示されればインストール成功です。

$ phpcs -i
The installed coding standards are PEAR, MySource, PSR1, CodeIgniter, Zend, PSR2, PHPCS and Squiz

次のようにエイリアスを追加すれば便利です。

$ cat >> .bash_profile
alias phpcsci='phpcs -v --standard=CodeIgniter --encoding=utf-8'

$ source .bash_profile

使い方(テスト)

test.php というphpファイルを作成します。

$ cat > test.php
<?php
echo 'test';

次に、test.php を文法チェックします。

$ phpcsci test.php
Registering sniffs in CodeIgniter standard... DONE (34 sniffs registered)
Creating file list... DONE (1 files in queue)
Changing into directory /home/mukai
Processing test.php [6 tokens in 2 lines]... DONE in < 1 second (3 errors, 0 warnings)

FILE: /home/mukai/test.php
--------------------------------------------------------------------------------
FOUND 3 ERROR(S) AFFECTING 1 LINE(S)
--------------------------------------------------------------------------------
 2 | ERROR | Missing file doc comment
 2 | ERROR | No comment block marks the end of file instead of the closing PHP
   |       | tag. Please add a comment block containing only "End of file
   |       | test.php".
 2 | ERROR | Unable to find "/application/" in file path
   |       | "/home/mukai/test.php". Please set your project's application
   |       | root.
--------------------------------------------------------------------------------

上記のようにメッセージが表示されればOKです。

PHP フレームワークの比較


質問があればお気軽にコメント欄へお願いします!(只今、作成中です)

以下は、10-15分で発表する予定の内容です。

比較表

名称 URI ライセンス 対応する PHP 最新バージョン stable releases 開発元
FuelPHP http://fuelphp.com MIT 5.3 or newer 1.3 コミュニティ
CodeIgniter http://codeigniter.com CodeIgniter License 5.1.6 or newer 2.1.3 アメリカのEllisLab
CakePHP http://cakephp.org MIT 5.2.8 or newer 2.2.2 アメリカのCakeソフトウェア財団
Symfony http://symfony.com MIT 5.3.2 or newer 2.1.2 フランスのSensio社

フレームワークの特徴

FuelPHP
  • 特徴は、↓

http://tatsu-zine.com/books/fuelphp1st

FuelPHP は、2011 年7 月に最初のバージョン1.0 がリリースされた最新のフレームワークです。先行する多くのフレームワークを参考に、PHP 5.3 の機能をフルに活用しゼロから開発されました。最初からMongoDB やRedis をサポートし、RESTful なコントローラをすぐに作成できる最先端のフルスタックフレームワークです。しかも、シンプルで覚えやすく、かつ、軽量高速です。
新しいフレームワークですが、すでにGitHub では100 人以上の開発者がFuelPHP の開発に参加しており、ユーザも徐々に増え、品質や安定度も急激によくなってきています。

  • 補足
    • 1.0〜1.2にかけては品質がよくなったかも?
    • 1.2〜1.4にかけては変化なしかも?

FuelPHP のこの1つめのバグは1.3での修正時にテストがコミットされていないから1.4の修正でエンバグしてるように見える。バージョンの管理方法もそうだけどこういう修正のやり方をやっている限りは安心して使えない

CodeIgniter
  • 軽量高速
  • 小規模開発向け
  • 日本ではライセンス問題で話題になっているが、日本国外では、あまり話題になっていない感じがある。(会場の参加者に質問する)
  • 内部構造を説明
    • FuelPHP との共通点、違うところを説明
  • 国内での採用実績
    • MTV Japan
CakePHP
  • 小・中規模開発向け
  • 日本ではもっとも人気があるPHPフレームワーク
  • 設定より規約
  • 多くのルール(規約)がある

http://gihyo.jp/book/2012/978-4-7741-5324-7

2011年末にリリースされたCakePHP2は、内部の構造や基本的なルールが見直され、従来の情報がそのままでは活用しにくい。

  • 内部構造を説明
Symfony
  • 大規模重厚
  • 多機能な分、インストールや習得に多くの時間がかかる
  • 重いといわれていたが、symfony 1から改良され、シンプル・高速
  • DIコンテナ
  • バンドル
  • フォーム改良
  • 対象ドメイン独立な本体の設計
  • 内部構造を説明

『Find your Ability! for デベロッパ』第5弾 Symfony、CakePHP、Codeigniterと比較解説するWebアプリ開発の新星「FuelPHP」 10/25開催!

PHPのWebフレームワークについて、私が講演します。
ご興味のある方は、ぜひご来場ください!
よろしくお願いします。

  • 開催日時 2012/10/25 19:00 〜 21:00
  • 定員 50人
  • 受付期間 2012/10/10 16:30 〜 2012/10/25 15:00
  • 参加費 無料
  • 場所パソナグループ 本部 1F A,B,Cルーム
  • 住所 東京都千代田区大手町2-6-4
  • 参考URL http://www.pasonatech.co.jp/ca/ability/
  • 主催者 engineer_cafe

『関数プログラミング入門 ―Haskellで学ぶ原理と技法―』発売決定

関数プログラミング入門 ―Haskellで学ぶ原理と技法―』がオーム社より、2012/10/26に発売されるらしいです。

関数プログラミング入門 ―Haskellで学ぶ原理と技法―

関数プログラミング入門 ―Haskellで学ぶ原理と技法―

本書は『Introduction To Functional Programming, 2nd Edition (Prentice Hall Series in Computer Science)』(通称「IFPH」)の翻訳版です。

Introduction To Functional Programming, 2nd Edition (Prentice Hall Series in Computer Science)

Introduction To Functional Programming, 2nd Edition (Prentice Hall Series in Computer Science)

本書の前の版は『関数プログラミング』です。Haskell ではなく Miranda で記述されていて武市先生が翻訳されています。1991年に発売された本ですが、内容的には今でも通じます。しかし、 Miranda で記述されているために読むのを躊躇していた方は『関数プログラミング入門 ―Haskellで学ぶ原理と技法―』の発売を機会に読んでみてはいかがでしょうか。

関数プログラミング

関数プログラミング


関数プログラミング入門 Haskellで学ぶ原理と技法 - Faith and Brave - C++で遊ぼう

Haskell本の中ではこれが一番好きなので、この本を日本語で読むのがすごく楽しみです!

だそうです。

関数型言語に詳しい方にオススメの本を聞くと、よく名前にあがるのが『IFPH』もしくは『関数プログラミング』ですので、関数型言語界隈でも評価の高い本だと思います。

参考リンク

2012年10月新刊予定:関数プログラミング入門 Haskellで学ぶ原理と技法 - オーム社開発部

Haskellで学ぶ関数プログラミングの入門書。
本書はHaskellOCaml、F#、Scalaといった言語の普及により改めて注目される「関数プログラミング」の理論を体系的に学ぶ教科書"Introduction to Functional Programming using Haskell"(Prentice Hall, 1998)の翻訳です。
関数プログラミングにおける評価戦略、データ構造、計算量、型、モナドの仕組みなどについて、Haskellによるシンプルなコードを例に解説しています。

『関数プログラミング入門 Haskellで学ぶ原理と技法』出来! - オーム社開発部

『関数プログラミング入門』

Ohmsha | 商品一覧

主要目次

第1章 基本概念
第2章 単純なデータ型
第3章 数値
第4章 リスト
第5章 リスト処理の例
第6章 木
第7章 効率
第8章 抽象データ型
第9章 無限リスト
第10章 モナド
第11章 構文解析
第12章 自動運算器
付録

昨年の「函数プログラミングの集い」から話題になっていただけに、発売が楽しみですね!

10/2参考リンクなど、一部修正しました。