Artisanコマンドとは?よく使うLaravelのArtisanコマンドを知ろう!
Section: Technology
Tags: Laravel

Artisan とは

Artisan は Laravel に含まれるコマンドラインインターフェースです。

php artisanから始まるコマンドを叩くだけで、様々な共通する処理を自動で行ってくれます。

そのため、Laravel を用いた開発において大変重要なものになっています。

はじめはコマンドを叩くことに抵抗を覚えるかもしれませんが、慣れてくるとコマンドを欲してくるようになるので、一つ一つ見ていきましょう!

Artisan で使えるリストとヘルプ

まず Laravel アプリケーションのルートでphp artisan listとコマンドを叩くと、Artisan コマンドで使えるもののリストが表示されます。便利なものからネタなものまで様々なコマンドが数多く存在します。自分の環境では以下のようになりました。

Laravel Framework 8.21.0

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display help for the given command. When no command is given display help for the list command
  -q, --quiet           Do not output any message

// ...

Available commands:
  clear-compiled       Remove the compiled class file
  db                   Start a new database CLI session

// ...

また特定のコマンドのヘルプが知りたい場合、php artisan help [options] [--] [<command_name>]のようなコマンドになります。help についての詳細が知りたい時php artisan help helpとすると以下のように出力されます。

Description:
  Displays help for a command

Usage:
  help [options] [--] [<command_name>]

Arguments:
  command_name          The command name [default: "help"]

Options:
      --format=FORMAT   The output format (txt, xml, json, or md) [default: "txt"]
      // ...

Help:
  The help command displays help for a given command:

    artisan help list

  // ...

起動系

開発環境で簡単にサーバを立ち上げるのに使用します。

php artisan serve

これを用いると Apache や Nginx などのサーバをベットで用意する必要がなくなります。

注意点として、Description に書いてあるように開発環境向けなので、プロダクション環境では使用してはいけません。

Serve the application on the PHP development server

生成系

makeArtisan コマンドでは、様々なものを自動で生成してくれます。今回はよく使用する5つのコマンドを紹介します。他にもファクトリ、シーダ等の生成コマンドもあり、make系のコマンドを用いることで、名前空間やクラスの基盤など共通する部分を自ら記述する必要がなくなります。

マイグレーションの生成

テーブルを作成したいときに使用するデータベースマイグレーションを生成します。

ユーザuserのテーブルを作成したいときは、以下のコマンドになります。(複数形であることに注意してください)

php artisan make:migration create_users_table

このコマンドを実行すると、database/migrationsディレクトリに、2021_01_25_062410_create_users_table.phpのようなファイルが生成されます。

モデルの生成

Laravel には、データベースの情報を便利に用いられるようにするオブジェクトリレーショナルマッパー(ORM)である Eloquent があります。

ユーザuserのモデルを作成したいときは、以下のコマンドになります。(単数形であることに注意してください)

php artisan make:model User

このコマンドを実行すると、app/Modelsディレクトリに、User.phpのようなファイルが生成されます。

必要に応じて--migrationのようなオプションを加えると、同時にオプションのものも生成されます。

コントローラの生成

ある関連するリクエスト処理を一つのクラスにグループ化でき、そのクラスをコントローラと呼びます。

ユーザuserのコントローラを作成したいときは、以下のコマンドになります。(単数形であることに注意してください)

php artisan make:controller UserController

このコマンドを実行すると、app/Http/Controllersディレクトリに、UserController.phpのようなファイルが生成されます。

作成、読み取り、更新、削除のような CRUD ルートを用いたい場合、--resourceオブションを加えると処理するためのメソッド等が用意された状態で生成されます。--model=Userのようなオプションを加えると、そのモデルに合わせてコントローラを生成してくれます。両方用いたユーザuserのコントローラを作成したいときは、以下のコマンドになります。

php artisan make:controller UserController --resource --model=User

メールを送信するクラスの生成

メールを送信するためのクラスを作成することができます。

例えば、SendMailという Mail のクラスを作成したい場合、以下のコマンドになります。

php artisan make:mail SendMail

SendMail の内容やメールの送受信の設定などを済ませると、

Mail:to($to)->send(new SendMail());

というように、簡潔にメールが送信できるようになります。

コマンドの生成

php artisanのコマンドを使用するだけでなく、自ら作成することもできます。

コマンドの文字とその内容を記述するコマンドのクラスnewCommandを生成したい場合、以下のコマンドになります。

php artisan make:command newCommand

ファクトリの生成

テスト用のインスタンスの生成をするためのクラスを作成することができます。

例えば、モデルである Job のクラスを作成したい場合、以下のコマンドになります。

php artisan make:factory JobFactory

マイグレーション系

マイグレーション関連ではマイグレーションファイルを生成するだけでなく、マイグレーションの実行等にも使用できます。

実行

まだ処理していないマイグレーションをすべて実行したいときに使用します。

php artisan migrate

ロールバック

一番新しいマイグレーション操作を戻したいときに、ロールバックをします。

php artisan migrate:rollback

例えば、開発環境で既にuserspostsの一連の処理があり、新しくCommentsに関する処理を開発しているとします。そのテーブルの仕様変更をしたいとなったときファイルの内容を変更しても、php artisan migrateでは既にマイグレーションされているため、実行されません。php artisan migrate:rollbackを使用すると、Comments のマイグレーションがロールバックされます。

複数戻したい場合は--step=数字オプションを加え、全て戻したいときはphp artisan migrate:resetを使用します。

refresh

一つのコマンドで、全てのマイグレーションをロールバックし、migrateコマンドを実行してくれます。

php artisan migrate:refresh

fresh

refreshコマンドと似ているが若干違いがあり、データベースから全てのテーブルを削除した後、migrateコマンドを実行してくれます。

php artisan migrate:fresh

キャッシュ系

Laravel ではControllerRouteなどを変更したときに以前のキャッシュが残り、変更が反映されません。

とりあえず変更点が反映されないときは、こちらを実行すると一気に様々なものをキャッシュしてくれるので、試すべきです。

php artisan optimize

ネタ系

名言

様々な方の名言が表示されます。息抜きに丁度いいかもしれません。

php artisan inspire

自分用備忘録

リソースコントローラ作成

データベースで情報を管理し、リソースコントローラを採用する際のパターンが基本的に同じです。しかしたまにしか作成せず、毎回ドキュメンテーションを読んでしまうので、まとめておきます。

ユーザuserでリソースコントローラを採用する場合、

php artisan make:model User --migration
php artisan make:controller UserController --resource --model=User

まず一気にモデルとマイグレーションのファイルを作成します。 そして、Userをリソースモデルとして、リソースコントローラのファイルを作成します。

後は適宜、生成された3つのファイルに処理を追加します。

まとめ

もっと詳しく知りたいという方は、Laravel のドキュメンテーションを参考にすることをお勧めします。ここでは紹介していない便利なコマンドが沢山あります。