本連載では、さまざまなプログラミングの原則・思考の中から、特に問題解決力を高めるのに役立つものをピックアップ。プログラマーは、その思考法をビジネスに応用し、そうではない人はプログラマーと一緒に働く際に思い出してほしい。今回は「分割統治」「1歩ずつ少しずつ」「繰り返しの最小化」の重要性、論理的思考のコツなどについて。
書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則(2016年3月22日発行)』からの抜粋です。
ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。
なお書籍では、ソフトウェア業界で高名な、よいコードを書くための「プリンシプル」を紹介しています。プリンシプルとは、プログラミングの指針となる「前提」「原則」「思想」「習慣」「視点」「手法」「法則」などのことです。具体的には、「分割統治」「1歩ずつ少しずつ」「繰り返しの最小化」などのプリンシプルがあります。こうした各プリンシプルについて、「それは何なのか(=What)」「それはなぜなのか、なぜ必要なのか(=Why)」「ではどう使えばよいのか、どうすればよいのか(=How)」を中心に解説する構成になっています。
本連載では、さまざまなプログラミングの原則・思考の中から、特に問題解決力を高めるのに役立つものをピックアップしていきます。プログラマーは、その思考法をビジネスに応用し、そうではない人はプログラマーと一緒に働く際に思い出していただければ幸いです。
今回は「分割統治」「1歩ずつ少しずつ」「繰り返しの最小化」の重要性、論理的思考のコツなどについて解説します。まずは「分割統治」の重要性から紹介しましょう。
※編集部注:前回記事「プログラミングに特効薬や万能薬はない――複雑さへの対抗手段としての抽象化とKISS」はこちら
英語 Divide and Conquer
そのままでは解決することが難しい「大きな問題」は、いくつかの「小さな問題」に分割して、個別に解決します。
小さくした各個の問題は、元の問題に比べて格段に容易になり、すぐに解決に至ります。個々の問題解決の積み上げにより、最終的に、元の大きな問題の解決に至ることができます。
大きな問題を、大きな問題のまま解決しようとすると、解決が困難になり、解決が遅くなります。最悪、解決できない場合もあります。規模が大きすぎるがゆえに、問題が複雑になりすぎているからです。
制御が容易になるような規模まで問題を分割して、それから取り組む方が効率的です。
問題を分割してから、解決するようにしましょう。例えば、以下のようにします。
Copyright © ITmedia, Inc. All Rights Reserved.