こんにちは!葛山です。
今回会社でアドベントカレンダーをやろうということで僕も慣れないブログを書いてみることにしました。
業務でコードに触れることは少なくなったのですが、最近Laravelを勉強したので昔使っていたFuelPHPやCodeigniterとの比較記事を書こうと思います。
はじめに
パーソンリンクは2011年に僕が立ち上げた会社なのですが、少人数だったので僕がPMを担当しながらプログラマーも兼務しているという状況でした。
最初はCodeigniter、2012年からはFuelPHPをメインに使っていました。
なぜPHPなのか
僕がPMの時にPHPを採用していた理由は「人が集めやすい」からです。
開発案件は急に始まるので、その際一番苦戦するのが人員の確保です。
当時はうちのメンバーの人数も少なく、外部の方と一緒に即興でチームを組むこともありましたので(開発では割とそれがスタンダードなのかも)その際一番募集をかけやすかったのがPHPでした。
PHPはWEBアプリ開発において人気のプログラミング言語なのですが、フレームワークの種類が多すぎて何を使うべきかわかりませんよね。
そこで今回は、数あるフレームワークの中で僕が推しているLaravel、FuelPHP、Codeigniterについて比較と解説をしていきたいと思います。
学習コスト
僕の体感だと
Laravel > FuelPHP > CodeIgniter
です。
CodeIgniterを初めて使った時、それまでZend FrameworkやSymfonyなどを使っていましたが、学習コストの少なさに驚きました。
CodeIgniterで街コンサイトを作ったのですが、PHPさえ知っていればほぼ学習せずに作り上げるところまではいけました。ピュアなPHP+αってイメージです。
FuelPHPとCodeIgniterの差は機能の多さで、フレームワークとしての本質はあまり変わらない印象です。
まだ勉強を始めたばかりなのですが、LaravelはRuby on Railsみたいないイメージでコーディング規約もちゃんとあるので大規模開発にも適応できそうです。
開発環境の構築も簡単でドキュメントも読みやすかったです。
AWSやSNSとの連携等、機能がたくさんあるので使いこなそうと思うと学習コストはかかりますが、これさえあれば大体のwebアプリ開発は完結できそうです。
処理速度
検証していないので後日上げますw
他の記事を読んだところこの中ではCodeIgniterが一番高速らしいですね!
柔軟性と拡張性
CodeIgniter > FuelPHP > Laravel
です。
CodeIgniterが一番コーディング規約などの制限が緩く、自分で書きやすいように書いていくことができます(僕は簡単なシステムを作るときはModelはほぼ書かずに既存ORMのみで書きました)
フレームワークの拡張もしやすくcoreをオーバーライドすることで簡単に拡張できます。
個人的には2人以上が関わるプロジェクトにはオススメしませんが、今はもしかすると良い管理方法があるかもしれません。。
FuelPHPもCodeIgniterの開発者の一部の人たちが作っていることもあり、似ている部分は多いです。
規約が緩いのは変わらないですが、Oilコマンドでクラスの自動生成ができるので、そこである程度型が決まってきます。
ディレクトリ構成もわかりやすく、coreの拡張がし易いです。
下記のようなディレクトリ構成になっていますが、appとcoreの配下がほぼ同じ構成になっているので拡張したいcoreがあればそれをappでオーバーライドして記述すれば良いのです。
ルートディレクトリ/
├fuel/
│ ├app/
│ ├core/
│ └packages/
│
└public/
├assets/
└index.php
また、CodeIgniterではデフォルトでドキュメントルートにシステムファイルが置かれてしまっていましたが、publicディレクトリに切り離されたのでセキュリティ的にも良くなりました。
Laravelはプラグインが充実していることとフレームワーク自体の完成度が高いため、coreなどを柔軟に拡張することは前提としていないのですが、ベースとなるController等どのプロジェクトでも拡張するようなクラスはデフォルトでapp配下に置いてあるのでそれを拡張していく感じです。
それ以外を拡張する場合は少し面倒で、ただcoreを継承するだけではなくService Providerを書かなければいけなかったり工程が多いので柔軟性は他の二つに比べると一番低いとしました。
ただし、前述したようにcomposerで簡単に高機能なプラグインが導入できるので拡張性は高いとも言えます。
まとめ
ここまで僕の所感を元にPHPのフレームワーク比較をしてきましたが、現在のイチ推しはLaravelです。
理由はフレームワークの性能以上に、メンテナンスの頻度やプラグインの豊富さなどがビジネス要件を多く満たせるかの鍵になってくるので、今トレンドのものを選択するのが一番良いからです。
これからPHPを学ぶ人はLaravelから始めてみましょう!