laravelで開発を行う際に、皆さんはどのくらいartisanのコマンドを使っていますか?
migrateコマンドやmakeコマンド、dbコマンドなどは大体使用すると思いますが、そのほかにもartisanには様々なコマンドがあります。
どのコマンドも便利なコマンドですが、その中でも私がよく使用するtinkerコマンドについて今回はご紹介させていただきたいと思います。
Tinkerコマンドとは?
そもそも、tinkerコマンドとは何をすることができるコマンドなのか説明したいと思います。
php artisan list
上記のコマンドで、コマンドのリストを表示し、説明を見てみると以下の等に記載されております。
Interact with your application
つまり、対話形式でアプリケーションを実行していくことができます。
これだけでは、便利なのかよくわからないかと思いますので、使っていて個人的に便利だと思った使い方をご紹介したいと思います。
個人的におすすめの使い方
作成したコードの動作確認
以下のようなコードをUserモデルに作成し、テストをしたいとします。

上記のプログラムをテストしようと考えたときに、tinkerを使用すれば、新たに検証用のコードを作成せずとも簡単に動作確認を行うことができます。
まずは、以下のコマンドでtinkerを起動します。
php artisan tinker

その後、nameがmikeのオブジェクトとそれ以外のオブジェクトを作成します。

次に、各にオブジェクトでexcludeMike()を呼び出します。

このように、対話形式で「モデルオブジェクトの作成」→「作成したオブジェクトからメソッドの呼び出し」を行うことができます。
DBのデータを書き換え
ただDBのデータを書き換えるだけであれば、DBツール等を使用すればよいと考えるかもしれません。
しかし、Hash化されているパスワードを書き換えたい場合はどうでしょう?
ちょっとめんどうですよね?
tinkerでは、以下のように簡単に行うことができます。

上記の手順で対象アカウントのパスワードが変更できました。
この手順を知っていれば、開発環境にてパスワードを忘れてしまっても、簡単にパスワードだけ上書きすることができます。
メソッドの動作確認
実装を行っている際に、使用したことのないメソッドを使用することがあるかと思います。
そのようなメソッドは、具体的にどのような値がどのような形で返ってくるのかわからず、実装で上手く使用できない場合があるかと思います。(少なくとも私はあります)
そんな場合に、実際に実行して動きや値を確認することができます。
例えば、配列操作のメソッドであるarray_diffの動作を検証してみたいとします。
上記メソッドは、「array を他の配列と比較し、 array の要素の中で他の配列には存在しないものだけを返します。」との説明がありました。
実際に動作を確認してみましょう。

$arrayにはあって、$array2にはない、「a,b」が配列として出力されました。
では、引数の順番を逆にすると同じような結果になるのでしょうか?
このような疑問が浮かんだ際に、直ぐに検証を行うことができます。
実行結果は以下になります。

上記のことから、array_diffのメソッドは、第一引数と第二引数を比較し、第一引数にあって、第二引数にない値を配列で吐き出すメソッドであるということがわかりました。
このように、実際にメソッドを動かしてみて、様々な動作の確認を容易に行うことができます。
ドキュメントは便利ですが、文章で書かれるとわかりづらいと感じる人も、tinkerを使用して実際に動かしてみると、メソッドの理解が容易になります。
データの作成
ランダムな文字列やuuid、適当な名前等が欲しい際に、別のツールを新たに起動しなくとも、簡単に作成することができます。
ランダムな10桁の数字を作成

uuidを作成

大文字・小文字・数字が1文字以上含まれるパスワードを作成

テスト用の名前の作成

日本語の名前を作成したい場合には、app.phpで設定をするか、オブジェクトに直接オプションを設定して作成します。

まとめ
いかがだったでしょうか?
tinkerは開発を行うにあたって、絶対に使用する必要のあるコマンドではありませんが、使うことで業務を効率よく進めることが出来たり、動作の検証が容易になるため、誤ったコーディングの早期発見に繋がります。
今回ご紹介したtinkerコマンド以外にも、artisanにはたくさんのコマンドがありますので、興味がありましたら、調べてみてください。

