ReactOS

ReactOSは、オープンソースのオペレーティングシステムである。Windows互換のオペレーティングシステムを目指し、開発が進められている。

1. 概要
-----

ReactOSは、2021年現在、Windows Server 2003相当の互換性を目標として開発が進められているオープンソースのオペレーティングシステムである。

前身のプロジェクトを含めると1996年から長期間にわたり開発が進められている。2021年4月時点、アルファ版として扱われており、一般的ユーザが利用できる状況ではない。また、動作が確認されているWindowsアプリケーションは一部にとどまっている。

ReactOSは、主にC言語で実装されているが、「ReactOS Explorer」など幾つかの要素はC++によって実装されている。ARMとx64等の複数のアーキテクチャに移植が進んでおり、一部のWindows APIが実装されている。 また、複数のオープンソースソフトウェアプロジェクトと提携し、その成果を多数取り入れており、特に、Windowsとの互換性においてWineプロジェクトの互換レイヤーを取り入れている。

1.1. 名称の語源
----------

「React」という単語は、マイクロソフトの独占状態に対する開発チームの不満を表している。

2. 歴史
-----

2.1. 開発初期
---------

1996年頃、オープンソース開発者のグループがFreeWin95というプロジェクトを開始した。このプロジェクトの目標はWindows 95のクローンとなるOSを実装することであった。しかしこのプロジェクトは成果を出せずに立ち消えとなった。

前述のプロジェクト参加者、ジェイソン・フィルビがプロジェクトの再スタートを呼びかけ、クローンの対象をWindows NTへと変更し、名称をReactOSに改名した。1998年、カーネルと基本的なドライバの開発を開始しReactOSプロジェクトが発足した。

2.2. コードの流用疑惑
-------------

2006年1月17日、ReactOSの開発者向けメーリングリストに一人の開発者から「ReactOSにはWindowsを逆アセンブルしたコードが含まれている」との投稿があった。そのためプロジェクトでは議論を行った結果、公のSVNの公開、フォーラム、メーリングリストアーカイブを一時停止することを決定した。

それに加え、コード全体の検査を行い、クリーンルーム設計のリバースエンジニアリングがされていない可能性のあるコードは発見されなかった。また、全開発者に「クリーンルーム設計のリバースエンジニアリングのみを行う。」よう契約書にサインをさせた。

2006年2月24日、まだ完全に監査は完了していなかったものの、活動再開の発表がなされた。コードの調査を完了させ、ソースコードの影響する部分を書き直すには何年もかかるため、この件によってプロジェクトの進行が遅れるものと考えられていたが、2008年8月末までにコードの監査は完了した。なお、開発と監査は同時に進行していた。このコード監査は、新たにリポジトリを作成し、監査が終了したら、コードを元の場所から新リポジトリへと移動する、という手順で行われた。

3. 機能
-----

GUIが実装され、基本的な操作が可能になっている。主なAPIやABIが用意され、幾つかのアプリケーションの動作が報告されている。

3.1. ユーザーインターフェイス
-----------------

ヴィジュアルスタイルWindows XP等で使用されたヴィジュアルスタイル機能が実装されており、デスクトップ外観の変更が可能である。

3.2. システム
---------

ファイルシステムWindowsで標準対応するファイルシステムでは、FAT32に加えて、試験的ながらNTFSが利用できる。 また、BtrfsやExt4といったWindowsで標準対応していない複数のファイルシステムに対応している。

4. 開発
-----

4.1. 現状と今後
----------

現在、ReactOSの開発者はUSBをサポートする作業も行っている。また、GUIシステムの改良やネットワーク、マルチメディア、プラグアンドプレイハードウェアに対応する作業も行われている。いくつかのアプリケーションは動作が保証されないものの、Javaや、Monoを利用した.NETはサポートされている。マルチユーザー環境が開発されれば、ターミナル・サービスやリモート・デスクトップの開発も行われることとなる。この開発にはXrdp、 VNC、 rdesktopが用いられることとなるだろう。Windows NTサブシステムと同様に、DOS、OS/2、POSIXサブシステムも提供されている。、

