検索
連載

大きな問題は小さくして1つずつ対処する――分割統治法問題解決力を高めるコツはプログラミングの原則・思考にあり(4)(3/4 ページ)

本連載では、さまざまなプログラミングの原則・思考の中から、特に問題解決力を高めるのに役立つものをピックアップ。プログラマーは、その思考法をビジネスに応用し、そうではない人はプログラマーと一緒に働く際に思い出してほしい。今回は「分割統治」「1歩ずつ少しずつ」「繰り返しの最小化」の重要性、論理的思考のコツなどについて。

Share
Tweet
LINE
Hatena

UNIX哲学(2) 1つ1仕事

 英語  Make each program do one thing well.

 日本語  1つのプログラムには1つのことをうまくやらせる。

 What 〜1つのソフトウェアは1つの仕事

 1つのソフトウェアには、1つのことをうまくやらせます。

 最良のソフトウェアとは、その生涯において、ただ1つのことをうまく成し遂げるソフトウェアのことです。1つのことをうまく成し遂げ、自分はただちに退場して、次の1つのことをうまくやるソフトウェアに道を譲ります。

 例えば、ディレクトリの内容を一覧するコマンドがあるとします。このコマンドの表示の見栄えをよくしようとして、表示整形の機能を追加してはいけません。このコマンドは、あくまでディレクトリの内容を一覧する仕事に徹するようにします。表示の整形に関しては、別途整形を専門とするコマンドを作成して、それを組み合わせればよいのです。

 Why 〜ソフトウェアがピュアになる

 1つの仕事に集中することにより、コードの不要な部分をなくすことができます。コードに不要な部分があると、実行速度が遅くなります。また、コードが不要に複雑になり、機能追加などの融通が効かなくなります。

 さらに、1つの仕事に集中することにより、その仕事の本質をつかむことができます。1つのことをうまくやるようにソフトウェアを作れないのであれば、問題をまだ完全には理解していない、ということです。

 1つのことをうまくやるソフトウェアができると、他のソフトウェアの中でも比較的簡単に再利用することができます。そこには、大きなソフトウェアにありがちな、再利用を躊躇してしまうような曖昧性はありません。

 How 〜1つの仕事に集中

 1つのソフトウェアには、1つの仕事を担当させるようにしましょう。

 問題が大きかった場合は、まず、問題を小さく分割します。そして、その小さな問題に対応する、小さなソフトウェアを作成します。あくまで、小さなソフトウェアは1つの仕事に専念するようにしてください。大きな問題も、このようにすれば、少しずつ、しかし確実に克服することができます。

 問題が拡張していった場合は、別途1つの仕事をするソフトウェアを作成し、組み合わせることで対応します。前のソフトウェアに継ぎ足さない方針にすると、巨大なソフトウェアにありがちな、スパゲッティ・コード状態になることを回避できます。

 1つの仕事をするシンプルなソフトウェアが作成できたら、そこに新機能やオプションを付ける誘惑に負けないようにします。「多機能主義」に抗うのは、案外難しいことです。しかし、これを許すと、もともとの目的から少しずつずれたソフトウェアに変容してしまいます。そのコードが、本当に必要なのか、そのソフトウェアの本質からずれていないか、常に問い続けます。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る