Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RayでPHPのデバッグをちょっと快適にする

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for muno92 muno92 PRO
February 26, 2025

 RayでPHPのデバッグをちょっと快適にする

Avatar for muno92

muno92 PRO

February 26, 2025
Tweet

More Decks by muno92

Other Decks in Technology

Transcript

  1. 自己紹介 X ( 旧Twitter): @muno_92 趣味: カンファレンススタッフ PHP カンファレンス名古屋2025 (

    当日) PHPerKaigi 2025 ( コア) PHP カンファレンス小田原2025 ( コア) PHP Conference Japan 2025 ( 実行委員) 2
  2. ( 宣伝) PHPerKaigi 2025 日程: 2025 年3 月21 日( 金)

    〜23 日( 日) 会場: 中野セントラルパークカンファレンス & ニコニコ生放送 チケット販売中! 当日スタッフ & PHPer コードバトル予選 (3/8 土) 参加者募集中! https://phperkaigi.jp/2025/ 3
  3. ( 宣伝) PHP カンファレンス小田原2025 日程: 2025 年4 月12 日( 土)

    会場: おだわら市民交流センター「UMECO 」 チケット販売中! https://phpcon-odawara.jp/2025 4
  4. Ray とは デバッグ結果を表示するデスクトップアプリ 有償 (4,566 円/ 年) 。お試し可能 対応OS Windows

    / Mac / Linux 対応言語 PHP / JavaScript / Bash / Go / Ruby 仕組み( 後述) 的に他の言語でも使えそう https://myray.app/ 10
  5. セットアップ 1. デスクトップアプリをインストール 2. ray() をPC 共通 or プロジェクト単位でインストール PC

    共通 composer global require spatie/global-ray global-ray install プロジェクト単位 composer require spatie/ray https://myray.app/docs/php/vanilla-php/installation 12
  6. シンプル Ray アプリがポート23517 番で待ち受け ~ > lsof -i:23517 COMMAND PID

    USER FD TYPE DEVICE SIZE/OFF NODE NAME Ray 45800 ******* 50u IPv6 0xd2f89e7cd65af8a 0t0 TCP *:23517 (LISTEN) プログラムからlocalhost:23517 にPOST curl_exec($curlHandle); https://github.com/spatie/ray/blob/441f904ae89e825a18d11e2e5 819a60a1c7e632a/src/Client.php#L84 16
  7. 適切な形式でPOST さえすればログ出力可能 { "uuid": "ca539a10-bfd5-3e5a-6271-0c4a95612132", "payloads": [ { "type": "custom",

    "content": { "content": "<em>hello world!</em>", "label": "HTML" }, "origin": { "function_name": "test", "file": "/home/user/projects/test-project/test.php", "line_number": 16, "hostname": "my-hostname" } } ], "meta": { "php_version": "7.4.16", "php_version_id": 70416, "ray_package_version": "1.20.1.0" } } https://myray.app/docs/developing-ray-libraries/payload 18
  8. 補足 (ray 関数の削除忘れ防止) ray() を削除するRector のカスタムルール https://myray.app/docs/php/vanilla-php/automatically-remove- ray-calls ray() の削除忘れ検知

    PHPStan https://myray.app/docs/php/vanilla-php/phpstan 検知用公式パッケージ https://myray.app/docs/php/vanilla-php/x-ray 25
  9. 補足 (WSL から使う場合) 下記①〜③のいずれかの方法で使用可能(公式推奨は①・②) Windows に特定のIP を設定した上でRay の通信先に設定 ① 固定IP

    を振る ② DHCP Reservation を設定 ③都度都度Windows のIP アドレスを設定 https://myray.app/docs/environments/windows#wsl2 27