開発者は現在Windows NT 5.2をターゲットにそれと互換性を持つカーネルを開発し、より多くのアプリケーションをサポートすることを目標としている。一定の互換性を持つようになれば、NT 6以降の開発を本格的に開始する予定。

また、3Dゲームのサポートの強化および、完全なOpenGLサポートのための作業も行われている。ReactOSプロジェクトのオープンソース版DirectXともいえる、ReactXの開発にも進歩の動きがみられる。

ReactOS プロジェクトは、2ヶ月から6ヶ月の間隔で新しいバージョンをリリースすることを目標としており、バージョン0.5.0からはベータ版となり、実用的なシステムとなる計画である。

4.2. アーキテクチャのサポート
-----------------

現在、ReactOSの開発者はReactOSの多数の移植に取り組んでいる:

x86
Xbox
PowerPC
ARM
AMD64 ReactOSはHyper-V、VMware、VirtualBox、QEMUのような上記のハードウェアをエミュレートもしくは仮想化するソフトウェア上でも動作することが知られている。

ReactOSでも、移植性を見据えた処置が取られている。例えば、0.2.5においてはさまざまなIA-32アーキテクチャやXboxプラットフォームへの対応が追加された。また、2005年の段階で、ReactOSをPowerPCやXenアーキテクチャへと移植する作業も進行中である。

4.3. ソースコード監査
-------------

開発では、法的脅威とリバースエンジニアリングに関する不安に対処するために大規模なソースコード監査が実施されている。

4.4. 提携と再利用
-----------

ReactOSはオープンソースソフトウェアとしてWindows互換のカーネルを構築することを目的としていますが、完成したOSを作るために必要な周辺機能の多くは、より大規模のオープンソースエコシステムで既に利用可能となっています。 それらが利用可能な場合、ReactOSは既存のオープンソースプロジェクトと協力し構築を行っています。 逆に、WineやCaptive NTFS、Longeneなどのプロジェクトは、オープンソースのReactOSのコードベースを再利用している。

4.4.1. ネットワーク関連
---------------

ネットワーク技術でSamba TNGと協力している。Samba TNGはLSASS, SAM, NETLOGON, SPOOLSSといった多数のサービスを実装している。Samba TNGはモジュール化されているため、各サービスは容易にReactOSへと取り込むことができる。

4.4.2. Wineとの協力
---------------

ReactOSはWineプロジェクトと協力して活動しており、Wine上のWin32 API実装を活用して開発を進めている。依存しているレイヤーは、主にWineのDLLに関連しており、それらの多くはReactOSとWineで共通している。双方のプロジェクトは互いに互換性の問題解決に取り組んでいる。

5. 国際化と地域化
----------

ReactOSでは多言語対応の作業も行われているが、後述するように日本語環境は十分とは言えない状況である。

5.1. 多言語対応
----------

ReactOSはバージョン0.2.2より、UTF-16を適切に扱うことができるように改良された。 これにより、文字コードとしてUTF-16を用いたアプリケーションを動作させることが可能となった。 また、ハードコードされたメッセージをリソースファイルへと移す作業も行われ、OSに組み込まれているアプリケーションの多くは国際化されたメッセージを表示することができるようになっている。 0.2.7リリース以後に大半のリソースファイルにおいて翻訳の活動が行われた。

5.2. 日本語表示
----------

ロケールに日本語が指定されている場合、メッセージは日本語で表示される。しかし、新機能の追加などにより、翻訳が行われていない機能は英語で表示される。

バージョン0.3.10からは、「Systema Font」という日本語フォントが追加されたため、インストール時に日本語を選択すれば、日本語が表示できるようになった。 また、バージョン0.3.11からは、「Systema Font」から「Droid Sans Fallback」にフォントが変更され、中国語・韓国語の表示も可能になった。

5.3. 日本語入力
----------

2021年現在、日本語入力に必要な機能など）