#01 Laravelを始めよう

Laravelって何?環境を整えよう

このシリーズでは、プログラミングの基礎知識はあるけれど「 フレームワーク? よく使う機能をまとめた「土台」となるソフトウェア。ゼロから書く手間を省き、決まったルールに従って開発を進められる。 って何から始めればいいの?」という方を対象に、 Laravel? PHP製のWebアプリフレームワーク。「職人の道具」をコンセプトに、読みやすく書きやすいコードで開発できる。 を使った CRUD? データ操作の基本4種「Create(作成)・Read(取得)・Update(更新)・Delete(削除)」の頭文字。Webアプリの基本機能。 アプリの完成までを一緒に歩いていきます。

難しい言葉はなるべく使わず、使った場合はちゃんと説明します。気になる用語は文字の上にマウスを乗せてみてください。


Laravelとは何か

Laravel? PHP製のWebアプリフレームワーク。「職人の道具」をコンセプトに、読みやすく書きやすいコードで開発できる。 は、 PHP? Webサイト・Webアプリを作るためのプログラミング言語。サーバー側で動き、HTMLを動的に生成できる。 で書かれた フレームワーク? よく使う機能をまとめた「土台」となるソフトウェア。ゼロから書く手間を省き、決まったルールに従って開発を進められる。 です。

「フレームワークって結局なんなの?」と思う方も多いと思います。簡単に言うと、よく使う機能をあらかじめ用意してくれた「土台」です。

たとえば家を建てるとき、土台・柱・屋根の基本構造はあらかじめ用意されていて、あとは内装や間取りを好きに作れる——そんなイメージです。

