ソフトウェアとは何か
2020年度から、プログラミング教育が必修となった。プログラミングスクールも活況となっている。
「プログラムは書けます」という人材は結構見かけるが、「ソフトウェア開発できます」という人材は、あまり見かけないような気がする。表向き「ソフトウェア開発できます」と言っているが、蓋を開けてみると「プログラムは書けます(しかも、文法を知っているだけ)」「最新のツールは少し使いこなせます」という、なんちゃってソフトウェア人材だったということが、経験上少なくない。
プログラムが書けることと、ソフトウェア開発ができることは、別である。前者は後者に包含されており、求められるスキルの多さが両者で異なる。ソフトウェ開発者としてのプログラマに求められる能力については、下記記事を参照されたい。
それはさておき、今回は、ソフトウェアとは何か?について考察する。
ウェアとは何か
最初に、ウェアとは何か調査することとする。
ASCII.jp:「-ware」が可能にしたさまざまなIT造語
この意味から、-wareは「材料を表す言葉」と組み合わせて「~製のもの、~用のもの」を意味する語として使われている。
(省略)
そしてhardwareは本来、金属製品を表す言葉なのだ。それがコンピュータ黎明期に、エンジニアがコンピュータに使われている機械部分(金属製)を「hardware」と呼んだことに端を発し、今日のようにコンピュータ本体、ディスプレイ、キーボード、プリンタ、ハードディスク、拡張ボードなど有形の機械装置全般を指すIT英語となったと言われている。
コンピュータの構成要素には、有形の機械装置(hardware)のほかに無形の情報がある。そこで、hard(硬い)と対義的なsoft(柔らかい)を使った造語「software」という名で、無形の情報を呼ぶようにしたのだ。
上記のサイトに記載されている言葉を自分なりに解釈すると、ウェアとは「~な製品」の意味合いで使われるものである。したがって、ソフトウェアはソフトな製品、ハードウェアはハードな製品である。ソフトかハードかを見分ける方法は、そのものを製品としてみたときに、「それは有形か?無形か?」考えてみるとよい。筆者の考えでは、
- ファイル(動画など)が入っていないDVD:ハードウェア
- ファイル(動画など)が入っているDVD:ウェア(ハードウェア+ソフトウェア)
- ファイル(動画など):ソフトウェア
である。が、2については、ハードウェアの部分にあまり価値がないことから、ソフトウェアと呼ばれることは多いと思う。
上図に、ウェアというものを図示した。ポイントは、
- ウェアとは製品のことである
- ウェアは、ソフトなウェアとハードなウェアに分けられる
という点だ。この考えに基づいて、システムというものを整理すると、システムはウェア(製品だから)であり、ソフトなウェアとハードなウェアを組み合わせて構成されるものと定義される。
ソフトウェアとは、物理的な形のないウェアである
ソフトとは、情報のような形のないもののことを指している。形がないのだから、製品の特性を変更しやすい。ハードウェアを作るためには、製品を量産するための型情報(金型など)が必要であり、形があるという特徴以外に、一度作ったものを変更するのが容易ではないという特徴がある。一方で、ソフトウェアを作るためには、型情報は必要ない。形がないゆえに、何度でもソフトウェアを変更することが可能なのだ。
筆者は、この「何度でも変更可能」という点が都合の良いように解釈されているように感じる。変更できるからといって、何度でも変更していいわけではない。メリデメを精査したうえでビジネスに致命的な影響を与えると判断したときに、変更をすべきだ。要件を変えると、ソフトウェア(要件定義書、設計書、プログラム、テスト結果)は変えなければならない。要件を頻繁に変えると、プロジェクトは炎上するのだ。要件定義の変更がどのぐらい影響するかについては、下記記事を参照されたい。
しかしながら、確かに、「変更しやすい」というのは、顧客のニーズの変遷に柔軟に対処できるというビジネス上のメリットがある。今後、ますますソフトウェアの重要性は増してくるであろう。ビジネスとして変えるべき/変えないべきを判断して、ソフトウェアを変更すべきである。
結論:ソフトだからといって、簡単に変更していいわけではない