🗣️

Laravel 標準対話モード Tinker 5つの便利な使いどころ

2023/12/17に公開

はじめに

フルスタックフレームワークである 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 を使って開発をより効率化させてみてはいかがでしょうか。

BABYJOB テックブログ

Discussion