「利用するツールやライブラリ、APIについてよく知ることがデバッグに役立つ」と言うと当然のことのように聞こえますが、こちらはそれをもう少し掘り下げて指摘した記事です。
dalliやSidekiqといった広く使われているRubyライブラリの作者であるMike Perham氏はブログにて、最良のデバッグツールとして次のものを挙げています。
- あなたの同僚
- あなたの創造的な面
- システムに対するメンタルモデル
1.の同僚に意見をもらうのが効果的なデバッグ手法の一つであることはみなさんも実感したことがあるでしょう。2.「あなたの創造的な面」は、細部に集中しているときの論理的な思考から離れるために一眠りするなどして、創造的な思考を呼び起こすことでふいに解決策が思い浮かぶ、といった話です。これも心当たりのある方が多いのではないでしょうか。
個人的におもしろいなと思ったのが3.「システムに対するメンタルモデル」という意見です。「ツールやAPIに十分習熟していないとデバッグはなかなか終わらない、だから学びましょう」という当然の話かと思いきや、単にAPIを覚えるとかソースコードを読むといったことではないようです。
ソフトウェアとはそもそもが複雑なものですが、ライブラリやフレームワークはその複雑さを抽象化によってうまく隠蔽(いんぺい)しています。その抽象を深く理解してメンタルモデルとして持つことが頭の中にシステムを効率的に落とし込むことにつながり、デバッグにも効果的だということのようです。
自分が習熟しているフレームワークを使ったときのデバッグを思い返してみると、たしかに細部のAPIレベルの知識ではなく、各レイヤ間の関係であったり責務であったりを頭の中にイメージとして持てているかどうかが、デバッグ時間の短縮に大きく影響しているように思います。
新しい技術を学ぶときには、こういった点に意識的になってみると効果的かもしれませんね。
URL:http://www.mikeperham.com/2013/09/12/the-three-best-debugging-tools/
- 著者プロフィール
安藤祐介(あんどうゆうすけ)
PHPカンファレンスが終わり、やや燃え尽きながら執筆活動に勤しんでいます。
Twitter:yando
小倉純也(おぐらじゅんや)
抽象的な概念が腑に落ちるととても満足感がありますが、その感覚をほかの人と共有するのはとても難しいことだなと今回の記事を書いて改めて感じました。
Twitter:junya
溝畑考史(みぞはたたかし)
新しい会社ではデプロイが頻繁に行われるのですが、新人のようなミスをやってしまいました……。
Twitter:beatak