こんにちは、かつコーチです。
前回、.envファイルの役割を解説した際に、php artisan key:generateというコマンドを実行しました。
「artisan」という単語、実はこれまでも何度かさらっと登場していました。
今回は、Laravel開発で日常的にお世話になる「Artisan(アルチザン)コマンド」を、まとめて紹介していきます。
Artisanとは?
Laravelに標準搭載されたコマンドラインツール
Artisanは、Laravelプロジェクトに標準で付属しているコマンドラインツールです。
「artisan(職人)」という名前の通り、開発作業を効率化するための道具箱のような存在です。
プロジェクト直下にあるartisanというファイルに対して、php artisan コマンド名という形で実行します。
php artisan serve
これは前々回の環境構築で使った、ローカルサーバーを起動するコマンドでしたね。
なぜArtisanが便利なのか
PHP基礎編で自作のミニフレームワークを作ったとき、新しいコントローラを追加するには、ファイルを手作業で作成し、クラス名やnamespaceを一から書く必要がありました。
Artisanを使うと、こうした「毎回書く定型的なコード(雛形)」をコマンド一発で自動生成できます。
タイプミスも減りますし、Laravelの標準的な書き方(お作法)に沿ったファイルが自動で作られるのも大きなメリットです。
よく使うArtisanコマンド一覧
コマンド一覧表
まずは、初学者の間によく使うコマンドを一覧にまとめます。
| コマンド | 用途 |
|---|---|
php artisan serve | 開発用のローカルサーバーを起動する |
php artisan make:controller | コントローラの雛形を作成する |
php artisan make:model | モデルの雛形を作成する |
php artisan make:migration | マイグレーションファイル(テーブル定義)の雛形を作成する |
php artisan migrate | マイグレーションを実行し、実際にテーブルを作成する |
php artisan route:list | 定義済みのルーティング一覧を表示する |
php artisan tinker | Laravelのコードを対話的に試せるコンソールを起動する |
php artisan key:generate | .envのAPP_KEYを生成する |
コントローラを作る:make:controller
前回の記事で紹介したMyPageControllerを、手動でファイルを作る代わりにコマンドで作ってみます。
php artisan make:controller MyPageController
実行すると、app/Http/Controllers/MyPageController.phpが自動生成されます。
<?php
namespace App\Http\Controllers;
class MyPageController extends Controller
{
//
}
namespaceの宣言や親クラスの継承まで、あらかじめ用意された状態で生成されるので、あとは中身のメソッドを書き足すだけです。
モデルとマイグレーションを同時に作る
モデルとマイグレーションは、セットで作ることが多いです。
-mオプションを付けると、モデルと同時にマイグレーションファイルも生成できます。
php artisan make:model Post -m
app/Models/Post.php(モデル)と、database/migrations/xxxx_create_posts_table.php(マイグレーション)が同時に作られます。
テーブルを実際に作る:migrate
マイグレーションファイルを作っただけでは、まだデータベースにテーブルは作られていません。
php artisan migrate
このコマンドを実行して初めて、マイグレーションファイルの内容通りにテーブルが作成されます。
PHP基礎編でCREATE TABLE文を直接実行していた作業が、このコマンド一発に置き換わるイメージです。
つまずきやすいポイント:migrateのやり直しでハマる
よくあるつまずき
マイグレーションファイルを編集した後、もう一度migrateを実行しても、テーブルの中身が更新されないことがあります。
❌ Before:編集後にそのままmigrateを実行する
# マイグレーションファイルにカラムを追加してから
php artisan migrate
Nothing to migrate.
私が最初にこれで戸惑ったとき、「え、ちゃんとカラム追加したのに反映されてない…」と原因が分からず、しばらく悩みました。
原因は、Laravelのマイグレーションが「まだ実行していないファイルだけ」を対象にする仕組みだったからです。
一度実行済みのマイグレーションファイルを後から編集しても、migrateコマンドはそれを「実行済み」として扱うため、素通りしてしまいます。
✅ After:開発中ならmigrate:freshでやり直す
php artisan migrate:fresh
migrate:freshは、既存のテーブルを一度すべて削除してから、マイグレーションを最初から実行し直すコマンドです。
これで、編集したマイグレーションファイルの内容が正しく反映されます。
注意点として、migrate:freshは既存のデータをすべて削除するため、本番環境や大事なデータが入った環境では絶対に実行しないでください。
開発中のローカル環境限定のコマンド、と覚えておくと安全です。
tinkerでお試し実行する
コードを本格的に書く前に、ちょっとした動作確認をしたいときはtinkerが便利です。
php artisan tinker
>>> App\Models\Post::count()
=> 0
コントローラやViewを作らずに、Eloquentの動きだけをその場で試せるので、学習中の動作確認にも重宝します。
まとめ
この記事のポイント
- ArtisanはLaravel標準のコマンドラインツールで、定型的なコード生成や作業を効率化してくれる
make:controllerやmake:modelで雛形を自動生成できるmigrateはマイグレーションファイルを元にテーブルを作成するが、実行済みファイルの編集は反映されない- 開発中にマイグレーションをやり直したいときは
migrate:freshを使う(本番環境では厳禁) tinkerを使うと、コードを本格的に書く前に手軽に動作確認ができる
次に読むべき記事
環境構築・基本のコマンドが分かったところで、次はいよいよLaravelの心臓部とも言える「ルーティング」を学んでいきましょう。
→ 次の記事:Laravelのルーティング基礎:Route::getから学ぶ