Laravelチュートリアル:初心者向けに実務で活かせる基礎を解説
はじめに
LaravelはPHPで構築されたフレームワークの一つです。
フレームワークを使うメリットとしては、開発の効率化や保守性の向上などが挙げられますね。
特にLaravelは、わかりやすいコード構造や豊富な機能を備えているため、実務での活用が多くの現場で期待されています。
みなさんの中には、ウェブアプリケーションを開発してみたいと思っていても、何を使えばよいのか悩む方がいるかもしれません。
そこでこのチュートリアルでは、Laravelの基本的な仕組みや使い方をできるだけシンプルに紹介していきます。
初心者でも理解しやすいように、実務での利用シーンを交えながら順番に見ていきましょう。
この記事を読むとわかること
- Laravelの概要と主な特徴
- 実務での利用シーンの例
- プロジェクトの作成から基本的な設定の流れ
- ルーティングやBladeテンプレートの使い方
- Eloquent ORMの仕組みと簡単なデータベース操作
上記の内容を踏まえることで、Laravelを使ったアプリケーション開発の全体像が見えてくるはずです。
Laravelの特徴と実務での利用シーン
Laravelは、いわゆるMVCアーキテクチャに基づいたフレームワークです。
モデル(M)、ビュー(V)、コントローラ(C)の役割が明確に分かれているので、大規模になりがちなアプリケーションでも見通しを保ちやすいでしょう。
たとえばユーザー管理システムを作るとき、コントローラがリクエストを受け取り、モデルがデータベースにアクセスし、最後にBladeテンプレートで画面を表示するという構成で進めるイメージです。
実務の場面では、顧客管理や商品管理といった管理画面の開発が求められることがありますよね。
このような状況でも、Laravelならばルーティングや認証機能があらかじめ用意されているため、スムーズに開発を進めることができます。
また、開発チームで作業を分担しやすい点も魅力であり、大人数で進めるプロジェクトでもコードの衝突を最小限に抑えやすいです。
もし小規模な個人プロジェクトであっても、機能が豊富なので後から機能を追加する際の負担が軽くなります。
したがって、Laravelは新規開発から追加開発まで幅広く利用される場面が多いと考えられます。
Laravelプロジェクトの始め方
インストールと初期設定
Laravelを始めるときは、まずPHPとComposerを準備します。
準備ができたら、以下のコマンドで新規プロジェクトを作成するのが一般的です。
composer create-project laravel/laravel my-laravel-app
このコマンドを実行すると、my-laravel-app
というディレクトリが作成され、中にLaravelの基本的なファイルやフォルダが自動的に配置されます。
もしインストール後にサーバーを起動したい場合は、プロジェクトのディレクトリ内で下記のコマンドを実行してください。
php artisan serve
この状態でブラウザから http://127.0.0.1:8000
にアクセスすると、Laravelのトップページが表示されるはずです。
開発を始める前に、ComposerやPHPのバージョンが適切にインストールされているかどうかを確認してください。
ディレクトリ構成のポイント
Laravelのディレクトリ構成はある程度規則的なので、初めて見る方も少しずつ慣れていきましょう。
以下は主要なフォルダです。
my-laravel-app ┣─ app ┃ ┣─ Console ┃ ┣─ Exceptions ┃ ┣─ Http ┃ ┣─ Models ┃ ┗─ Providers ┣─ bootstrap ┣─ config ┣─ database ┣─ public ┣─ resources ┣─ routes ┣─ storage ┗─ tests
appフォルダ
コントローラやモデルなどのコードが主に入ります。
routesフォルダ
ウェブやAPIのルーティング情報が格納されています。
resourcesフォルダ
BladeテンプレートやCSS、JavaScriptなど、見た目に関するリソースを置く場所です。
databaseフォルダ
マイグレーションファイルやシーディング機能に関連するファイルが格納されています。
実務で規模が大きくなる場合、フォルダを整理しておくと多人数開発でも作業のしやすさを保ちやすいです。
この構成を理解することで、コードをどこに置くべきか迷う時間を減らすことができますね。
ルーティングからBladeテンプレートまでの流れ
ルーティングの設定
Laravelのルーティングは routes/web.php
ファイルに定義されます。
たとえば以下のように書くと、/hello
というURLにアクセスしたときに「Hello World」を表示できます。
// routes/web.php use Illuminate\Support\Facades\Route; Route::get('/hello', function () { return "Hello World"; });
実際の開発では、コントローラを呼び出す形が多いでしょう。
// routes/web.php use App\Http\Controllers\SampleController; use Illuminate\Support\Facades\Route; Route::get('/sample', [SampleController::class, 'showSample']);
このようにコントローラとメソッドを指定すると、ビジネスロジックを別のファイルに切り分けられるので管理しやすくなります。
Bladeテンプレートでビューを作成する
ビューを表示するには、resources/views
フォルダ内にBladeファイル(拡張子は .blade.php
)を用意します。
たとえば hello.blade.php
を作成して、中身にHTMLを記述します。
<!-- resources/views/hello.blade.php --> <!DOCTYPE html> <html> <head> <title>はじめてのLaravel</title> </head> <body> <h1>Hello Blade!</h1> <p>これはBladeテンプレートのサンプルです。</p> </body> </html>
コントローラ側では return view('hello');
のように書くだけで、このテンプレートが呼び出されます。
Bladeはシンプルなテンプレートエンジンであり、変数や制御文を使って動的にページを生成できるため、実務でも扱いやすいです。
// app/Http/Controllers/HelloController.php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { public function index() { $message = "皆さん、Laravelを始めてみませんか?"; return view('hello', ['message' => $message]); } }
以下のようにBlade側で変数を表示できます。
<!-- resources/views/hello.blade.php --> <h1>{{ $message }}</h1>
Eloquent ORMによるデータベース操作
モデルを使った基本操作
LaravelにはEloquent ORMが含まれており、データベースのテーブルとクラスを関連づける仕組みを提供しています。
テーブル名とモデル名の対応を意識すると、コードの可読性が上がるでしょう。
たとえば User
モデルを使ってデータを取得する場合、以下のように書けます。
use App\Models\User; $users = User::all(); // 全データを取得
実務でユーザー管理機能を作りたいときは、ユーザー情報の取得や更新を同じモデルにまとめられるので、処理の重複を防止できます。
データの追加や更新は以下のように行われます。
// 新規レコードの追加 $user = new User(); $user->name = "Tanaka"; $user->email = "tanaka@example.com"; $user->save(); // 既存レコードの更新 $existingUser = User::find(1); $existingUser->name = "Suzuki"; $existingUser->save();
このようにEloquent ORMを使うと、SQL文を手書きする必要が少なくなり、ビジネスロジックに集中できる利点があります。
マイグレーションとシーディング
Laravelにはデータベースのマイグレーション機能があります。
これは、テーブルの構造をバージョン管理する仕組みです。
たとえば新しいテーブルを作りたければ、以下のようなコマンドを実行します。
php artisan make:migration create_tasks_table
すると database/migrations
フォルダに新しいファイルが生成されるので、そこでテーブルの列を定義します。
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('tasks', function (Blueprint $table) { $table->id(); $table->string('title'); $table->boolean('completed')->default(false); $table->timestamps(); }); } public function down() { Schema::dropIfExists('tasks'); } };
その後、以下のコマンドを実行するとテーブルが作成されます。
php artisan migrate
実務でテーブルの構成を変更したくなった場合も、マイグレーションを追加すれば管理がしやすいです。
シーディング機能を使えば、あらかじめテスト用のデータを投入することもできます。
コントローラ・モデル・ビューの連携をイメージする
Laravelで画面を動かすときは、以下のような流れで開発を進めます。
- ルーティングでURLとコントローラのメソッドを紐づける
- コントローラでは、モデルを使ってデータを取得したり、リクエストされた情報を処理する
- ビュー (Bladeテンプレート)で取得したデータを表示する
この流れを抑えておくと、実務で要件に沿った機能を追加しやすくなるでしょう。
たとえば、Todoリストのページを作るならば
- Todoデータを管理するモデルとテーブルを用意する
- ルーティングでURLを定義する
- コントローラでTodoデータを取得し、ビューへ渡す
- Bladeテンプレート側で一覧を表示し、新しいTodoを作成するフォームを用意する
というステップで進めるイメージです。
ここまで把握しておくと、ある程度の業務アプリケーションを自力で作れる可能性が高まってきます。
テストと運用に向けた考え方
本番運用を念頭に置いたときは、テストの整備やデプロイの方法も視野に入れましょう。
Laravelはテストに関する仕組みが用意されており、tests
ディレクトリにユニットテストやFeatureテストを記述できます。
手動テストだけでなく、自動化されたテストを書いておくと、実務でもバグを早期に発見できて安心ではないでしょうか。
また、運用段階ではユーザー数の増加や機能の拡張に合わせて、サーバー構成やパフォーマンスチューニングを検討するケースもあります。
Laravelに限らず、ウェブアプリケーションをスケールさせるときにはキャッシュやキューの活用なども重要になってきます。
大きなプロジェクトでは、複数環境(ステージングや本番など)で設定を切り替える場面が発生するかもしれません。 その際は環境変数や設定ファイルを正しく管理しておくと、トラブルが少なくなります。
まとめ
ここまで、Laravelの基本的な特徴や具体的なプロジェクトの作り方などを紹介してきました。
実務で活かすには、ルーティング、Bladeテンプレート、Eloquent ORMといった主要な機能をしっかり理解しておくことが大切です。
コントローラとモデルとビューがそれぞれ役割分担をしている構造を頭に置きながら、実際のプロジェクトで少しずつコードを書いていけば、開発の流れが自然と見えてくるのではないでしょうか。
みなさんがLaravelを使って、自分なりのウェブアプリケーションを完成させられることを願っています。
以上でLaravelチュートリアルの概要はひととおりです。
ぜひこのフレームワークの持つ可能性を活かして、いろいろなプロジェクトを形にしてみてください。