Microsoft Windows NT 3.1

コードネーム"NT OS/2"

MS-DOSがPC/AT互換機の標準的なオペレーティングシステムとして使われたことで、マイクロソフトがパーソナルコンピュータ市場に大きな影響力を持っていた中、ネイサン・ミアボルドはマイクロソフトの独走に2つの大きな脅威があると考えていた。1つはMS-DOSが動作するインテルプロセッサ系列より強力であるとされていたRISCアーキテクチャ。もう1つはマルチプロセッサとネットワークをサポートするクロスプラットフォーム・マルチタスクオペレーティングシステムであるUnixである。Unixが各々の独自の派生システムでプログラムを動かすにあたって改修を必要としたために普及を妨げられていた中、ビル・ゲイツはRISCプロセッサとUnix風オペレーティングシステムの組み合わせは市場の脅威であり、マイクロソフトは複数のアーキテクチャで動作するUnixの対抗馬を開発する必要に迫られていると考えていた。
ゲイツは新しいオペレーティングシステムの開発を促すため、ディジタル・イクイップメント (DEC) からデヴィッド・カトラーを雇い入れた。カトラーはDEC Prismアーキテクチャとそのマイクロカーネルオペレーティングシステム"Mica"の開発で苦難の連続を経て会社を辞め、DECにいた部下を引き連れてマイクロソフトに加わることに同意した。カトラーは1988年10月31日にマイクロソフトに入社し、11月に次期オペレーティングシステムの開発に取りかかった。
当初、Windows NT 3.1（以下、NT 3.1とする）はIBMと共同開発していたOS/2の改良版として開発された。OS/2はMS-DOSの後継を意図していたものの、未だ商業的に成功していなかった。NT 3.1は異なるプロセッサプラットフォームに移植できるよう設計され、まだほとんどのオペレーティングシステムになかったマルチプロセッサシステムをサポートした。企業をターゲットとするため、ネットワーク、POSIX標準、およびオレンジブック標準に準拠するセキュリティプラットフォーム（パーミッションを備えるマルチユーザーシステムとセキュリティ関係のイベント監査を備えるという要件）をサポートした。
x86依存コードの使用を避けるため、まず開発チームは非x86プロセッサ（Intel i860のエミュレート版）をOSの開発対象に据えた。NT 3.1はそのチップのコードネーム"N10"をほのめかすNT OS/2というコードネームが付けられた。DECがマイクロソフトを「新しいオペレーティングシステムの開発にMicaからソースコードを盗用している。」と訴訟する可能性が浮上すると、マイクロソフトはDEC AlphaプロセッサをサポートすることでDECと示談を成立させることに合意した。1989年4月までにカーネルはエミュレータで動作するようになった。開発チームは18ヶ月で開発が完了すると見込んでいた。i860がプロジェクトに適さないと判断された後、12月にNT OS/2の開発はMIPS R3000チップに移され、3ヶ月以内に移植を完了した。NTプロジェクトの開発完了にどれほどの期間を要するか不透明であったため、1990年2月にポール・メリッツはCOMDEXで新しいOSの予告を行い、OSは1994年までに完成しないだろうとする競合企業の予想を牽制した。（メリッツは1992年には完成すると予測していた。）

"Windows NT"への路線変更

