2007.03.29
シンプルなシステム設計の重要性
後久 和宏
株式会社エクスマート 代表取締役
私がプログラミングを初めてしたのは、約18年前です。 小学校6年生だった私は、家にあったNECのPC98DOというパソコンでBasicという言語に触れ、当時大人気だったTVゲームのドラゴンクエストみたいなソフトを自分で作ってみたい衝動で、自分でノートにマップを書き、主人公のキャラクターがそのマップ上を動きまわるところまで作ったことを覚えています。
キャラクターをマップ上で歩かせ、店に入ったり、画面をスクロールさせたり、海とか山とかは、障害物として歩けない制御を次々に加えていきます。すると、だんだんプログラムのソースコードがぐちゃぐちゃになり、結局、RPGの醍醐味である敵に出会って戦闘するところまで開発するところまで辿り着けませんでした。
つまり、そんな経験から、「プログラムは機能拡張を繰り返せば将来的には必ず破たんする」と信じていました。
その「破たん」をどのようにすれば未然に防げるか私自身が制御できるようになってきたのは、大学院でソフトウェア工学を修了し、サン・マイクロシステムズでITコンサルタントとして実ビジネスでキャリアを積んだ約5年前ぐらいです。プログラムを始めてから10年以上経ってようやくです。
今は「プログラムは機能拡張を繰り返しても、良質な設計であれば、将来破たんする可能性をかなり下げることができる」と考えています。
それでは「良質な設計」とは一体どういうものでしょうか。
私は「良質な設計」とは「シンプルな設計」であると考えています。
【直感的に考えよう】
設計だからと言って難しく考える必要はありません。直感的に理論を組み上げ、素直に設計に落としこみます。ただ、実際やってみると初心者の設計者には結構難しい作業だと思います。直感的な設計だからこそ、他人に説明し易いはずです。
さらにシステム設計・開発のプロとして、お客様が実現したいものを「整理」することをシンプルな設計の必要条件として加えることが出来るようになってくると、さらに良質な設計に近づくことができるのではないでしょうか。
【整理しよう】
整理して、機能単位を明確に分けます。分けることで、各機能の結合度を下げ(疎結合)、再利用性を高めます。ある程度、プログラミング経験を積み、デザインパターンなどの学習を積上げ、自身でもフレームワーク等の設計を実践することで、更に整理上手になります。
これらの設計の重要性は、オブジェクト指向プログラミングでも手続き型プログラミングでも同様です。
私がコンサルタントとして将来破たんする可能性が高いシステムをお客様にご提供していいでしょうか?直感的に整理されている保守・運用が容易なROIを考慮したシステムをお客様にご提供しなければいけません。シンプルなシステム設計の重要性を忘れてはいけないのです。
2007年3月28日
株式会社エクスマート
代表 後久和宏
関連記事
2009.01.13
2008.09.26
後久 和宏
株式会社エクスマート 代表取締役