🔍 人間がコンピュータになる訓練
🎯 コードを声に出して説明することで、自分の理解の穴を見つけられるようになる
海外のプログラマの机には、ゴム製のアヒルのおもちゃが置いてあることがあります。ふざけているわけではありません。アヒルに向かってコードを説明するという、由緒正しいデバッグ手法のためです。
やり方
本当にこれだけです。そして、驚くほどよく効きます。
なぜ効くのか
理由は、頭の中で読むときと、声に出すときで使っている脳の働きが違うからです。
黙読では、人は無意識に飛ばし読みをします。「ここはこういう意図で書いたから、まあ大丈夫」と、自分の意図で埋めてしまうのです。ところが声に出して他人に説明しようとすると、その省略ができません。相手は何も知らない前提で話すことになるからです。
そして「この行は……えっと、なんでこう書いたんだっけ」と詰まる瞬間が来ます。そこが穴です。理解していない場所を、自分の口が教えてくれるわけです。
うまくやるコツ
sum に i を足している」。この2つがずれていたら、そこがバグですi は3で、sum は6です」説明できない=まだ書くべきではない
この手法には、もう一つの使い道があります。書く前に使うのです。
これから書こうとしている処理を、コードにする前に声で説明してみる。すらすら言えるなら書けます。詰まるなら、まだ手順が固まっていないということです。そのまま書き始めれば、確実に迷子になります。
書けない原因は、たいてい文法を知らないことではありません。何をすればいいかが決まっていないことです。そういうときは第2トラックに戻って、分解と擬似コードをやり直すのが最短の道になります。
AI時代のラバーダック
今なら、アヒルの代わりにAIに説明するという手があります。しかもこの方法には、おまけが2つ付きます。
「動きません、助けて」と聞くのと、「この関数は合計を出すつもりです。3行目で i を足していますが、結果が1つ多くなります」と聞くのとでは、返ってくる答えの質がまるで違います。説明を書く行為そのものがデバッグなのだと考えてください。
この「自分の理解を言葉にする」習慣は、第6部でAIと組んで開発するときの土台にもなります。
プログラムに潜むバグを見つけて直す作業のこと。「なぜ期待通りに動かないのか」を仮説と検証で突き止めていく、地道だが重要な作業。「バグ(虫)を取り除く」という言葉の成り立ちがそのまま作業内容を表している。
プログラムに含まれる誤りのこと。意図した動きと実際の動きがずれている状態を指し、プログラミングにつきものの現象として扱われる。「虫」を意味する言葉が由来とされ、古くから使われてきたプログラミング用語。
プログラミング言語の文法にとらわれず、日本語や簡単な記号で手順の流れを書き表したもの。実装に入る前に頭の中を整理するための下書きにあたる。「もし〜ならば」「〜を繰り返す」のように、日本語まじりで書いてかまわない。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。