# Laravel について

# 1. PHP の特徴

Laravel は PHP フレームワークの 1 つです。 そもそも PHP は、Web アプリケーションの開発を手軽に実現することができる、という特徴を持ったプログラミング言語です。 動的な HTML の生成も、データベースアクセスなどのロジックも、同じような仕組みを使いながら柔軟にプログラミングできてしまいます。しかし、柔軟であるが故に整理されていないプログラムが容易に出来上がってしまうという側面を持ちます。

# 2. フレームワーク

フレームワークとは、Web アプリケーションやシステムを開発するために必要な機能があらかじめ用意された枠組みです。 フレームワークを利用して開発されたプログラムは、フレームワークが提供する整理された仕組みで出来上がります。 また、セキュリティを強化したり、データベースアクセスを効率よくプログラミングしたりするのに便利な、多種多様な機能が、通常フレームワークには備わっています。

また、フレームワークを活用することで、フレームワークの思想に沿った共通的な形式でのコーディングが可能になるため、エンジニアによる記述の差異を減少させられ、ソースコードの可読性と保守性が向上するというメリットもあります。

一方で、フレームワークの活用には一定のデメリットもあります。 まず、フレームワークには使用法の決まりがあり、自由にコードが書けずに開発に制限が生じる点がデメリットとなります。 また、フレームワークを初めて利用する場合、プログラミング言語とは別にフレームワークの知識が必要となるため、ある程度の学習コストがかかる可能性があります。

<プログラミング言語とフレームワークの例>

  • Ruby
    Ruby on Rails

  • PHP
    CakePHP、Laravel、FuelPHP

  • Python
    Flask、Django、Bottle

  • Node.js
    Next.js、 Nuxt.js

フレームワークとライブラリの違いとは

フレームワークとよく似た言葉に、ライブラリというものがあります。これらはどちらもプログラミングを助けてくれるものですが、その位置づけが異なります。

ライブラリは、よく使う機能をパッケージ化した部品として、構築したアプリケーションに読み込んで利用するものです。ライブラリはあくまで「部品」であり、自身の作成したプログラムの中で部分的に活用します。 一方で、フレームワークはそれ自体がアプリケーションの「枠組み」を提供するものです。開発者はフレームワークが作成したコードを修正したり、新たにコードを追加したりして利用することになります。

  • ライブラリ:便利な機能を集めたもの
  • フレームワーク:アプリの基礎や土台、枠組み

# 3. Laravel の特徴

Laravel のプロジェクトは MVC モデルに基づいて構成されています。

MVC フレームワークとは、Laravel に限らずさまざまなフレームワークに用いられている考え方です。

  • M … Model
  • V … View
  • C … Controller

上記の頭文字を取って MVC と呼ばれています。

開発の現場ではフロントエンドとバックエンドを分けて開発する場面が多いです。 しかし、PHP はバックエンド言語ではあるものの、HTML に直接記載する言語なので、見た目に係る部分と、裏側で動作する部分の開発が混同しやすい傾向があります。 そこで MVC モデルでは、ユーザーから見える部分を View、データベースの操作などユーザーから見えない部分を Model、そして View と Model の仲介役を Controller とします。

mvc

MVC で構成された Web アプリケーションが、ブラウザーから実行されるときの処理の流れは、このようになっています。

  1. ブラウザーから Controller にリクエストを送る
  2. Controller は Model にデータの処理を依頼し、Model は Controller に処理の結果を返す
  3. Controller は View に結果を渡す
  4. View からブラウザーにレスポンスを送る

今回は To Do アプリ開発の View に React.js も利用していく形になります。