Laravelが用意してくれる「土台」には次のようなものがあります。

  • URLと処理をつなぐ仕組み( ルーティング? URLと処理を結びつける仕組み。「このURLにアクセスしたら、このコードを実行する」という対応表のようなもの。
  • 画面を作るためのテンプレート( Blade? LaravelのテンプレートエンジンでHTMLの中にPHPの処理を埋め込める。`@if`や`@foreach`などの専用構文が使いやすい。
  • データベースを操作する道具( Eloquent? LaravelのORM(データベース操作ツール)。SQLを直接書かずにPHPのコードでデータを取得・保存できる。
  • ログイン・認証の仕組み

これらをゼロから自分で作ると何ヶ月もかかります。Laravelを使えば、本当に作りたい機能に集中できます。


MVC というアーキテクチャ

Laravelは** MVC? アプリを「Model(データ)・View(画面)・Controller(制御)」の3役割に分けて設計するパターン。役割を分けることでコードが整理される。 **という考え方に従って設計されています。

役割名前担当
M モデル? データベースのテーブルと対応するクラス。テーブルへの読み書きをオブジェクトとして扱えるようにする。MVCの「M」。 データの管理
V ビュー? ユーザーに見せるHTML画面のこと。MVCの「V」にあたる。Laravelでは主にBladeテンプレートで書く。 画面の表示
C コントローラー? ユーザーの操作(リクエスト)を受け取り、必要な処理をしてビューに渡す橋渡し役。MVCの「C」にあたる。 処理の指揮

ユーザーがブラウザでURLにアクセスすると、次の流れで処理が進みます。

MVCのリクエスト〜レスポンスの流れ ブラウザ Browser ルーティング Router コントローラー Controller モデル Model ビュー View データベース Database リクエスト 取得 返却 データ渡し クエリ 結果 HTMLレスポンス リクエストフロー データ返却 DB操作
図1: MVCのリクエスト〜レスポンスの流れ

最初はこの流れをぼんやりイメージするだけで十分です。実際に手を動かしていくうちに自然とわかってきます。


環境を整える

Herd のインストール(Mac)

開発するには Laravel? PHP製のWebアプリフレームワーク。「職人の道具」をコンセプトに、読みやすく書きやすいコードで開発できる。 が動く環境が必要です。ここではLaravel Herdを使います。Herdはクリックするだけでローカル開発環境が整うツールです。

  1. Laravel Herd からインストーラーをダウンロード
  2. アプリを起動するとPHPと必要なツールが自動でインストールされる

Windowsの場合はWSL2(Windows上でLinuxを動かす仕組み)を使う方法が公式に推奨されています。

Composer を確認する

ターミナルを開いて以下を実行してみてください。

composer --version

Composer version 2.x.x のように表示されれば準備OKです。 Composer? PHPのパッケージ管理ツール。「このライブラリを使いたい」と宣言すると、必要なファイルを自動でダウンロード・管理してくれる。 はPHPの ライブラリ? 特定の機能をまとめた部品集。フレームワークと違い、呼び出し方や構成は自分で決める。 を管理するツールで、Laravelのインストールにも使います。


プロジェクトを作成する

ターミナルで次のコマンドを実行します。

composer create-project laravel/laravel myapp
cd myapp

myapp の部分は好きな名前に変えてください。コマンドを実行するとそのフォルダが作られ、cd myapp でその中に移動します。

フォルダ構成を確認する

myapp フォルダの中にはたくさんのファイルがありますが、最初に覚えるのは4か所だけでOKです。

myapp/
├── app/
│   └── Http/
│       └── Controllers/   ← ② コントローラーを置く場所
├── resources/
│   └── views/             ← ③ ビュー(HTML)を置く場所
├── routes/
│   └── web.php            ← ① ルーティングを書く場所(一番よく触る)
└── .env                   ← ④ DB接続などの設定を書く場所

このシリーズでは主に routes/web.phpapp/Http/Controllers/resources/views/ の3か所を使います。


開発サーバーを起動する

myapp フォルダの中で次のコマンドを実行します(cd myapp で移動済みの場合はそのまま実行できます)。

php artisan serve

Artisan? Laravelに付属するコマンドラインツール。ファイルの自動生成やDB操作など、開発を助ける様々なコマンドが使える。 はLaravel付属のコマンドツールです。serve コマンドで開発用の サーバー? ブラウザからのリクエストを受け取り、HTMLやデータを返すコンピューター(またはソフトウェア)のこと。 が起動します。

ターミナルに次のように表示されたら成功です。

INFO  Server running on [http://127.0.0.1:8000].

ブラウザで http://localhost:8000 にアクセスしてみてください。Laravelのウェルカム画面が表示されれば準備完了です!

localhost は自分のパソコン自身を指す特別なアドレスです。8000 ポート? ネットワーク通信の「窓口番号」。同じPCで複数のサービスを動かすとき、番号で区別する(例:8000番)。 番号で、複数のサービスを同時に動かすときに区別するための番号です。


最初のページを表示する

ウェルカム画面が確認できたら、自分でページを作ってみましょう。

ルートを追加する

routes/web.php をエディタで開いてください。最初はこのような内容になっています。

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

Route::get('/', ...) というのがすでに1行書かれています。これが「/(トップページ)にアクセスしたらウェルカム画面を表示する」という設定です。

この既存のコードの下に、次の3行を追加してください。

Route::get('/hello', function () {
    return 'Hello, Laravel!';
});

追加後の routes/web.php 全体はこのようになります。

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

// ↓ ここから追加した部分
Route::get('/hello', function () {
    return 'Hello, Laravel!';
});

ファイルを保存してブラウザで http://localhost:8000/hello を開くと、Hello, Laravel! と表示されます。

この3行が ルーティング? URLと処理を結びつける仕組み。「このURLにアクセスしたら、このコードを実行する」という対応表のようなもの。 の基本形です。「/hello というURLに GETリクエスト? ブラウザがサーバーに「データをください」と要求する方法。URLを入力してページを表示するときに使われる。 でアクセスしたとき、{}の中の処理を実行する」という意味です。


まとめ

この回でやったこと:

  • Laravelとは何か( フレームワーク? よく使う機能をまとめた「土台」となるソフトウェア。ゼロから書く手間を省き、決まったルールに従って開発を進められる。 MVC? アプリを「Model(データ)・View(画面)・Controller(制御)」の3役割に分けて設計するパターン。役割を分けることでコードが整理される。 )を理解した
  • Composer? PHPのパッケージ管理ツール。「このライブラリを使いたい」と宣言すると、必要なファイルを自動でダウンロード・管理してくれる。 でプロジェクトを作成した
  • php artisan serve で開発サーバーを起動した
  • 初めての ルーティング? URLと処理を結びつける仕組み。「このURLにアクセスしたら、このコードを実行する」という対応表のようなもの。 routes/web.php に書いた

次回は ルーティング? URLと処理を結びつける仕組み。「このURLにアクセスしたら、このコードを実行する」という対応表のようなもの。 コントローラー? ユーザーの操作(リクエスト)を受け取り、必要な処理をしてビューに渡す橋渡し役。MVCの「C」にあたる。 をもっと深く掘り下げていきます。URLとコードの対応関係をしっかり理解していきましょう。