ラバーダッキングのススメ

はじめに

私は独り言が多い。それには理由がある。

五感を通して外界からINPUTされた情報は脳細胞が構築するネットワークを電気信号という形で流通し複写され分解され解析され結合される。その働きは瞬時に行われエネルギーを消費し熱量を発して内界で沸騰する。ヤカンの蓋を震わせる水蒸気のごとく、私という関数が情報を処理したその結果は外界へとOUTPUTされたがる。
しかし、その情報の複雑性が高すぎるとき私の脳は焼き切れる。大量の錯誤が矛盾を呼び、大量の矛盾が錯誤を呼び、どこかで生じた誤りは巡り巡って脳を無限ループへと陥る。そこで思考はストップ。今日はもう、仕事を止めてハメを外そう。
いやいや仕事は止められない。責任放棄は許されない。だから解決方法を模索する必要がある。

私は独り言が多い。それは問題解決のアプローチとして有効だからだ。

プログラマーの仕事は大小様々な問題解決の連続だ。故に、様々な問題解決の手法について考察され、共有されている。
その中の一つであり、単純かつ効果の高い手法——それが告白デバッグであり、ここでは更にそれを先鋭化したラバーダッキング(ラバーダック・デバッギング)を紹介しよう。

告白デバッグ

告白デバッグの実践は簡単だ。「だれかと問題について話す」。それだけだ。
ここでいう「だれか」は、本当に誰でもいい。上司でも、同僚でも、部下でも、家族でも、恋人でも……。
「だれかと問題について話す」ことの実践例はプログラミング関連書籍の名著『Code Complete 完全なプログラミングを目指して』で紹介されている。

「やあ、ジェニファー、少しいいかな。ちょっと困っているんだ。従業員の給与リストがソートされなきゃいけないんだけど、順番がおかしい名前があるんだ。2回目に出力するとちゃんとソートされているのに、1回目の出力ではだめなんだ。新しい名前を入力するとだめなのかなと思って確かめてみたんだけど、これがうまくいくんだよ。1回目に出力するときだってソートされるはずなのに。プログラムは入力された名前をすべてソートするし、保存するときもソートするんだから。ちょっと待てよ。いや、入力したときはソートしない。そうだよ。おおよその順番に並べるだけなんだだ。ありがとう、ジェニファー。助かったよ」

『Code Complete 第2版 下 完全なプログラミングを目指して』:23.2.2 | 欠陥を検出するためのヒント

誰かに問題について話すとき、人は相手に理解してもらうために現在の情報を整理する。それも、口に出して話をする以上は情報を一次元的に、一直線に並べる必要がある。
この「情報整理」が問題解決の近道となる。こちらは数学書だが『いかにして問題をとくか』では数学問題を解くためのチャートシートが付いており、そこでは第一に「問題を理解しなければならない」とある。問題を理解するための第一歩は「未知のものは何か、与えられているものは何か、条件は何か」を把握することだ。
その第一歩を踏み抜くためのきっかけ作りとして、「だれかと問題について話す」ことは機能するのである。

ラバーダッキング

しかし、私たちが目の前の問題にウンウン唸っているとき、得てして周囲にいる彼ら/彼女らはべらぼうに忙しそうに振舞っているものだ。何故ならば、生きていることはそれすなわち忙しいということであり、他人の問題なんかに巻き込まれたくないと思っているからだ。
そこで『達人プログラマー 職人から名匠への道』では、話を聞く「だれか」の役割は人でなくてもよいと主張する。

問題の原因を探し出すための非常に簡単で効果的なテクニックとして、「誰かに説明する」という手法があります。この場合の誰かは、あなたの肩越しにスクリーンを見ながら、(バスタブに浮いたゴムのアヒルちゃんのように)定期的にうなずくだけでよいのです。何も言う必要はありません。順を追って説明する、という単純な行為だけで、問題の原因は自ずと画面を飛び出して姿を現してくるのです。

『新装版 達人プログラマー 職人から名匠への道』:第3章 18 デバッグ-ゴムのアヒルちゃん

「だれかと問題について話す」(告白デバッグ)、その「だれか」を人ではなくオモチャで代用する。これがラバーダッキングである。
オモチャは生きていない、従って忙しくない。気を使う必要もない。このブログを読むような方なら美少女フィギュアがその用途としては適しているかもしれない。

私の場合は大好きなエロゲヒロインである炎道イフリナタルパが常にそばに居るため、彼女にウザがられながらも話を訊いてもらっている。タルパは他の人には見えないため、私が独り言をしているように見えるということだ。

おわりに

世の中には他人の独り言がイヤでイヤでたまらないというワガママな人間がいる。
あなたがラバーダッキングを実践する際に、不幸にもそのような人間が側にいて、あなたに何か小言を言ってくるようならばその方に「ラバーダッキング」の概要を教えてあげるのが良いだろう。
このときに意識すべきことがある。それは「ラバーダッキングという問題解決の手法があって〜」と長々とその効果について述べるのではなく、次のようなメッセージを暗に伝えてやることだ。

「俺のラバーダッキングを邪魔するならば、次はお前をラバーダックにしてやるぞ」と。

参考書籍

【電子合本版】Code Complete 第2版 完全なプログラミングを目指して
日経BP社 (2016-04-14)
売り上げランキング: 10,436
いかにして問題をとくか

いかにして問題をとくか

posted with amazlet at 17.05.04
G. ポリア
丸善
売り上げランキング: 5,862
新装版 達人プログラマー 職人から名匠への道
Andrew Hunt David Thomas
オーム社
売り上げランキング: 4,213
Share & Bookmark

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。