1998/06/14

プロの大工と言えど、トンカチだけで家を建てることはできません。道具には用途、想定された使い方が必ずあります。これはプログラマが使うツールも同じことです。 当然、VBがあらゆるソフトウェアの開発に常に最適なツールというわけではないし、VCがVBより偉いわけではありません。複数の道具を使えるようになっておくことで、用途に応じて使い分けられるようになることが重要と言えます。。ノコギリで釘を打てないことはないかもしれませんが、生産性は著しく低下します。

今度は逆に道具を作る側で考えてみましょう。「何でもできて、使いやすい」というものを作ることほど難しいものはありません。十徳ナイフは、個々の機能で見れば専用のナイフより使いにくいのが普通です。多くの機能を詰め込んだソフトウェアは必ずしも使いやすいものではないのです。

もし、それら全ての機能が必要であるのなら、無理にひとつのソフトウェアに詰め込むのではなく、必要な機能の数だけのソフトウェアを作れば良いでしょう。理由のもうひとつは、ソフトウェアは巨大化すると品質を保つのが難しくなるからです。複数の機能を持たせたソフトウェアでは、ひとつの機能の不具合が他の機能全体に影響を及ぼす可能性があることを覚悟しなければならなりません。特に規模の大きなシステムでは、まずプログラムを実行ファイルの単位で分割することを検討するべきです。

この例は比較的大きな、しかも目的が抽象的なシステムの開発において発生するかもしれない問題であり、あまり一般的な問題ではないのかもしれません。しかし、小規模なソフトウェアでも、最初は明確な目的をもって設計をはじめたソフトであっても、開発が進んでくると必要以上に機能を追加してしまいがちです。本来の目的を見失わないように、常に意識するべきでです。あまり使わない機能の実装は、本来の機能に悪い影響を及ぼすかもしれないし、機能の量やプログラムの複雑さに比例して開発コストよりも大きな保守コストがかかることを忘れてはなりません。 機能ごとに利用頻度を出して、別のアプリケーションに分割できないかどうか検討してみましょう。

つまり、道具を使う人は、適切な道具を用途に応じて選ぶこと。道具を作る人は、何のためにの道具を作っているのかを忘れないことが、基本的で肝心なことと言えます。