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

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

muno92
February 26, 2025

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

muno92

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