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にアクセスすると、次の流れで処理が進みます。
最初はこの流れをぼんやりイメージするだけで十分です。実際に手を動かしていくうちに自然とわかってきます。
環境を整える
Herd のインストール(Mac)
開発するには Laravel? PHP製のWebアプリフレームワーク。「職人の道具」をコンセプトに、読みやすく書きやすいコードで開発できる。 が動く環境が必要です。ここではLaravel Herdを使います。Herdはクリックするだけでローカル開発環境が整うツールです。
- Laravel Herd からインストーラーをダウンロード
- アプリを起動すると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.php、app/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とコードの対応関係をしっかり理解していきましょう。