PHPでデバッガを使うメリット 8選

弊社のスタッフさんに

「僕はPHPではデバッガ使わないです。」

って言われて衝撃を受けました。

私は自分の中でデバッガを使うのは当たり前!便利だし!と思っていたけれども、すぐに

「デバッガはここがいいんだよーん」

と力説もできなかったので、すごすごと引き下がりチキンなので「PHP デバッガ メリット」とかググってみました。

しかし、デバッガの使い方とかが上位に出てきて、あんまり「これだ!」ってのなかったので、自分で書いちゃいます。いつか同じことを聞かれた誰かが読んでくれるといいな~ と思います。

というわけで、私が思う、PHPでデバッガを使うメリットを、ランキング形式でお届けします♪

①var_dumpデバッグは(以下print_r、echoでも同じ)、var_dumpと書くのが面倒

ハエある第一位は、これ。

そして、書いたら消さないといけないのだ。それも面倒。うっかりコミットしちゃったりもする。どっかに書かれたvar_dumpが残っていやしないかい~??

②var_dumpデバッグは、見づらい。

型とか文字数とか…あと、階層になってるのを自分で解読しないといけないのがつらい。脳みそは別のことに使いたい。

③var_dumpデバッグは、2つ以上の変数の中身を見る時に、自分で名前をつけて出力しないといけない。

あんまりピンとこないと思うので、そろそろコードを書くとしよう…。

$hogehoge = "ほげほげ";

$clilin = "クリリン";

print"これはhogehogeの分"; //これが面倒!
var_dump($hogehoge);

print"これはクリリンの分"; //これが面倒!
var_dump($clilin);

上記例のように、変数が$hogehogeと$ukikiの二つがあって、二つの中身を見たい時、var_dumpの前に、この変数は何の変数だよと説明しないと、いけない。

④var_dumpデバッグだと、関数やループなどがあった時のその後の状態を監視するのに、いちいちvar_dumpで出力しないといけない。

これも下記のコードサンプルで。

$hogehoge = "ほげほげ";

$hogehoge = changeString($hogehoge);

print"これはchangeStringの後のhogehoge";
var_dump($hogehoge);

$hogehoge = changeParameter($hogehoge);

print"これはchangeParameterの後のhogehoge";
var_dump($hogehoge);

関数などを通過した後の変数の中身を調べるために、その都度var_dumpを書かないといけないのです。面倒!!

⑤プログラムの流れや実行順序がわかる

難しい言葉でいうと、コールスタックがわかるってことです。意外と大事で、このメソッドどっから呼び出されてるんだろう~ とか、不具合の原因が上流のメソッドにある場合も多いからです。

下記のような関数もあるようですが、やっぱり書くのは面倒ですよね。

debug_backtrace()

⑥プログラム実行中に、変数の値を書き換えられる

上記の④までは、かなりアナログな説明で、駆け出しプログラマーでも理解できると思いますが、そろそろ、デバッガの真の実力について語る時が来たようだ
(`・ω・´)

ここでこんな値が来たら、こう動いてほしい… その動作を確実に把握できますし、意外な値が入ってきたとしたときの動作も確認できます。

⑦プログラム実行中に、ちょっとした式が書ける

Expressionsという機能で、とある変数に何かしたらどうなるんだろう?ということを、式を書いて検証できます。

式をプログラムに書いて、実行!とする試行錯誤の手間が省けますよね。

⑧プログラムの中身が自分で思った通りになっているか確認できる

えー、実のところ、私にはこれが意味深いかな。なんというか、いろんな変数、いろんな関数の動作が、意図したタイミングで意図した通りになっているか、確認したい。

そのために、デバッガを使うことが多いです。そうすると、安心もできますしね。

 


 

もちろん、デバッガは他にも機能があって、非常に便利なのですが、私が思うメリット8選は上記でした。

弊社では、スタッフさんに自由に開発してもらっているので、開発スタイルは個人に任せています。(新人に教えるのはまた別)

デバッガ使うのイヤって気持ちも、わからないでもないんですよね。
デバッガ起動するのに、多少の時間がかかりますからね。

PHPって高速だから、一瞬で実行できるし、ちょっとしたことを調べたいなら、画面出力デバッグでいいと思うんです。

なんで、最終的には早く、品質がいいものができればいいんですけどね。

カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です