symfonyとcodeIgniterの違い

久しぶりにブログ書きます! 昨日今日とiOSのハッカソンに行ってきたので、その時に得た知識をこれから少しずつアウトプットしていく予定です まず今日はphpのフレームワークであるcodeIgniterについて、 前に使ったことのあるsymfonyと比べてどうだったか書いていきます! symfonyとcodeIgniterを両方使うような人はいないのか、すごい大雑把な比較しか周りになかったので、 ちょっと細かめに、具体的にどういう部分がどうなのかという点で比較したいと思います。

プロジェクトの規模について

codeIgniterは小規模用とよく言われるようです。使ってみた感じも小規模用だと思いました。 なぜかというと、symfonyと比べて圧倒的にファイル数が少ないからです。 ファイル数が少ないというのは、機能ごとに細かくファイルを分割していないということで、 多人数が同時にファイルを変更したりするときにコンフリクトになりやすいです。 しかしのその一方、一人二人で作る場合にはファイルを開くという手間がかなりヘリ、だいぶ楽になります。 また、symfonyでよくあるプロジェクト全体の設定があって、その中にフロントエンドとしての設定があって・・・といった設定の上書きがなく、設定を場所によって変更したりしない(できない?)というのも小規模向けだと思います。

小回りについて

symfonyに比べ、すごい小回りが効きました。具体的にはデータベース周りが非常に差を実感しました。 symfonyの場合、データを挿入するまでには、schemaをyamlでかいて、それをmigrateして、formValidatorを設定して、それぞれのform用にvalidatorをカスタマイズして・・・とかなり段階を踏まなければいけませんでした。 codeIgniterでは巣のphpじゃないかと思うほど簡単に、撮ってきた値に対してvalodatorを書いて、そのあとは自分でSQLを書くという形でデータを入れます。 formの形が何であろうと、keyとvalueしか見ないので幅が広がり、手間暇も少なかったと思います。

速度が早い

これは実測したわけではないのですが、symfonyよりも体感がはやくかんじました。 ベンチマークで検索してみるいろいろな人が計測してくれたデータがありますが、やはり速いようです。 待ち時間でストレスがたまる、といったことは全くありませんでした。 (作ったプロジェクトが小さすぎたという可能性もあり)

不便なところ

小回りが効く、の裏面なのかもしれませんが、何をやるにしても自分でやらなければいけないというのがあります。 データベースのデータをオブジェクトで扱いたければそれ用のライブラリを自分で探さなければいけません。 フレームワークとしてはおそらく最小限のことしかしてくれないので、それ以上は自分で自由にやる形でしょうか。 あと、特にautoloadをしてくれないおかげでモデルやらライブラリやらを使うときは明示的にロードをしないといけないというのも不便でした。

会場ではfuelPhpを使って開発した人もいて、その人はすごい使いやすいと言っていたので次はfuelも試してみたいな〜とおもってます!