前回のPC-9801の発売から3年、この偉大なOSの開発は始まっていました。大きく時代が動いたのはそこからさらに8年後の1993年でした。
PCの基礎を知れ!まずは歴史からだ!PC-8001
PCの基礎を知れ!まずは歴史からだ!PC-8001(2)
PCの基礎を知れ!まずは歴史からだ!PC-8801mkⅡSR
PCの基礎を知れ!まずは歴史からだ!PC-9801
Windows
3.1以前
1985年、MS-DOS上で動くGUI(グラフィックユーザーインターフェース)環境として発表されました。とはいえ、当時はハードウェアも統一されておらず、MS-DOSはグラフィックやオーディオの操作には難が有りましたので、これを仲介としていたWindowsも当然のことながらグラフィック精度は低くオーディオ出力には問題ありませんが、グラフィックとの連動などの操作精度という意味ではとてもビデオ再生などをアプリケーションレベルで使用できるものではありませんでした。
Windows3.1
1993年にマルチメディア機能を充実させ、マルチメディアに対応したWindows3.1はプリインストールOSとされ、爆発的に普及しました。当初はPC-9801シリーズの為に専用のWindowsが発売されていました。ですが、アプリケーション市場はMS-DOSからWindowsへ移り、PC-9801モデルのWindowsでは動かないアプリケーションが出てくるなど、不便さを感じるようになっていくと、次第にPC-9801シリーズからDOS/V互換機へと移行せざるを得なくなっていきました。
開発環境としてはVisualBasic/VisualC++(C/C++Compiler)などが発表されていました。
Windows95
1995年秋に発売されたWindows95は世界的なヒット商品となりました。システム的にはWindows3.xの改良版でしたが、MS-DOSがバンドルされ、それぞれ個別にインストールする必要がなくなり、OS関連の機能GUIも一新されたことで操作性も向上しました。
この頃にはPC-9801シリーズもDOS/V互換機へ以降し、ハードウェアでの垣根は取り払われています。このことによりマルチメディア機能も安定性を見せていました。
また、この頃にはテレホーダイやIP電話といったインターネット普及に貢献する通信回線サービスも始まりInternetExplorerもWindows95と同時に発表されました。
WindowsNT
一方、ビジネスユース向けのOSとして1993年に発売されたWindowsNTはさらにハードウェアに縛られないことを考慮した設計となっていて、インターネットが普及し始めるとサーバーとしての機能を発揮し始めます。元々ビジネスユース向けに設計されていたので、セキュリティ機構が強かったこともサーバー向きでした。
Windows2000/XP/7/8
2000年にNT系でありながら9x系のユーザーインターフェースを取り入れたWindows2000が発表されると、ビジネスユースであるユーザーは9x系とNT系を並用することを止めWindows2000へ移行していきました。2001年にはWindows2000を基本としたWindowsXPが一般家庭向けのOSとして発表されました。
.NET Frameworkなどの組み込みもこの頃からです。また、2002年には最も効率よく.NET Frameworkの開発を行える言語環境としてC#が発表されました。
この頃にはWindowsアプリケーション側からはハードウェア性能差による制限は殆どなく、マルチメディア性能などもほぼ問題はなくなったと言えます。
Windows7やWindows8ではユーザーインターフェースや処理速度の向上、タッチパッドなどの新デバイスへの対応などが主な動きといえると思います。
なぜやれることはそう変わらないのにバージョンがコロコロ変わったのか?
私たちプログラム開発者はAPIと呼ばれるプログラムセットを使用してコンピュータに命令をして画面に思い通りの絵を表示させたり数値を計算させたりします。WindowsなどのOSはGUIを提供するだけではなく、ハードウェアを操るAPIも同時に提供しているのです。このAPIは一種類ではなく、複数の形で提供されますが、このAPIを使用することが出来るOSは限られています。ある程度の拡張性や旧OSへの互換性も考慮して設計されるAPIも、Windows3.1の頃のAPIでは存在しなかったWindows7での機能は当然考慮されておらず、逆にWindows7での使用をターゲットとしたAPIではWindows3.1での使用は需要が存在しないために考慮されていません。
また、ユーザーには解りにくい部分ですが、GUIなどのOS部分での処理順番なども改善され続けているためにアプリケーション側でもそれに見合った実装をしています。このような致命的な違いはAPIでは吸収できません。
このような違いをハッキリさせる為にもバージョンを切り分ける必要はあったのです。