Windowsは、Ver.1.03から日本語対応が行われていた。ただし、Windows Ver.1.xは、MS-DOSの上で動作するGUIプログラムでしかなかった。このため、Windowsアプリケーションは、プログラムというよりもWindowsに組み込まれて動く、プラグインあるいはアドオンでしかなかった。そもそも、Windows自体が、16ビットコードで書かれたMS-DOSプログラムでしかなく、Windows用アプリも16ビットコードで書かれていたが、単体では動作せず、Windowsがメモリに読み込んで、必要な処理を行って動作環境を整えた。なお、MS-DOSアプリケーションも画面切り替えでそのまま起動した。このため、当時は、Windowsをオペレーティングシステム(OS)とは呼ばず、オペレーティング・エンバイロンメント(OE)と呼ばれた。
日本語化は、基本的にはWindowsやWindowsアプリのメニューやダイアログボックス、メッセージなどを日本語にするものだった。日本語入力は、MS-DOSのものを利用した。このため、Windowsを起動する前に日本語入力フロントエンドをロードしておく必要があった。この領域はWindowsが管理できないため、そのままWindowsが使えるメモリの減少となった。のちに、日本語入力フロントエンドなどの常駐プログラムをバンクメモリに逃がす方法などが提案された。
その後、Microsoftは、Windows NT 3.1(1993年)の国際化のためにNLS(National Language Support)を開発する。このとき同時にユニコード文字をUTF-16として採用した。NLSはマイクロソフト固有の実装であり、Windowsにしか存在しない。
各国語サポートについて - Win32 apps|Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/win32/intl/about-national-language-support
当初は、文字を16ビットコードとして扱っていたが、定義される文字が増え、16ビットでは表せなくなったときに「サロゲートペア」を導入して一部の文字を32ビットで扱うことになった。
しかし、この方法には無理があり、世間的には、UTF-8を使ったユニコード文字がWindows以外のプラットフォームで優勢になった。Windows自身もWSL(Windows Subsystem for Linux)で、内部にUTF-8環境を抱え、相互の環境でテキストデータのやりとりなどが可能になった。
Windows以外の環境では、国際化に関しては、ICU(International Components for Unicode)を使う。他のプラットフォームとの互換性という点で、NLSとICUには違いがあり、UTF-8の採用とともに、WindowsもICUを採用することにした。
最初の対応は、Windows 10 Ver.1703(Creators Update。2017年)で、Windowsの標準コンポーネントとして組み込まれた。ただし、この時点では、C言語用のAPIのみ公開されていた。2019年のWindows 10 Ver.1903で、最終的なコンポーネントの導入とWindows SDKの対応が行われた。
ICUは、ユニコード文字の処理を前提に、アプリケーションの国際化を助けるAPIを集めたライブラリプログラムである。
ICU - International Components for Unicode
https://icu.unicode.org/home
APIとしては、
- 他の符号化システムからユニコードへの変換
- 照合(文字列比較や並べ替え用)
- 言語(ロケール)に応じた数値、日時、通貨の書式化
- 正規化、大文字、小文字変換などUnicode標準が定める処理
- プロパティ処理(文字の名前からコードポイントを求めるなど)
- 正規表現処理
- 双方向テキストに関する処理
- 単語、文、段落などの境界(行や単語の折り返し処理用)
などが用意され、現在のところ、C/C++言語、Java言語に対応したソースコードがGitHubで公開されている。
Windowsでは、ICUのソースコードからWindows用のDLL(ダイナミック・リンク・ライブラリ)を作ったものが同梱され、SDKにヘッダファイルが用意されている。
ICUが入っても、WindowsのNLSはそのまま残っている。いまだにNLSを使うアプリが流通しているだけでなく、NLSには、ICUにない、IME(Input Method Editor)関連のAPIなどが含まれているからだ。
今回のタイトルネタは、フレッド・ホイル(Sir Fred Hoyle)、ジョン・エリオット(John Elliot)の「アンドロメダのA」(A for Andromeda)である。1961年に英国BBCのテレビドラマとして作成され、1962年に小説化された。通信でコンピュータの設計図とプログラムを送り、動作したプログラムが女性型アンドロイド「アンドロメダ」を作り出す。このアンドロイドがコンピュータのユーザーインターフェースとなる。いまでは、似たような話があふれているが、この作品が、その元祖である。作中では、アンドロメダが、地球を侵略するために送られてきたことが判明する。なんだか、同じユーザー名、パスワードで、手当たり次第アクセスして回るハッキング手法と同じである。悪意のロジックとは、意外に汎宇宙的なものなのかも。
