Lesson 1
はじめに
Lesson 1
Chapter 1
この講座の目標
Lesson 1
Chapter 2
Laravel
Laravelとは
Laravel(ララベル)は2011年にリリースされたPHPのフレームワークの一つです。Symphony(シンフォニー)というPHPのフレームワークを基に開発されており、MVCモデルを採用しています。Laravelの大きな特徴として、柔軟性に優れており自由度の高い設計や開発を行うことが可能な点から、現在では最も使用されているPHPのフレームワークとして人気を誇ります。
フレームワークとは
開発のしやすい環境が整っており、必要なライブラリの導入がしやすくなった枠組みのことをフレームワークと言います。機能を実装する為にはプログラムの記述行っていきますが、フレームワークを導入することで容易に実装することも可能となります。これはフレームワークに標準で搭載されている機能が複数存在している為です。又、LaravelではComposerというパッケージ管理ツールが使用されており、開発に必要なライブラリのインストールもコマンドの実行によって容易に準備することが可能です。
MVCとは
MVCとはLaravelの設計モデルである「Model」「View」「Controller」それぞれの頭文字を合わせてMVCやMVCモデルと呼ばれています。まずはMVCそれぞれの役割についてユーザーの新規登録を例に説明していきます。
・Model(モデル)
モデルはデータベースとの連携を行っている場所を表しています。モデルを使用することでデータベースからデータの取得や追加、削除、更新などデータベースの操作が可能となります。他にもデータ操作時の設定や、別モデルとの関係性を定義する場所としても利用されています。モデルは基本的に一つのテーブルに対し一つのモデルが存在し、テーブル名の単数形で命名してあげます。
モデルの場所:app > Models > モデル
モデルの命名規則:(例)usersテーブルのモデル = User.php
・View(ビュー)
ビューはブラウザに表示される部分のことを表しています。htmlと同じ役割を果たしており、ページのレイアウトやデザインに関する記述を行う場所です。ビューは○○.blade.phpと命名してあげます。
ビューの場所:resources > views > ビュー
ビューの命名規則:○◯.blade.php (例:index.blade.php)
・Controller(コントローラ)
コントローラは処理を実行する場所を表します。例えばページの表示を行う処理やデータの取得、追加、削除、更新など実行する処理の記述を行う場所です。
コントローラの場所:app > http > Controllers > コントローラ
コントローラの命名規則:○◯Controller.php (例:UsersController.php)
MVCモデルを採用するメリット
実際にLaravelで採用しているMVCモデルを扱っていく上で、どのようなメリットがあるのかを説明していきます。
①チームでの開発やプロジェクトへの途中参画がスムーズに行える。
上記でMVCについて説明致しました。MVCそれぞれのファイルは記述する内容によって分けられています。DBに関する処理はモデル、ページ表示に関する記述はビュー、システムの処理はコントローラとある程度定義づけられています。その為、自分以外のチームメンバーが記述した処理もどの部分に記載されているのか、途中参画の場合でも、処理を追加する場合はどのファイルに記述したら良いのか、ある程度の想定ができている状態で開発を行うことができます。
②バグやアップデートの対応が行いやすい
実際に運用が開始されているサービスがあるとしましょう。レイアウトに崩れが生じていたり、処理を実行しても処理通りの動作になっていない場合は修正する必要があります。どこにどのような処理が記載されているか想定することができていれば、エラー対応のスピードが向上し、サービスとしても良いサービスを築き続けることができます。何か新たに機能を追加する場合も、その機能を実装する担当者が変わり続けても記述に統一感を持たせることができる為、保守や運用、開発もスムーズに行うことが可能です。
③チームでの開発が行いやすい
MVCモデルのようにどのファイルに何の記述をしたら良いか、明確化されている為チームでの担当分けも行いやすく、別の開発者と並行して開発を行うことが可能です。開発効率が上がりスピード感の向上にも繋げることが可能です。
MVCモデルを採用していない場合
開発者によってコードの書き方や考え方など異なります。それぞれの自由に実装してしまったサービスでバグが起きた場合、その原因を見つけるまでにどれ程の時間が掛かるでしょうか。原因を絞り込めても、3つのファイルで記述すべき処理を1つのファイルの1箇所でまとめられていた場合、修正にも時間が掛かる上に別の処理に影響がないかテストにも時間がかかります。それは良いサービスとして維持していくことどころか、予期しない処理による情報漏洩などのエラーにも繋がってしまうリスクも上がります。これは修正だけでなく機能の実装でも同じことが言えます。実装してから修正はこのようなリスクが含まれる為、最初から一貫性を持って開発を進めていく為のMVCモデル採用であり、開発者はこのMVCモデルを心がけていく必要があります。
LaravelとMVCの関係
それでは上記のMVCがどのような関係性なのかを、引き続き会員登録の例を基に図を用いて説明していきます。
①[ユーザー]
会員情報を入力し、登録ボタンを押す。
②[web.php](※Lesson3で紹介します。)
ユーザーが実行した処理に応じて該当のControllerへ処理を渡す。
③[Controller.php]
ユーザーをデータベースに登録する処理を実行する。
④[Model]
データベースへユーザーの情報を作成する。
⑤[DB]
処理実行の結果をModelへ返す。
⑥[Model]
controllerから受けていた処理(ユーザー登録)の結果をcontrollerへ返す。
⑦[Controller.php]
返ってきた結果を基にユーザー作成が成功していれば、トップページを表示するblade.phpへ。失敗していればエラー画面を表示するblade.phpへ遷移する。
⑧[blade.php]
controllerから指定されたページがユーザーに表示される。
このようにページの表示から登録の処理はMVCそれぞれのファイルが繋がり、一つの機能が完成しています。表面だけを見れば個人情報を入力して、新規登録が完了されていますが、実際にはこのような処理が流れて登録処理から画面表示までの処理が行われていることを認識しておきましょう。
他フレームワークとの対比
Laravelは現在に至るまで最も人気なPHPのフレームワークとして有名です。Laravelに次いでCakePHPというフレームワークが人気となっていますが、LaravelはCakePHPに比べおよそ4倍のシェア率を誇ります。実際にフリーランスの求人などでPHPの募集を見てみるとLaravelを導入しているプロジェクトが多くあります。興味のある方は調べてみると良いでしょう。LaravelとCakePHPの特徴については以下になります。
Laravelの特徴
状況によって開発の手法を変更したり、臨機応変な開発が可能な為、柔軟性に優れた開発を行うことができます。その為、途中の仕様変更に対応ができたり、開発者が開発、保守、運用を行いやすいようにディレクトリ構成をカスタマイズすることも可能です。中、大規模なシステムを開発する場合に用いることでメリットを大きく発揮することでしょう。学習面では、最も人気なフレームワークであるが故にLaravelに関する情報も豊富で、比較的学習も行いやすい点が挙げられます。
Laravelのカスタマイズについて
上記項目ではMVCモデルについてLaravelの基本設計をお伝えしましたが、Laravelの特徴の一つとして柔軟性が挙げられます。その柔軟性を生かし、プロジェクトによっては更に細かく処理を細かくカスタマイズしたり、開発、保守、運用など、どのポイントを重要視して開発を行うかであえて設計モデルに変更を加えているプロジェクトも存在します。ベースとしてMVCモデルは存在しますが、変更が加わっている場合もあることを認識しておいてください。この教材では先のLessonにて、設計モデルが変更しているパターンもご紹介していきます。
CakePHPの特徴
開発ルールが非常に厳格であることが特徴です。CakePHPの開発ルールから逸れた場合に処理がうまく動かないケースが生じる為、柔軟性に欠けています。一見、これはデメリットのように聞こえるかもしれませんが、ある程度の開発ルールは最初から決まっているというメリットでもあり、具体的に「初学者でも学習を行いやすい」「開発スピードが早い」「途中参画でも開発を行いやすい」などの点が挙げられます。システムの仕様がある程度決まっていて、今後も大きな仕様変更がないような小、中規模のシステム開発でメリットを感じられるフレームワークがCakePHPとなります。
上記の各フレームワークの特徴から、案件数も豊富でクライアントからの要望にもなるべく応えられるよう、柔軟性に優れているLaravelの学習を行っていきましょう。
