設計と実装@阿部

他の開発チームメンバーと同様に、私も「Microsoft Community Launch Team (CLT)@札幌」イベントに参加してきました。

Microsoftエバンジェリストの方々や、ユーザーコミュニティの方々と交流を持つことができたので、良かったです。
(今年からCLR/Hさんの勉強会にも参加しています)

勉強会後のお茶会もいいですよ。普段聞けないヨタ話も聞けますし(笑)



閑話休題


今回のテーマは「設計と実装」です。
設計は、主にソフトウェアの機能や手順、画面などを「設計書」なるものに書き記す作業です。

実装は、主に設計書に書かれた機能などを、実際のハードウェアやOSの上で動くようにプログラムを書く作業です。

世間一般では、設計を「上流工程」、実装を「下流工程」と呼んだりします。


言葉の印象からすると、実装はたいした作業では無いように感じます。
確かに、良いソフトウェアを製作するには、良い設計書が必要です。

システムの設計は、お客さんの業務内容を知って、お客さんからの要望を聞きつつ、業務の効率アップを目指すという、なかなか難しい作業です。


では、実装はどういう作業でしょうか。
机上で作られた設計書の機能を、実際に稼動する環境で動作するようにプログラムを組み立てていく作業が「実装」です。


例えば、設計と実装という業務を建設業界に置き換えてみましょう。


設計は「建築士」、実装は「大工」という感じですね。


いくら設計が良くても、大工さんの腕が悪ければ「欠陥住宅」になります。
大工さんの腕が良ければ、設計でミスがあっても何とかカバーできます。


これは、ソフトウェアでも同じです。


システム開発で最後にモノを言うのは「いかにして希望どおりの機能を実装出来るか」です。

実装が大変であるというのは、最近のソフトウェア開発ツール(統合環境など)の仕組みにおいて、顕著に現れています。


最近の開発ツールは、設計書を作る要領で画面を作っていき、プログラムコーディング(実装)の部分を極力減らせるようにするのがトレンドです。

高度なシステムの実装には時間が掛かりますから、時間がかかる部分を減らすというわけですね。


これはプログラム言語の進化にも言えること。


先日のCLTの講師である赤坂さんは、WPFでのコーディングに対して具体的なオブジェクトの名前を出して、「プログラマであるならば、どういう仕組みで動いているかという部分も知っておいて欲しい」という感じの言葉を講義の中で言っていました。


優れた実装をするには、システム(ハードウェアやOS)の深い部分の知識が必要不可欠です。

上手い実装なくして、良いシステムはありえません。


システム設計をする際、実装が出来なくてもある程度の良い設計は出来ますが、実装も出来た方がいいのは間違いありません。


これからプログラマーを目指す方々には、ぜひ「実装の達人」を目標として欲しいと思います。