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

PsySHを使った効率的なデバッグ方法について / How debug efficiently using PsySH

PsySHを使った効率的なデバッグ方法について / How debug efficiently using PsySH

Futoshi Endo

March 25, 2023
Tweet

More Decks by Futoshi Endo

Other Decks in Programming

Transcript

  1. © 2012-2023 BASE, Inc.
    2023/03/25 PHPerKaigi2023 LT
    PsySHを使った効率的なデバッグ方法について

    View Slide

  2. © 2012-2023 BASE, Inc. 2
    氏名:Futoshi Endo
    所属:BASE株式会社
    業務:バックエンド エンジニア
    趣味:料理、音楽鑑賞、ゲーム
    PHP歴は6年。
    好きなPHPの関数は array_map です。
    ● Endo Tech Blog
    ● https://scrapbox.io/fendo181/
    Fendo181
    自己紹介

    View Slide

  3. © 2012-2023 BASE, Inc.
    今日の本題

    View Slide

  4. © 2012-2023 BASE, Inc.
    今日の本題
    4
    var_dump したけど
    ほしかった情報が
    出てなかった...。
    別の箇所でもう一度
    var_dumpさせよう
    Xdebugの
    リモートデバッグを試そう
    としたけど、思った以上に
    設定に時間がかかるなぁ...
    こんな経験ありませんか?

    View Slide

  5. © 2012-2023 BASE, Inc.
    今日の本題
    5
    debugの為にdebugしている...ってコト!?

    View Slide

  6. © 2012-2023 BASE, Inc.
    今日の本題
    6
    PsySHの良さを伝えにきました

    View Slide

  7. © 2012-2023 BASE, Inc.
    アジェンダ

    View Slide

  8. © 2012-2023 BASE, Inc.
    アジェンダ
    8
    ● PsySHの紹介
    ● 基本的な使い方について
    ● おすすめのデバッグ方法
    ● まとめ
    ● (参考文献の紹介)

    View Slide

  9. © 2012-2023 BASE, Inc.
    PsySHの紹介

    View Slide

  10. © 2012-2023 BASE, Inc.
    PsySHの紹介
    10
    ● PsySH is a runtime developer console, interactive debugger and REPL for PHP.
    ○ REPL(Read-Eval-Print Loop)
    ○ 2012年の6月からプロジェクトが開始されていた
    ■ http://justinhileman.info/projects/
    ● PsySHはPHPの対話型シェル(REPL)であり、コードを実行しながら対話的にデバッ
    グや開発を行うことができる。
    ● コードを行単位で評価し結果を直接表示することができて、変数や関数オブジェクト
    の状態を確認する事ができて、デバッグがしやすくなる。
    ● Rubyだと binding.irb がイメージしやすい
    ○ https://github.com/ruby/irb

    View Slide

  11. © 2012-2023 BASE, Inc.
    PsySHの紹介
    11
    (https://github.com/ruby/irb)
    irb の例

    View Slide

  12. © 2012-2023 BASE, Inc.
    PsySHの紹介
    12
    Psyshで同様の事を実行した例

    View Slide

  13. © 2012-2023 BASE, Inc.
    PsySHの紹介
    13
    (https://github.com/ruby/irb)

    View Slide

  14. © 2012-2023 BASE, Inc.
    基本的な使い方について

    View Slide

  15. © 2012-2023 BASE, Inc.
    基本的な使い方について
    15
    インストール方法

    View Slide

  16. © 2012-2023 BASE, Inc.
    基本的な使い方について
    16
    呼び出し方について
    スクリプト内で呼び出す方法 ターミナルから呼び出す方法

    View Slide

  17. © 2012-2023 BASE, Inc.
    基本的な使い方について
    17
    var_dumpでデバッグした例

    View Slide

  18. © 2012-2023 BASE, Inc.
    基本的な使い方について
    18
    var_dumpでデバッグした例

    View Slide

  19. © 2012-2023 BASE, Inc.
    基本的な使い方について
    19
    psyshでデバッグした例

    View Slide

  20. © 2012-2023 BASE, Inc.
    基本的な使い方について
    20
    psyshでデバッグした例

    View Slide

  21. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法

    View Slide

  22. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法について
    22

    View Slide

  23. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法について
    23
    lsを使ってみる

    View Slide

  24. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法について
    24
    lsを使ってみる

    View Slide

  25. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法について
    25
    showを使ってみる

    View Slide

  26. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法について
    26
    showを使ってみる

    View Slide

  27. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法について
    27

    View Slide

  28. © 2012-2023 BASE, Inc.
    おすすめのデバッグ方法について
    28
    「$_ 」で直近の結果が取得できる

    View Slide

  29. © 2012-2023 BASE, Inc.
    まとめ

    View Slide

  30. © 2012-2023 BASE, Inc. 30
    まとめ
    ● PsySHについて紹介しました
    ● PsySHを使う事で対話的にデバッグができて、素早く検証が出
    来る!
    ● 「PHPStorm + Xdebug」でも素早くデバッグができるが
    ちょっとした検証であれば PsySH でも十分に良い
    ○ PHPで競技プログラミングをやっていると凄い助かる
    ● デバッグ方法を極めて良い PHPer Lifeを!

    View Slide

  31. © 2012-2023 BASE, Inc. 31
    Thanks for listening !

    View Slide

  32. © 2012-2023 BASE, Inc.
    参考文献

    View Slide

  33. © 2012-2023 BASE, Inc. 33
    参考文献
    ● https://github.com/bobthecow/psysh
    ● https://www.sitepoint.com/interactive-php-debugging-psysh/
    ● http://justinhileman.info/projects/
    ● https://github.com/bobthecow/psysh/wiki/Magic-variables
    ● https://www.phper.ninja/entry/2015/11/10/031000
    ● https://github.com/bobthecow/psysh/wiki/Commands

    View Slide