こんにちは。シュウです。
今からちょうど10年前、2011年の6月に「Laravel」が誕生しました。
LaravelはPHPフレームワークとはいえ、個性的な文法を持っています。プレーンのPHPより簡潔な構文ができることが特徴です。
それに、CSRFというセキュリティー対策の仕組みも用意されている上、
制作の自由度もかなり高いです。
公式ウェブサイトに「ウェブ職人のためのフレームワーク」というキャッチコピーが使われているのも納得できます。
そのため、10年経った今でも、PHPフレームワークの中で、
Laravelの人気は途絶えることがありません。
プレーンなPHPやJavaScriptは、制限がなく文法さえあれば動きますので、プログラマーによって書き方が異なってきます。
「Laravel」などのフレームワークは定めたルールや制限をもとにプログラムの作成をある程度正規化したものです。そうすることで、プログラムを管理しやすくなったり、セキュリティを高めることが可能になります。
MVCという言葉はModel、View、Controllerという三つの単語の省略語です。
Modelはデータベースとの直接なやりとりを担当します。
Viewはデータを表示することを担当します。
ControllerはModelやViewを繋いで、実際にユーザーのリクエストを受けて処理することを担当します。
では、Web制作の「生産ライン」は一体どのように動いているでしょうか。
まず、Web制作の生産にて、登場する部門を見てみましょう。
Routing 生産部部長
どの経路で生産するかという判断をする部門
Database 倉庫
材料の貯蔵や保管
Model 出荷・入荷
原材料を管理する部門
Controller 生産部
実際に製品をユーザーの希望通りに制作する部門
View 出品・運輸
制作完了の品を消費者に渡す部門
MVCの考え方を採用するWeb生産ラインは以下の流れで動きます。
① お客さまからの需要を受けます。
ユーザーからリクエストを受けます。
② 生産部部長が需要を見て、どのように生産するかを判断し、指示を下します。
ユーザーがどのような情報を欲しているかを元にルーティングが判断し、実際に処理するコントローラーに指示を出します。
③ 生産に必要な材料を入荷・出荷担当に申請します。
ユーザーのリクエストをもとに、処理に必要なデータをモデルに申請します。
④ ⑤ 倉庫から材料をもらいます。もしくは、倉庫に指定の材料を入庫します。
データベースから必要なデータを取り出します。もしくは、データベースにデータを入れます。
⑥ 生産部が申請した材料分を渡します。
データベースから取り出したデータをコントローラーに送ります。
⑦ 生産を完了した後、製品を運輸部門を経由して、お客さまに渡します。
コントローラーが処理したデータをビューに渡します。
ビューがデータを描画し、ユーザーに返します。
では、部門ごとに、担当業務や業務スペースを見ていきましょう。
担当業務
・材料の入荷・出荷
データベースからデータをもらったり、入れたりすることを担当します。
・材料の処理
コントローラーの指示をもとにもらったデータに整形処理をします。
業務スペース
プロジェクトフォルダ > appフォルダに入っています。
新規作成
ターミナル命令
1 |
php artisan make:model モデル名 |
ファイル名の命名ルール
モデルは基本的にテーブル、コントローラーとセットです。
一つのモデルが一つのテーブルのデータを管理します。
モデルのファイル名は、テーブル名の単数形で、頭文字を大文字にする決まりがあります。
担当業務
・生産する経路の判断と指示
ユーザーのリクエストを受け、適切なルートを選んで、コントローラーに指示をします。
・受注できるかどうかの判断する
ユーザーが持っている権限で見れるデータかどうかを判断します。
業務スペース
プロジェクトフォルダ > routes > web.phpファイルから編集できます。
担当業務
・製品の生産
モデルからもらったデータを組み直して、ユーザーがほしい形に制作します。
・入荷/出荷担当への指示
データの整形処理が必要な場合、モデルで定義した関数を呼び出して、処理を行います。
業務スペース
プロジェクトフォルダ > app > Http > Controllersフォルダに入っています。
新規作成
ターミナル命令
1 2 3 4 |
php artisan make:controller コントローラー名 // モデルと同時に作成することが可能です。 php artisan make:controller コントローラー名 --model=モデル名 |
ファイル名の命名ルール
コントローラーのファイル名はモデル名プラス「Controller」の組み合わせです。
担当業務
・生産した製品をお客さままで届くこと
コントローラーからもらったレスポンスデータを描画します。
業務スペース
プロジェクトフォルダ > resources > viewsフォルダに入っています。
ファイル名の命名ルール
データを描画するファイルは「.blade.php」という特別な拡張子を持っています。
自分は「Laravel」を触って1年経ちました。「Laravel」はバックエンドの制作においての便利性に魅了されました。とくに「resource」というデータの表示・作成・更新・編集・削除の基本機能を一貫化した指定方法は複雑なデータ処理を簡単に管理できることに感心しました。
今年は「Laravel」誕生10周年ということで、「Laravel」が採用した考え方を自分の視点で軽く述べてみました。
あくまでも自分の理解で、不適切な部分や誤りの箇所もあると思いますが、ご容赦ください。