弊社のスタッフさんに
「僕は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って高速だから、一瞬で実行できるし、ちょっとしたことを調べたいなら、画面出力デバッグでいいと思うんです。
なんで、最終的には早く、品質がいいものができればいいんですけどね。