半年使って分かったPHPフレームワーク「Codeigniter」の魅力5つ

「私が「CakePHP」ではなく「CodeIgniter」を選んだ3つの理由」という記事を書いて、気づいたら早半年。選定してた時とまた違ったCodeigniterの魅力がわかってきましたので、簡単にまとめます。
なお、Codeigniterの日本語情報はrdlabo/CodeIgniter_Talkにまとめていますので、そちらもご参照くださいー。
お知らせ
CodeIgniter3の書籍を、PDF販売しております。日本語書籍がないことでお困りの方は、ぜひご利用くださいませ。
「はじめてのPHPフレームワーク PHP初心者がすぐ現場で活躍するための CodeIgniter3超入門」
1.フレームワークは大差がないことがわかった
PHPに限った話でも、いろいろなフレームワークが出回っております。メジャーどころでいうと、CakePHP, FuelPHP, Laravel, Symfonyあたりでしょうか。でも、実際のところCakePHPではできるけど、Codeigniterでは逆立ちしてもできない!みたいなものはありません。その逆もしかり。
プラグイン群を利用するなり、何なりすれば、どうとでも実装できる。フレームワークは、開発をサポートするためのツールであって、フレームワーク自体の優劣は直接製品に影響する範囲は限定的なんだなー、と強く感じています。
$_POST[“something”]の値を取得するのに、Codeigniterだったら「$this->input->post」と18文字打鍵しないといけないのが、FuelPHPだと「Input::post」と11文字の打鍵で済んで、1/3以上タイピングが少ない!とか、そういう差。
「Symfonyは大規模開発向け!Codeigniterは小規模開発向け!」とかいいますが、その大規模開発って子請け孫請けをつかって百人・千人体制でやる銀行のシステムとかそういうレベルのものなので、スタートアップ・ベンチャーレベルでは全く関係ないです。
2.だから、処理速度だけは重視したい
フレームワーク自体に大差がないのなら、次にみるべきは処理速度です。性能に大差がないのに、処理の遅いフレームワークを選定することはちょっと抵抗があります。下のグラフは、秒あたりの処理回数(速度)テストですが、pinocoはMVCモデルじゃないから早いことを考えると、Codeigniter圧倒的。
とりあえず早い、というのは大きな魅力かと思っておりますー。
[2015.10.19追記] 「2015年最新PHPフレームワーク(9つ)のベンチマーク」が発表されてますが、Phalconが最速で、SlimとCodeIgniterが続いています。フレームワーク選定でかなり参考になりますのでご覧ください。
3.Codeigniterは、ユーザガイドのwebデザインがイケてる(気がする)
でも、実開発においては、処理速度も大切な要素ですが、(私的には)使っててテンションあがるかというか、相性もかなりの比重で大切だよなーと、この半年で思うようになりました。
では、どこで相性を考えるかというところで、私は、ユーザガイドかなと思ってます。フレームワークを覚え、使っていく上で、一番よく参照するのはユーザガイドです。これがよくないと、作業しててテンションがあがらない。
Codeigniterは、これがイケてます。
1)Codeigniter 2系の公式ユーザガイド
http://codeigniter.jp/user_guide_ja/
上にある「Table to Contents」をクリックすると、しゅるしゅるっとメニューが降りてきます。
2)Codeigniter 3系の公式ユーザガイド
http://pneskin2.nekoget.com/codeigniter/3/user_guide/
Codeigniter 3系になると、レフトメニューになって、非同期で検索を行えるようになりました。JS系フレームワークも使ってるのかな。読みやすさは2系からの踏襲ですが、よりスタイリッシュな、今どきのデザインに。
3)ちなみに他のフレームワーク。FuelPHP
4)CakePHPとか
http://book.cakephp.org/2.0/ja/index.html
5)Laravelとか。
http://readouble.com/laravel/5/0/0/ja/installation.html
6)感想
デザインは好みもあるので何ですが、私はCodeigniterの3系が一番好みです。おしゃれ!クール!
で、もうひとつはユーザガイドの書き方なのですが、ユーザガイドって
・ブログとかを作りながら操作を覚えるよりステップアップ式
・機能一覧があって、必要なところだけを斜め読みに出来る式
の二種類のガイドの仕方があると思うのですが、私的には後者の方が好みです。FuelPHPのGuideのデザインが好みだったら、浮気してる可能性が大きいですが、今のところ一途にCodeigniterです。
4.コーディング規約より設定優先
CakePHPが代表的なのですが「設定より規約優先」を掲げていて、決められた規約どおりに書かないと動かなかったりします。代表的な規約はこんな感じ。
なので、新人さんに指示して使わせるにはCakePHPがいいらしいです。ある程度めちゃくちゃなコーディングができないように制限されているので、いきなり現場に投下しても、まぁ、まだ、ましとか・・・。ただ、規約を覚えないといけないので、学習コストは高いです。
それに反して、設定優先のCodeigniterはModelとViewを使わずに、Controllerで全てを制御できたりと自由度がすごい高いフレームワークなのですが、元々オレオレフレームワークを使ってた私にとっては自由度が高い方がやりやすく、とっかかりやすかったです。
PHPがある程度書ける人だったら、数時間ドキュメントを読んだらいきなり開発に入れる感じのゆるさがお気に入り。
このゆるさがあるので、かなり試行錯誤してのリファクタリングも可能で、納得のいくコードが書きやすい。
5.コミュニティが顔が見える距離
Codeigniterって、世界シェアが大きい割に、日本では驚くほどシェアが少ない。その分、CakePHPは日本でシェアが大きい。
ということで、なぜかCodeigniterはフレームワークとしては安定しているのですが、ユーザ数が少なくて、コミュニティが小さいのです。どれぐらいかというと、ユーザ会はCodeigniterとFuelPHPと合同で行われるレベル。
FuelPHP&CodeIgniter ユーザの集い #7
なので、顔が見える規模で、コミュニティに入りやすかったです。普段、関西におりまして、このユーザ会は東京開催なのですが、スケジュールに合わせていって楽しく時間を過ごせる感じ。
フレームワーク毎に出来ることってほとんど変わらないなら、コミュニティで決めるというのもありかと思います。
そんな感じで、いい加減本体にPHPUnitのサポート環境組み込もうよ、とか、namespace対応してくれてもいいのにとか、思うことはあるのですが、多分これからも使い続けると思います。
それでは、また。