Laravel 標準対話モード Tinker 5つの便利な使いどころ
はじめに
フルスタックフレームワークである Laravel には、開発に必要な機能やプラグインがたくさん用意されています。その中でも Tinker は開発効率を上げてくれる便利な機能です。
ただ、Laravel公式リファレンスではあまり詳しくは触れられていません。
この記事では、アプリ開発中に便利と感じた、個人的におすすめな Tinker の使いどころを紹介していきたいと思います。
環境
- PHP:8.2.12
- Laravel:10.30.1
- Tinker:2.8.2
想定読者
- これから Laravel で開発をはじめる人
- Tinker をあまり使ったことがない人
Tinker とは?
Tinker は Laravel 開発を効率化する対話型コマンドラインツールです。
実装メソッドの試行やデータベース操作、設定値の確認などが直接コマンドライン上で可能になります。
以下のコマンドで Tinker を起動します。
php artisan tinker
すると対話モードが開始しますので、簡単なPHPメソッドを実行してみます。
> echo "Hello, world!"
Hello, world!
このように、わざわざPHPの実行環境を別に用意せずとも、PHPコードを気軽に実行できるのが Tinker の魅力です。
Tinker おすすめの使いどころ5つ
それでは、Laravel開発を効率化させるための Tinker おすすめの使いどころを5つ紹介します。
独自実装メソッドの動作チェック
実装メソッドの動作確認は Tinker の最も基本的な使い方です。
Tinker を使うことで、自分で実装したメソッドの動作を手軽に実行できます。
実装したメソッドの動きを見るために、テスト用のコントローラーなどを用意しなくてもいいのがメリットです。
例えば、以下の Calculator クラスを実装したとします。
namespace App;
class Calculator
{
public function add($a, $b)
{
return $a + $b;
}
}
メソッド add() の動きを確かめるためには、以下のように Tinker を操作します。
> $calculator = new App\Calculator();
> $result = $calculator->add(5, 3);
= 8
このように、メソッドの動きを簡単に確認できます。
上記はシンプルなメソッドの例ですが、複雑なロジックを実装している場合には、こまめにコンソール上で試せるので便利です。
PHP組み込み関数の仕様確認
開発中はPHPの組み込み関数を利用する機会が多々あるかと思います。
組み込み関数の動作を軽く確認したい、そんな時にも Tinker が便利です。
例えば、array_map というPHP組み込み関数の動作を理解したい場合、Tinker を開いて直接その関数を実行し、入力と出力を確認できます。
> $numbers = [1, 2,3];
= [
1,
2,
3,
]
> $timesTwo = array_map(function($number) { return $number * 2; }, $numbers);
= [
2,
4,
6,
]
この使い方で Tinker の便利さを特に感じたのが、PHP や Laravel マニュアルを読んでいる時です。
気になった組み込み関数や、マニュアルの記述で実際の動作を確かめてみたい時など、挙動をすぐに確認できるので、理解を深めながら読むことができます。
ファサードの仕様確認
Tinker は、Laravelファサードの動作も確認できます。
ファサードは Laravel の主要な機能に簡単にアクセスできるようにするものです。
たとえば、Log ファサードを使用してログにメッセージを出力する処理をすぐに試せます。
> Log::info('this is a test message.');
## storage/logs/laravel.log を確認すると...
[2023-12-12 17:23:39] local.INFO: this is a test message.
この例では、Log ファサードを使って Laravel のログに情報レベルのメッセージを記録しています。
Tinker を使うと、Laravel のファサードの基本的な使い方を確かめられるので便利です。
データベースの操作
Tinker では、対話的なデータベース操作も可能です。
Eloquent ORM を使用したデータの取得、挿入、更新、削除などが簡単に行えます。
以下に Eloquent モデルを使用したデータ取得の例をあげてみます。
(※ id, name カラムを持つ User クラスが実装されていることが前提です)
> $user = new App\Models\User;
> $user->all();
= Illuminate\Database\Eloquent\Collection {#6625
all: [
App\Models\User {#7243
id: 1,
name: "name1",
},
App\Models\User {#7244
id: 2,
name: "name2",
},
],
}
注意点としては、Tinker での操作が実際のデータベースに対して行われるということです。
操作はロールバックされません。
Ruby on Rails の rails console ではロールバック機能もあるようなので、Tinker でも実行モードが選択できると便利ですね。
今後の Tinker のアップデートに期待しましょう。
外部ライブラリの試行
Tinker は、外部ライブラリを軽く試したい時なども便利です。
新しいライブラリをインストール後、コードを実装しなくても Tinker で対話的に動きを確認できます。
例えば、Guzzle HTTP クライアントの導入を検討しているとして、Tinker で特定の外部APIにリクエストを送り、そのレスポンスを確認できます。
> $client = new \GuzzleHttp\Client();
> $response = $client->request('GET', 'https://jsonplaceholder.typicode.com/todos/1');
> $data = $response->getBody();
> echo $data;
= {
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
Guzzle を使って外部APIにGETリクエストを送り、レスポンスを表示してみました。
このように新しいライブラリを導入した後に、アプリケーションにソースを組み込ませずとも、動作を確かめられます。
まとめ
今回は Laravel 標準の対話型コマンドラインツールである Tinker のおすすめの使いどころについて、以下の5つを紹介しました。
- 独自実装メソッドの動作チェック
- PHP組み込み関数の仕様確認
- ファサードの仕様確認
- データベースの操作
- 外部ライブラリの試行
PHPコードを気軽に実行できたり、データベースを直接操作できたりと、Tinker は開発に欠かせない便利なツールです。
まだ導入されたことのない方は、Tinker を使って開発をより効率化させてみてはいかがでしょうか。
私たち BABY JOB は、子育てを取り巻く社会のあり方を変え、「すべての人が子育てを楽しいと思える社会」の実現を目指すスタートアップ企業です。圧倒的なぬくもりと当事者意識をもって、こどもと向き合う時間、そして心のゆとりが生まれるサービスを創出します。baby-job.co.jp/
Discussion