ラバーダックデバッグはプログラミング以外でも使える
IT専門学生のふじさわです。
みなさんはラバーダックデバッグをご存じですか?
ラバーダックデバッグってなに?
ラバーダックとはその名の通りゴム製のアヒル。よくお風呂に浮かべるイメージのあるアレですね。
デバッグは、コンピュータ系の用語でプログラムのミス(バグ)を修正してなくすことを指します。
何ら関係なさそうな2つの単語ですが、これも立派な用語の1つです。
ラバーダックデバッグとは、「ゴム製アヒルに自分の書いたプログラムを声に出して説明すると、新たにバグを見つけることができる」という手法。
ゴム製のアヒルである必要はまったくないのですが、(実話かどうか定かではありませんが)ゴム製アヒルを持ち歩くエンジニアがいたという話が元ネタのようです。
要は、誰かに教えるような形で自分の書いたコードを説明する時に情報が整理され、間違いや足りない部分を浮き彫りにするわけですね。
ラーニングピラミッド
どんな学習行動がどれほど定着するかを表すラーニングピラミッドも併せてご紹介します。
これをご覧いただくと分かる通り、なにかを学習する際には誰かにそれを教えるという行動がもっとも学習効率がいいんですよね。
ラバーダックデバッグとの共通点や私の実体験も踏まえて考えると、人がインプットしたものを他人に教えることでアウトプットして学習していく過程は次のようなものだと思います。
① なにかを学習する時やプログラム(アルゴリズム)を自分で考えてコーディングしているとき、頭の中に漠然としたイメージとして保存・処理される。どちらかというと映像的であったり感覚的であったりする。故に抽象的で解釈の解像度が荒く、曖昧さを残したまま。
② その脳内イメージを第三者に伝える際には、それらを具体化・言語化する必要が生まれてくる。それに伴い、まずは脳内で漠然と存在するものの解釈の解像度を上げることになる。
③ 知識の1つ1つ、コードの1行1行の意味を言語化できるほど解像度が上がったら、今度はそれら同士の結びつきや位置づけ、話す順番・処理の順番など全体的な整理が行われる。
④ 第三者に話しながらこれらの情報整理を逐一行い曖昧にしていた部分が埋まることで、より理解が深まったり間違いや過不足に気付いたりする。
ただ、毎回第三者を呼びつけて求められてもないのに説明するのは現実的ではありません。
なので、ラバーダックなどの無機物に話しかけ説明するのが最善なのでしょう。
また、ラーニングピラミッドで示されるように「他人に教える(説明する)のが頭の情報整理になる」ことは、プログラミング以外のどんなことだろうと変わりません。
日常でも、何かの理解を深めたいとき、頭の情報整理をしたいときには、是非ラバーダックデバッグをお試しください!
記事をご覧いただきありがとうございます! サポートしていただいたお気持ち以上に、noteをはじめいっぱい頑張ります!