ROBOT PAYMENTエンジニアのkanemotoです!請求管理ロボの開発を担当しています。
初心者にとって、フレームワークの選択は非常に重要です。学習コストや開発効率に大きな影響を与えるため、慎重に選びたいものです。この記事では、PHPでのプログラミングを学びたいと考えている方や初めてのフレームワーク選びに迷っている方を対象に、LaravelとCodeIgniterの比較を通じて、どのフレームワークが学習に適しているかを比較していきます。
対象バージョン
Laravel 5.6
Codeigniter 3.1.11
構造の概要
主なディレクトリは以下の通りです
「CodeIgniter」
- application: アプリケーションのコントローラ、モデル、ビューなどのコアファイルが格納される場所です。
- system: CodeIgniterフレームワーク自体のシステムファイルが含まれます。 ※アプリケーションのエントリーポイントとなるindex.phpファイルが存在し、このファイルが公開ディレクトリとして機能します。index.phpファイルは一般的にウェブサーバーのドキュメントルートまたは公開ディレクトリに配置されます。
「Laravel」
- app: アプリケーションのコントローラ、モデル、ビューなどが格納されます。
- bootstrap: アプリケーションの起動や設定に関連するファイルが含まれます。
- config: アプリケーションの設定ファイルがあります。
- database: データベース関連のファイルが格納されます。
- public: 公開ディレクトリで、CSS、JavaScript、画像などの静的ファイルがあります。
- resources: ビューファイル、言語ファイル、アセットファイルなどのリソースがあります。
- routes: アプリケーションのルーティングが定義されています。
- vendor: Composerによって管理されるパッケージがあります。 ※バージョン6.xからはデフォルトでbootstarapが使用できなくなりました。
学習比較
まず構造から見ていきましょう
「CodeIgniter」
applicationディレクトリ配下には下記ディレクトリがあります。(一部抜粋)
- application
- controllers
- models
- views
MVCの構造が一眼でわかりやすいディレクトリ構造です。 一階層目のディレクトリもapplicationとsystemだけで構成されており、非常に軽量です。
「Laravel」
appディレクトリ配下には下記ディレクトリがあります(一部抜粋)
- app
- Http
- Controllers
- Http
- resources
- views
MVCの構造ごとにディレクトリを列挙するとmodelディレクトリがありません。
laravelには- コマンドラインツール「Artisan」が付属しており、こちらを使用してプロジェクトの作成やコントローラーの作成、DBマイグレができます。
php artisan make:modelでmodelを生成するとapp/Http/Controllers配下にmodelに関するファイルが直接作成されてしまいます。
そのため、Modelsディレクトリが欲しい場合は専用のModelsディレクトリを自身で作成する必要があります。
それぞれのメリット
「CodeIgniter」
- シンプルで使いやすいMVCフレームワークであるため、初心者にも扱いやすいです。
- 軽量なフレームワークであり、高速に動作します。
「Laravel」
- フレームワークの性能よりも、メンテナンスの頻度やプラグインの豊富さが重要視されています
- Laravelは、他のフレームワークと比べて、フレームワークの性能よりも、メンテナンスの頻度やプラグインの豊富さが要件を満たしやすい場合があります。
- ドキュメントは豊富で日本語にも対応している
- ドキュメントが多く、日本語にも対応しているため、開発がしやすいというメリットがあります。検索したときの情報量が圧倒的に多いです。
- 「Laravel」とGoogle検索したときのヒットボリューム 約 81,500,000 件
- ドキュメントが多く、日本語にも対応しているため、開発がしやすいというメリットがあります。検索したときの情報量が圧倒的に多いです。
それぞれのデメリット
「CodeIgniter」
- ドキュメントが不十分
- CodeIgniterの公式ドキュメントは、他のフレームワークと比べると不十分な場合があります。また、日本語のドキュメントも少ないため、英語が苦手な人にはハードルが高いかもしれません。
- 「Codeigniter」とGoogle検索したときのヒットボリューム 約 18,900,000 件
- CodeIgniterの公式ドキュメントは、他のフレームワークと比べると不十分な場合があります。また、日本語のドキュメントも少ないため、英語が苦手な人にはハードルが高いかもしれません。
「Laravel」
- ディレクトリ構造が複雑で理解しづらい
- 他のフレームワークと比べて、Laravelのディレクトリ構造がやや複雑であるため、初めて触る人には理解が難しい場合があります。
- フレームワーク自体のサイズが大きく、リソースの消費が多い
- Laravelは他のフレームワークと比べて、フレームワーク自体のサイズが大きく、リソースの消費が多い傾向があります。大規模なコードにするとGitHubなどの課金が必要になる場合があります。
- 他のフレームワークと比べてコーディング規約の制限が厳しい
- CodeIgniterなど他のフレームワークに比べて、Laravelはコーディング規約の制限が厳しいです。プラグインによる拡張もしやすいのですがLaravelの構造に理解が深まらないと人によってはコアな箇所において柔軟な拡張開発がしにくい場合があります。
まとめ
CodeIgniterは、軽量であることを強みとしているフレームワークですが、実際にはフォルダ構造を決めた、ファイルの集合体に近いとも言えます。しかし、そのシンプルで使いやすい構造により、初心者から上級者まで幅広く利用されています。 Laravelは、PHPのフレームワークの中でも非常に人気のあるものです。Laravelは、CodeIgniterよりも機能が豊富で、より高度な開発ができるように設計されています。
私個人的には初心者にはCodeigniterがおすすめです。学習コストが低く、MVCの構造を最も理解しやすい状態がフレームワークをインストールした時点から整っています。慣れてきたらLaravelを触ってみると理解もしやすいのでフレームワークを比較しながら学習するのも一つの手かもしれません。
Web開発において、フレームワークは開発を効率化するための重要なツールです。CodeIgniterとLaravelは、それぞれ特徴が異なるため、開発するプロジェクトに合わせて使い分けることが大切です。自分に合ったフレームワークを選び、より良いWebアプリケーションを開発することができるように頑張りましょう。
We are hiring!!
ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!
speakerdeck.com
www.robotpayment.co.jp
🎉twitter採用担当アカウント開設!🎉どんどん情報発信していきます!!