1990年5月、マイクロソフトはMS-DOSベースの次期WindowsオペレーティングシステムであるWindows 3.0をリリースした。Windows 3.0の商業的成功はOS/2の友好関係に悪影響を与えた。IBMはマイクロソフトがOS/2を主力プラットフォームとして開発に注力することを望み、Windows関係のビジネスの展開には反対した。これらの噂から、ユーザーと開発者はWindowsとOS/2のどちらが採用されるかはっきりしない状態にあった。（APIレベルで互いに互換性がなかったことが状況を悪化させた。）1990年8月、Windows 3.0の人気を受けて、NT OS/2の開発チームはWindows APIの32ビット拡張版 (Win32) を使用したオペレーティングシステムを作り直すことにした。Win32はWindowsで使われる16ビットAPIと親和性のある構造に整備されており、開発者がWindows用の既存のソフトウェアを互換性を維持したまま新しいプラットフォームに移植しやすくなった。NT 3.1のアーキテクチャがWindows風にシフトしたように、シェルもOS/2のプレゼンテーションマネージャーからWindowsのプログラムマネージャに変更された。
これらの変更により、NTは当初予定していたCOMDEX 1990では発表されなかった。この時点では人々もIBMもNT OS/2がWindows NTに替えられたことを認知していなかった。IBMとマイクロソフトはOS/2を共同開発する代わりに主要バージョンを交互に開発することで合意したにもかかわらず、1991年1月、IBMはマイクロソフトのWindows NT計画を知り、OS/2の友好関係を突如打ち切った。元々の計画通り、IBMは単独でOS/2 2.0を開発し、それ以降のバージョンではマイクロソフトと関わることはなかった。
1991年10月、COMDEXでWindows NTが初めて公に披露された。Windows NTのリリースと同時にそれに対応したソフトウェアを供給できるよう、マイクロソフトは出席者の一部の開発者に32ビットソフトウェア開発キットを配布した。デモンストレーションは好意的に受け取られた。PC Magazine誌はWindows NTを「オペレーティングシステムの現代的革新」としたが、それと同時に、後方互換性が最終リリースまで維持されないかもしれない、と指摘した。1992年3月、マイクロソフトはWindows 3.1にWindows NTプログラムと部分的な互換性を持たせるWin32sをリリースした。
1992年6月のWin32 Professional Developers Conferenceにて、Windows NTがx86とMIPSプロセッサで動作するデモンストレーションを行うと同時に、Windows NTのベータ版と更新された開発キットがリリースされた。また同時に、マイクロソフトはWindows NT用のSQL Serverの新バージョンを発表した。（UnixベンダーからはUnixシステムの市場シェアに影響を与えるキラーアプリになると恐れられた。）NTのメモリ使用量が増加したという課題も挙がった。当時の多くのコンピュータが4MBのRAMを搭載していた中、NTは16MBが推奨されていた。当時のRAMは高価であったため、その厳しいシステム要件はWindows NTの販売や普及に影響すると考えられた。ページングなどの手法によってメモリ使用量を削減する試みが行われた。
1992年10月、マイクロソフトはNTのパブリックベータビルドを公開し、数ヶ月後にCOMDEXにてWindows NT用のサードパーティ製ソフトウェアを中心にプレゼンテーションを行った。NTの最終プレリリース版は1993年3月にリリースされ、それと同時にサーバー版のWindows NT with LAN Managerについても公表された。安定性とパフォーマンスが向上したにもかかわらず、NT 3.1は未完成の状態でリリースされるか、1993年より後にもつれ込むのではという懸念が依然残っていた。

リリース

Windows NT 3.1およびWindows NT 3.1 Advanced Serverは1993年7月26日にリリースされた。まず、x86とMIPS版のみが出荷され、9月にDEC Alpha版が出荷された。ワークステーション版は495ドル、サーバー版は2995ドルでの販売予定で、始めの半年間のみ1495ドルで販売される予定であったが、この値引きは次期バージョンのリリースまで継続された。開発には250人のプログラマ、560万行のコード、1億5000万ドルのコストが費やされた。開発最後の年には3万以上のバグが修正された。
NT 3.1のバグを修正するため、3つのサービスパックが公開された。1993年10月8日にService Pack 1がリリース、1994年1月24日にService Pack 2、1994年10月29日にService Pack 3がリリースされた。Service PackはCDおよびフロッピーだけでなく、CompuServeなどのパソコン通信やインターネットを通しても供給された。NT 3.1のサポートは2000年12月31日に終了した。
NT 3.1は英語、オランダ語、フランス語、ドイツ語、日本語、スペイン語、スウェーデン語といった様々な言語にローカライズされた。デンマーク語、フィンランド語、イタリア語、ノルウェー語、およびポルトガル語がワークステーション版のみ存在した。

オペレーティングシステムの目標

