【エンジニア向け】Laravelが首位爆走!WebフレームワークでLaravelが使いやすい理由
最近、言語問わず、Web系のシステムを構築するためのフレームワークがかなり多く出回るようになった。
ところが、
という話もチラホラ出るようになってきた。
今回は、その中でもおすすめのWebフレームワーク「Laravel」について紹介する。
Webフレームワークで、Laravelが1位を爆走!
フォローしているHajimeさんのツイートで面白いのがあったので、早速紹介する。
上位4WebフレームワークのGithubスター変化はグラフにするとこんな感じ
Laravel
1位爆走
Ruby on Rails
普通に使われてるがDjangoに抜かれて3番手落ちるの避け難い
Django
近い内にRuby on Rails抜く予定
WP←PHP→Laravelに対し
解析←Python→Django
方面で共通化出来るの嬉しい
Meteor
終わり pic.twitter.com/Ehu1iFoloq
— Hajime@管理人/CEO&CTO/検索エンジニア/AWSアーキテクト&スクラムマスタ- (@hikarine3) 2019年2月24日
ツイートに含まれているグラフを見ればわかる通り、2018年頃からLaravelのGitHubスターの数が、他のフレームワークよりも群を抜いて多いことがわかる。
それだけ、LaravelはWebフレームワークとして非常に使いやすいのだ。
Laravelが使いやすい理由
では、なぜLaravelがWebフレームワークとして非常に使いやすいのか?を整理してみた。
- composerを利用した拡張が容易
- Artisanコマンドで、コントローラやモデルクラス、さらにシード(初期データ追加)も簡単に実装可能
- ディレクトリ構成が自由
- URLルーティング(URLと処理の紐づけ)やぱんくずの実装が簡単
- 論理削除の実装が簡単
- DI (依存性注入)と サービスコンテナをサポートしている
- AWSとの親和性が高い
- Webコーダー向けのツール「Gulp」をサポート
特に、7のAWSとの親和性が高いのは大きなメリットだ。
- メール送受信機能をサポートするAmazon SESとの連携の実装も容易
- 高容量のクラウド型ストレージAmazonS3との連携も簡単に実現可能
- Amazon CodeStarといったCI(継続的インテグレーション)環境もLaravelなら短期間で構築可能
といったメリットは、開発者の作業効率を大幅に上げるだけでなく、車輪の再発明(他者が作ったものを1からつくってしまうこと)や、ソースコードの保守スコープを下げることができる。
Laravelの弱点
Laravelの導入については、当然デメリットもある。
特に、巷でも言われているのが、
- SymfonyやCakePHP等、他のPHPフレームワークで構築したサイトに比べるとサイト閲覧速度(レスポンス)が遅い
- 実装の自由度が他のフレームワークよりも高いため、開発チーム内でシステムの実装方針を固めておかないと、開発者ごとに実装方針がバラバラになりやすい
という弱点だ。
1のパフォーマンスの件については、特に大規模なサイトになるほど、このデメリットが顕著になりやすい
採用する際の開発規模の大きさやパフォーマンスの重要性については、予め注意が必要だ。
ただし、この点については、Laravel側のキャッシュ機能やAmazonCloudFrontのようなCDN等を利用することで、十分にカバーできる。
2の実装の自由度については、たいていの場合、コーディング規約やガイドラインの未策定や不徹底が要因に上がることが多い。
逆に言えば、実装の自由度が高いと、開発チームごとにある程度の実装方針を自由に決められるメリットもあるので、開発チーム内で実装方針を決めコーディング規約やガイドラインを策定・整備してから実装するとよい。
Laravelの導入に向いているプロジェクト
Laravelの導入に向いているプロジェクトは何か?というと、主に以下の要件に当てはまる場合だ。
- 高パフォーマンスを厳密に問われないプロジェクト
- 納期が短いプロジェクトや、アジャイル開発のプロジェクト
- 小さな規模のプロジェクト
特に、Laravelが標準で利用するcomposer(PHPの機能拡張ツール)は、C#(.NET Core)のnugetと同じく様々な機能拡張をサポートしているので、少人数で小~中規模の開発案件を回す場合はベストだ。
PHPを触っているエンジニアは、一度PHP Laravelを触ってみるとよいだろう。
最後に
ここまで、Laravelの主な特徴とメリット、デメリット、利用した方が良い案件についてお伝えした。
今後は、このサイトを中心にして、Laravelに限らずIT知識(プログラム、ネットワーク、データベース等)やプログラミングについて、まとまった教材やハンズオンをサポートしていく予定だ。
もし、読者の中でもっと知りたい分野についてのご要望がある場合、ぜひお問い合わせフォームよりリクエスト頂ければ幸いである。