説明することで自己解決、文芸的プログラミングとフォース:問題解決力を高めるコツはプログラミングの原則・思考にあり(2)(1/3 ページ)
本連載では、さまざまなプログラミングの原則・思考の中から、特に問題解決力を高めるのに役立つものをピックアップ。プログラマーは、その思考法をビジネスに応用し、そうではない人はプログラマーと一緒に働く際に思い出してほしい。今回は「ラバーダッキング」「文芸的プログラミング」「フォース」の重要性について。
書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則(2016年3月22日発行)』からの抜粋です。
ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。
なお書籍では、ソフトウェア業界で高名な、よいコードを書くための「プリンシプル」を紹介しています。プリンシプルとは、プログラミングの指針となる「前提」「原則」「思想」「習慣」「視点」「手法」「法則」などのことです。具体的には、「ラバーダッキング」「PIE」「プログラミングセオリー」などのプリンシプルがあります。こうした各プリンシプルについて、「それは何なのか(=What)」「それはなぜなのか、なぜ必要なのか(=Why)」「ではどう使えばよいのか、どうすればよいのか(=How)」を中心に解説する構成になっています。
本連載では、さまざまなプログラミングの原則・思考の中から、特に問題解決力を高めるのに役立つものをピックアップしていきます。プログラマーは、その思考法をビジネスに応用し、そうではない人はプログラマーと一緒に働く際に思い出していただければ幸いです。
今回は「ラバーダッキング」「文芸的プログラミング」「フォース」の重要性について解説します。まずは「ラバーダッキングとは何か」から紹介しましょう。
※編集部注:前回記事「プログラミングは問題解決の作業――文脈思考の重要性」はこちら
ラバーダッキング
英語 Rubber ducking
別名 ラバーダックデバッキング
テディベアデバッグ
告白デバッグ
What 〜「説明する」というデバッグ
「ラバーダッキング」は、ある種のデバッグ手法です。
プログラミングにおいて、発生している問題や、問題を抱えているコードを「誰か」に説明します。すると、問題の原因に自ずから気付き、自己解決できることがあります。
この場合の「誰か」は、バスタブに置いたゴムのアヒル(ラバーダック)のように、話を聞きながら定期的にうなずくだけでよいのです。何かを言う必要はありません。
実際にやってみると、効果はてきめんです。場合によっては、説明し始めた途端に気付いて「あ、もういいや、変なところがわかったよ。ごめん、ごめん」ということになり、照れくさい思いをすることもあります。
「簡単で」「安い」のに、効果の高いデバッグ方法です。
Why 〜自己解決を促す
この行為は簡単すぎて、それほど意味のあることに思えないかもしれません。
ただ、他人に問題を説明するには、まずコードを通読し、その中に存在する暗黙の仮定を明確にしなければなりません。このような仮定を言葉で表すことにより、問題に対する新たな見識が生まれて、解決の糸口となります。
また、その説明の過程において、間違ったコードに到達した時点で、「説明ができなくなる」あるいは「説明とコードが合わなくなる」ことに気付き、不具合箇所を発見できることもあります。
このように、「順を追って説明する」という単純な行為だけで、問題の原因は自ずと姿を現してくるのです。
How 〜無機物に説明
問題解決が停滞した場合、「誰か」にそれを説明しましょう。
話しかける「誰か」は、それこそ「ゴムのアヒル」のように、無機物でも構いません。「説明する」という行為が重要です。
例えば、ある大学の情報系の学部では、ヘルプデスクのそばに「テディベアのぬいぐるみ」が常備されています。そして、不思議な障害に悩む学生は、人間のスタッフに相談する前に、ぬいぐるみに向かって説明しなければならないルールにして、一定の効果を上げています。
とはいえ、話しかける相手は、同僚のプログラマが最適です。もっともリアリティがあり、もっとも臨場感を持って説明することができます。自己解決できなくても、アドバイスがもらえることもあります。
ただし、同僚の時間も貴重です。チームの最適化を鑑みると、この手法を採用する際のルールが「まず無機物」というのは効果的な運用と言えます。どうしても話したい時は、主旨を説明し、許可を得ることが礼儀でしょう。
出典書籍
『達人プログラマー―システム開発の職人から名匠への道』アンドリューハント他, ピアソンエデュケーション(2000)
関連書籍
『CODE COMPLETE 第2版 上 完全なプログラミングを目指して』スティーブマコネル, 日経BP社(2005)
『CODE COMPLETE 第2版 下 完全なプログラミングを目指して』スティーブマコネル, 日経BP社(2005)
Copyright © ITmedia, Inc. All Rights Reserved.