カトラーはWindows NTの開発にあたって3つの大きな目標を掲げた。1つ目の目標は移植性である。以前のオペレーティングシステムは単一のアーキテクチャーに大きく依存していたため、Windows NTは複数のアーキテクチャで動作できるようにすべきとした。これを達成するにはオペレーティングシステムのコアを含む大部分をC言語で記述する必要があった。計画段階でWindows NTは旧来のどのオペレーティングシステムよりもメモリを多く消費することが明らかになった。グラフィックシステムやネットワークシステムの一部もC++で記述され、ハードウェアへの直接アクセスやパフォーマンスに大きく関わる機能といったオペレーティングシステムの一部分だけがアセンブリ言語で記述された。これらのモジュールは分離されており、オペレーティングシステムを新しいアーキテクチャに移植するときに改造しやすくなった。
2つ目の目標は信頼性。アプリケーションやハードウェアのエラーでシステムを破壊することがないようにすべきとした。これは、オペレーティングシステムはクリティカルなアプリケーションと親和性があるものにすべきということである。これを達成するため、Windows NTのアーキテクチャはオペレーティングシステムのコアを分離してアプリケーションが直接それにアクセスできないように設計された。カーネルはマイクロカーネルとして設計され、コアのコンポーネントはモジュール形式のカーネルで動作した。カトラーはこの道義をDECでの経験から得ていた。信頼性は堅牢性を含んでおり、オペレーティングシステムは外部からの攻撃を阻止できるべきとした。メインフレームでは、全てのユーザーは管理者によってそれぞれのアカウントに権限が割り当てられており、機密文書へのアクセスを防ぐといったことが既に実現されていた。仮想メモリ管理はマルウェアやメモリの外部領域からアクセスするユーザーによる攻撃を防ぐよう設計されていた。
3つ目の目標は「パーソナリティ」と呼ばれた。オペレーティングシステムはWindows、MS-DOS、およびOS/2のアプリケーションといった様々なオペレーティングシステム用に設計されたアプリケーションが動作できるようにすべきであるとした。MachカーネルはAPIをコンポーネントに移動させて、アプリケーションのようにユーザーモードで実行させることで変更や追加を容易にできるようにして、同様のコンセプトを実現した。Windows NTはこの道義を継承した。
これほどの目標にもかかわらず、実行速度を上げるためにコードの重要なセクションを結合したことで、オペレーティングシステムのパフォーマンスは最適化された。ネットワークのパフォーマンスを向上するため、ネットワークシステムの大部分はオペレーティングシステムのコアに移動された。
Windows NTはネットワークオペレーティングシステムとして設計された。この分野ではノベルがNetWareで独占的にリードしており、マイクロソフトはNetWareのリードを覆す製品を開発できずにいた。カトラーは信頼できるネットワークオペレーティングシステムで顧客を獲得することを望んでいた。ビル・ゲイツは、既にMS-DOSやWindowsでデスクトップオペレーティングシステムの市場は獲得しており、Windows NTでネットワーク市場も同様に獲得したいと考えていた。ゲイツは新興的なサーバー市場を掘り起こすことに執心していたと同時に、1995年までデスクトップ市場（Windows 95）での成功は予期していなかった。
したがって、プロダクトマネージャーのデイビッド・サッチャー (David Thacher) のインタビューでは、Windows NTはハイエンドのオペレーティングシステムと位置づけられていた。これはWindows 3.1の完全な置き換えを狙って設計されたものではなく、むしろマイクロソフトのオペレーティングシステムのラインナップを補うものであった。全てのWindows販売量の10%から20%、ハイエンド市場の10%にあたる100万本の市場シェアを獲得したとされた。

システム要件

Windows NT 3.1は複数のプラットフォームをサポートしており、x86アーキテクチャの他にDEC AlphaまたはMIPS (R4000およびR4400) コンピュータで動作する。
x86システムでの最小システム要件は、80386 25MHzプロセッサ、最小12MBのメモリ、75MBのハードディスク、VGAグラフィックカード。RISCシステムは16MBのメモリ、92MBのハードディスク、CD-ROMドライブ。Advanced Serverエディションでは80386プロセッサと16MBのメモリ、90MBのハードディスク。RISCシステムでは110MBのハードドライブ容量が必要。
WIndows NT 3.1はデュアルプロセッサシステムをサポートしており、Advanced Serverエディションは最大4基のプロセッサをサポートする。プロセッサ検出ルーチンの不具合により、Windows NT 3.1はPentium II以降のプロセッサではインストールできない。マイクロソフトはこの問題を修正していないが、非公式パッチが存在する。

