Laravelとは?

Laravel。
知識ゼロだが、ググって理解した内容を備忘録。

Laravelとは?

Laravelとは、PHPのフレームワーク

●PHP
PHPは、HTMLが静的なWebページを作成するのに対して、動的なWebページを作成するのに最適。ECサイトやSNSのようにデータと連動したページをイメージすると分かりやすいかもしれない。

●フレームワーク
フレームワークとは、システムやアプリ開発に必要な機能や基本的に骨組みをまとめたもの。フレームワークを使わずにプログラムを書くと時間がかかることも、必要最低限のプログラムを書くだけで、システムやアプリを作れるようになる。

Laravel」のほかにも「Symphony」「Codeigniter」「CakePHP」「Zend Framework」などPHPのフレームワークがある。

PHPフレームワークのトレンド

2022年1月現在、これからPHPフレームワークを使うとしたら、Laravel一択と考えたほうがいい。CakePHPはギリギリ。ちなみに、PHPフレームワーク自体、徐々に使われなくなっている。

さて、Google Trendsで人気度を見てみると、日本では「Laravel」一強。世界的には下記のグラフのように「Laravel」と「Symphony」の二強。「Laravel」は「Symphony」をベースに作られたフレームワークだ。Laravel一択と考えるには十分納得できる。

Laravelで具体的にできること

Laravel含め、PHPフレームワークを利用することで、たとえば下記のようなサービスが作りやすくなる。

  • 従業員の勤怠を管理する業務システム
  • 企業が運営するショッピングサイト
  • 交通機関や宿泊施設の予約サイト
  • 掲示板や口コミサイト
  • SNSサービス
  • ブログサービス
  • チャットアプリ

Laravelの特徴(メリット)

「慣れると爆速で開発できる」と言われている。

  • 分業開発がしやすい
  • 学習コストが低い
  • プログラムの拡張性と自由度が高い

分業開発がしやすい

MVCモデルを採用しており、分業して開発できる。
MVCモデルとは、Model(データ処理: データベースとの連携を担う)、View(画面表示: ブラウザへの表示を担う)、Controller(全体制御: 指令や指示を担う)の3つに分別し、機能ごとに開発を進める開発方法のこと。Laravelでは、コントローラを制御する「ルーティング」という概念がさらに加わる。

ユーザー視点でのMVCの流れ(ユーザーが画面に入力して、結果が表示されるまで)

  1. 入力された値をViewからControllerに受け渡し、
  2. ControllerはModelを呼び出し、
  3. Modelはデータベースから該当したデータを取り出して、Viewに出力値を受け渡し、
  4. Viewは結果を画面表示する

学習コストが低い

Laravelは後発として、それまでの人気の高いフレームワークの良いところを取り入れらている。さらに、機能やブラグイン開発の頻度に行なわれ、改良し続けている。そのため、ほかのPHPフレームワークより使いやすい。また日本語に翻訳された教材も豊富にあるので学びやすい。

さらにLaravelには、開発の効率化に最適な機能が搭載されている。たとえば、バリデーションチェックを自動でやってくれたり、データベースの操作が容易だったりする。

Composerでパッケージ管理できて、コマンドツールによって設定や更新が簡単。また、画面表示に軽量なテンプレートが使われている。

プログラムの拡張性と自由度が高い

フレームワークには基本的な機能が含まれており、その機能のプラグラムは自動生成される。そのプラグラム自体を自由に記述することができるため、利便性・拡張性・自由度のバランスが良く、扱いやすい。

Laravelの特徴(デメリット)

  • 豊富な機能ゆえに、処理速度は速くない
    → 機能重視には向いているが、速度重視の場合はほかのフレームワークを検討する
  • 自由度が高いゆえに、コードが複雑化・煩雑化しやすい
    → コーディングガイドラインや設計をあらかじめ用意する

最後に感想

「処理速度は速くない」が引っかかる。何と比べて速くないという判断なのだろうか。これまではWordPressをDBとAPIとして利用する、トリッキーな使い方をして、予約システムやチャットアプリを作っている。これより処理速度が落ちるとしたら、個人的にLaravelを使うことはないかな。

ただ「慣れると爆速で開発できる」というのは気になる。WordPressでの開発より爆速になるだろうか。WordPressならインストールした段階でログイン機能やユーザー管理機能はできている。さらにDB設計もプラグイン使って、GUIで簡単にできる。

とりあえずLaravelがどういうものか、理解していないワードがたくさんあるものの、その概念はなんとなく理解できた。