• Laravel

Laravel TelescopeとTelescope Toolbarで効率よくデバッグする

Laravel TelescopeとTelescope Toolbarで効率よくデバッグする

私は元々PHPのフレームワークとしてはSymfonyを使っていたのですが、その際に標準でついていたデバッグツールであるProfilerが非常に便利で、同じものがLaravelにも無いか探していました。
Symfony Profilerはコントローラーで実行した処理のタイムラインやクエリのログ、フォームのバリデーション結果などを表示できるツールです。
全く同じではありませんが、同様のことがLaravel TelescopeLaravel Telescope Toolbarを組み合わせることで実現できたのでご紹介します。

Laravel Telescopeについて

Laravel Telescopeはリクエストの履歴を詳細に確認できたり、コマンドやジョブ、メールのログが確認できたりなど、幅広いデバッグ情報が閲覧できます。
Symfony Profilerのように処理のタイムラインやバリデーションなどが確認できないのは残念ですが、ほとんどのケースで十分な情報が得られると思います。

laravel-telescope

Laravel Telescope Toolbarについて

Laravel Telescope Toolbarは、Laravel Telescopeの情報をページの一番下に表示するためのライブラリです。
通常、Laravel Telescopeは開いたページとは別のタブで開いておき、リクエストの一覧などから目的の情報を探して表示するような使い方です。
しかしセッションの内容確認や実行したクエリ一覧など、すぐに見たい情報を別タブで確認するのは面倒なので、その不便さを解消するためにLaravel Telescope Toolbarを使います。

なお同様のツールでLaravel Debugbarがありますが、Laravel TelescopeとLaravel Telescope Toolbarの組み合わせのほうが得られる情報が多くてデバッグしやすいと感じます。

Laravel Telescopeのインストール

公式のインストール手順の通りです。


composer require laravel/telescope
php artisan telescope:install
php artisan migrate

Laravel Telescope Toolbarのインストール

公式のインストール手順の通りです。


composer require fruitcake/laravel-telescope-toolbar --dev

ツールバーを確認する

いずれかのページをブラウザで開くとページ下部にLaravel Telescope Toolbarが表示されます。
表示されているアイコンにカーソルを乗せると情報が閲覧できます。

laravel-telescope

セッションの情報や…

laravel-telescope

実行したクエリ情報も確認できます。

laravel-telescope

また、リクエスト毎にTelescope画面のリンクも表示されるため、JavaScriptからAPIを呼び出した際などのデバッグもやりやすいです。

laravel-telescope

右下のアイコンをクリックすると、ツールバーを隠すこともできます。

laravel-telescope

Laravel Telescopeのデータ削除を組み込む

Laravel Telescopeはデバッグ用のデータをデータベースに保管しています。
知らぬ間に大量のデータを保存することになってしまうため、不要になった過去データを自動で削除する機能をスケジュール登録することをおすすめします。
登録方法は公式ドキュメントの通りです。

「app/Console/Kernel.php」に次のいずれかを追記します。


// 24時間より古いデータを削除
$schedule->command('telescope:prune')->daily();
// 48時間より古いデータを削除
$schedule->command('telescope:prune --hours=48')->daily();

まとめ

Laravel TelescopeとLaravel Telescope Toolbarについてご紹介しました。
ツールバーがあることでログインしているユーザーが誰か一目でわかったり、意図せず大量のクエリを実行していることに気づけたりするので、何気なく目に入ってくる情報が増えて便利です。
Laravel Telescopeにはここで紹介した以外にもキャッシュ情報やログの表示機能なども備わっているので、導入した際は確認いただければと思います。

  • Laravel
宮野 比伊呂

MIYANO HIIRO Chief Technology Officer / 宮野 比伊呂

記事をもっと見る

Our Signature Products, Born from Insight.

提案から生まれた、
MARBLEの代表プロダクト

お客様の課題を起点に、MARBLEが自ら構想し、
仕組みからデザイン、開発、運用まで一貫してつくり上げたプロダクト群です。
業務改善、運営効率化、新たな顧客体験の創出など、
企業の事業成長に直結する“実装された解決策”を形にしています。

  1. 01 入退場システム

    Entry System

    入退場システムのイメージ

    全国15店舗、会員数50万人以上のこども向けパークで稼働する入退場・決済・顧客管理システム。
    受付の効率化と回転率の向上を実現し、運営データの一元管理を可能にしています。

  2. 02 自動配送システム

    Delivery Routing

    50台のトラック、年間350日の配送を最適化する自動ルート生成システム。
    紙のFAXで届く約500件の配送情報をデジタル化し、最適ルートを自動で算出することで、大幅な業務効率化を実現しました。

  3. 03 会話型コマース連携

    Auto Routing

    ライブチャットでの接客からEC購入までを一つの導線でつなぐ会話型コマースシステム。
    リアルタイムの対話で顧客の購買意欲を高め、高いコンバージョン率につながる仕組みを構築しています。