日本語版

Windows NT 3.1の日本語版は1994年1月25日に発表され、PC/AT互換機版は1月28日、PC-9800シリーズ版は2月25日に発売された。PC/AT互換機版のシステム要件は、最小14MBのメモリと100MBのハードディスク。PC-9800シリーズ版のシステム要件は最小13.5MBのメモリと120MBのハードディスクとなっている。Advanced Serverエディションでは、PC/AT互換機版は18MBのメモリ、120MBのハードディスク、CD-ROMドライブ、PC-9800シリーズ版は17.5MBのメモリ、140MBのハードディスク、CD-ROMドライブとなっている。

評価

Windows NT 3.1は初年度に30万本を売り上げた。486プロセッサと16MBのメモリを要求するハードウェア要件は当時の平均的なコンピュータのスペックを上回っており、ハードルが非常に高かったことに加え、実使用にはとても遅すぎた。NT 3.1の能力を活かせる32ビットアプリケーションは数が乏しく、ユーザーは古い16ビットアプリケーションに頼らざるを得なかったが、それはWindows 3.1よりも動作が遅かった。1993年11月時点で150のWindows NTアプリケーションが存在したとされており、オフィススイートなどの著名なソフトウェアはNT 3.1では利用できなかった。NT 3.1の開発段階でAPI呼び出し規約が変更され、NT 3.1のプレリリース版向けに開発された32ビットアプリケーションは最終版では動作しなかった。これはMicrosoft Visual C++のような商用ソフトにも影響した。
RISCシステムのWindows NT 3.1はx86システムより強力であったにもかかわらず、それ以上に不利となる点を抱えていた。ほとんどの32ビットアプリケーションやドライバはこれらのプラットフォームには移植されなかった。16ビットアプリケーションはRISCシステム上では80286エミュレーションを行う必要があり、16ビットアプリケーションをネイティブに実行できるx86システムと比べると幾分パフォーマンスが低下。さらに386呼び出しに依存する16ビットアプリケーションはRISCシステムでは動作しなかった。
しかし、否定的な評価が全てではなく、NT 3.1のマルチタスク処理能力は特にWindows 3.1と比較して好意的に評価された。オペレーティングシステムのサイズを考えると、フロッピーディスクからのインストールはとても時間を取る作業ではあったが、インストールは非常に簡単になった。失敗に終わったLAN Managerの後継にあたるAdvanced Serverは前者よりも技術的に幾分優れていたが、16ビットアプリケーションの動作が遅いといったワークステーション版と同じ問題を抱えていたことで、成功には至らなかった。Advanced Serverは競合のNetWareと異なり、クライアントの数が増えても価格は変わらなかったため、大規模ネットワークにとってはコスト面で有利であった。
マイクロソフトはWindows NTで、Unix、NetWare、OS/2によって独占されていた市場に参入した。1993年11月のInfoWorld誌がいくつかのオペレーティングシステムのネットワーク機能をテストしたところによれば、Windows NT 3.1はUnix、NetWareおよびOS/2に接続するクライアントソフトが存在しなかったため、NetBEUIを通してNTのサーバーにしか接続できず、内部クライアント通信に大きな欠点があると指摘した。Advanced ServerはNTクライアントとMacintoshおよび限定的ながらOS/2だけが接続可能であった。
NT 3.1はそこそこの成功に留まったが、その影響力は大きかった。Unixディストリビューターの開発者はオペレーティングシステムの標準化に取り組むようになり、ノベルは市場シェアを考慮してUnixベンダーを買収した。マイクロプロセッサの製造元は新しいオペレーティングシステムの移植性を利用して販売が促進されることを望み、Sun SPARCアーキテクチャやClipperアーキテクチャなどの様々なプラットフォームへの移植が発表された。ハードウェアがオペレーティングシステムを動作させるのに十分な性能に達した時、Windows NTはすぐにデスクトップ市場を独占するだろうと認識されていた。8年後の2001年10月、マイクロソフトは依然MS-DOSベースであったコンシューマ向けのWindows 9x系とNT系を統合し、NTアーキテクチャを利用した最初のコンシューマ向けWindowsとなるWindows XPをリリースした。