Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
RayでPHPのデバッグをちょっと快適にする
Search
muno92
PRO
February 26, 2025
Technology
760
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
February 26, 2025
More Decks by muno92
See All by muno92
PHPでバイナリをパースして理解するASN.1
muno92
PRO
0
620
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
480
Cloudflare Tunnelで開発環境をインターネットに公開する
muno92
PRO
0
130
2年のAppleウォレットパス開発の振り返り
muno92
PRO
0
310
PsySHから紐解くREPLの仕組み
muno92
PRO
1
910
Appleウォレット / Googleウォレットに チケットを保存する方法
muno92
PRO
2
4.9k
歴史を重ねたシステムの開発に趣味で関わり始めて
muno92
PRO
1
630
PHPでGoogle Walletにチケットを追加する
muno92
PRO
0
920
カンファレンススタッフはいいぞ
muno92
PRO
1
430
Other Decks in Technology
See All in Technology
2026_devsumi_ozono.pdf
o3
3
510
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
110
beyond jj: config & tools ecosystem
indirect
0
610
品質と信頼性を地続きにする
grimoh
0
600
AI時代、データエンジニアが一番おもろい
genshun9
0
650
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
200
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
1.9k
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
150
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
0
110
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.1k
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
2
540
CLIライブラリ開発を支える技術
htnabe
0
120
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
410
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Transcript
Ray でPHP のデバッグをちょっと快適 にする 2025/2/26 第173 回 PHP 勉強会@東京 @muno_92
1
自己紹介 X ( 旧Twitter): @muno_92 趣味: カンファレンススタッフ PHP カンファレンス名古屋2025 (
当日) PHPerKaigi 2025 ( コア) PHP カンファレンス小田原2025 ( コア) PHP Conference Japan 2025 ( 実行委員) 2
( 宣伝) PHPerKaigi 2025 日程: 2025 年3 月21 日( 金)
〜23 日( 日) 会場: 中野セントラルパークカンファレンス & ニコニコ生放送 チケット販売中! 当日スタッフ & PHPer コードバトル予選 (3/8 土) 参加者募集中! https://phperkaigi.jp/2025/ 3
( 宣伝) PHP カンファレンス小田原2025 日程: 2025 年4 月12 日( 土)
会場: おだわら市民交流センター「UMECO 」 チケット販売中! https://phpcon-odawara.jp/2025 4
デバッグどうしてますか? print デバッグ Xdebug PsySH Debugbar etc 5
こんな時ありませんか? ブレークポイントで止めずに一気に処理を流したいが、変数の中身 やどこを通ったかは確認したい ログは見やすく表示されて欲しい ( 色々な理由があって) Xdebug を使えない 6
こんな時ありませんか? ブレークポイントで止めずに一気に処理を流したいが、変数の中身 やどこを通ったかは確認したい ログは見やすく表示されて欲しい ( 色々な理由があって) Xdebug を使えない ↓ Ray
はどうでしょう? 7
Ray ならこんな事ができます ray('Hello'); ray(['a' => 1, 'b' => 2]); 8
目次 Ray とは 使い方 Ray の仕組み 便利な機能 まとめ 9
Ray とは デバッグ結果を表示するデスクトップアプリ 有償 (4,566 円/ 年) 。お試し可能 対応OS Windows
/ Mac / Linux 対応言語 PHP / JavaScript / Bash / Go / Ruby 仕組み( 後述) 的に他の言語でも使えそう https://myray.app/ 10
使い方 11
セットアップ 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
ログの出力 ray() これだけで十分便利 配列・オブジェクトは折りたたみ・展開可能 色を変更可能 (green / orange / red
/ blue / purple / gray) ray("It's green")->green(); 13
PhpStorm と連携 ログのファイル名をクリックするとPhpStorm で該当ファイル・該 当行を開いてくれる 便利 14
仕組み 15
シンプル 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
つまりコンテナを使った開発では そのままだとホスト側のアプリに繋がらない 設定ファイル(ray.php) でPOST 先を切り替える必要あり return [ 'host' => 'host.docker.internal',
'port' => 23517, 'remote_path' => null, 'local_path' => null, ]; https://myray.app/docs/environments/docker 17
適切な形式で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
便利な機能 19
表示を見やすくするしてくれる機能 指定形式の文字列を配列同等の折りたたみ表示に ray()->json('JSON形式の文字列') ray()->xml('XML形式の文字列') ray()->carbon(Carbonインスタンス) 20
デバッグ時に便利な機能 ray()->backtrace() ray()->if(条件式)->text('ログ') 条件式がtrue の場合のみメソッドチェーンで繋げた処理が実行さ れる ray()->once('ログ') ループの最初の一回にログ出力を限定できる ray()->notify('通知メッセージ') デスクトップ通知
21
計測 ray()->measure(); // 何か重い処理 ray()->measure(); // 何か重い処理 ray()->measure(); 22
まとめ Ray を使うとデバッグログをデスクトップアプリから見やすい形式 で確認できるようになる 色々便利な機能はあるが、シンプルに ray() 関数を使うだけでも十 分便利 PHP で開発する際のデバッグツールの選択肢に加えてみるのもアリ
ではないでしょうか 23
ご清聴ありがとうございました 24
補足 (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
補足 ( リモートサーバーから使う場合) SSH 接続情報を設定すれば使用可能 https://myray.app/docs/environments/remote 26
補足 (WSL から使う場合) 下記①〜③のいずれかの方法で使用可能(公式推奨は①・②) Windows に特定のIP を設定した上でRay の通信先に設定 ① 固定IP
を振る ② DHCP Reservation を設定 ③都度都度Windows のIP アドレスを設定 https://myray.app/docs/environments/windows#wsl2 27