2012-04-04

GNU/Linuxの方がWindowsより日本語サポートが優れている

今や、GNU/Linuxの方が不自由なWindowsより日本語サポートが優れている。これは純然たる事実である。

私は、UIが日本語化の質を論じているのではない。私はUIの言語を英語にしているので、UIの日本語の質についてはわからない。ただ、2012年となった今では、GNU/Linux/Xの環境の方が、圧倒的に日本語を扱う環境が優れていると考えているのだ。

まず、現行のまともなディストリは、文字エンコードをデフォルトでUTF-8にしている。このため、不自由なWindowsにおける、カオスな大量のマルチバイト文字コード混在環境の問題は存在しない。確かに、不自由なWindowsのネイティブの文字エンコードはUTF-16だが、下位互換性を保証するために、既存のマルチバイト文字をすべて継続してサポートしているために、未だにカオスな状況になっている。多くのプログラムは、嘆かわしいことに、いまだにANSI版のWin32 APIを使用しているのだ。

もちろん、我々は未だにテキストファイルや、zipなどの文字コードが規定されていないアーカイブ形式のファイルで、Shift JISやEUC-JPやISO-2022-JPやらJISやらの、既存の文字コードを扱わなければならない。しかし、そういう問題は、OS側でなくても対処できるので問題ない。実際、Ubuntuのunzipは文字コードを指定するオプションが追加されている。素晴らしい。

そして、ターミナルだ。UbuntuのデフォルトのGNOMEターミナルエミュレーターは、UTF-8ロケールなので、日本語も描画できる。iBusを使えば、なんの煩わしい設定やへんてこなプログラムの起動なしに日本語入力もできる。vimでさえ日本語入力を受け取る。

不自由なWindowsはどうか。いまだに不自由なWindowsのコンソールはカオスなマルチバイト混在環境を引き継いでいる。UTF-8ロケールにはできない。

もちろん、不自由なWindowsにも利点はある。既存のプログラムとの互換性が完璧なのだ。こればかりはどんなにMicrosoftを嫌っている人間であろうとも、認めざるを得ない。Microsoftはこの殺伐としたソフトウェア業界で、最も下位互換性を最優先で守る企業である。Microsoftが互換性と言ったとき、それはバイナリ互換性を意味する。不自由なWindowsのバージョンがひとつ上がったぐらいで動かなくなるソフトウェアは、相当馬鹿なことをしているはずである。ただし、不自由なWindows下においては、自由なソフトウェアの文化がないので、なかなかユーザーの目にはわからないのだが。

GNU/Linuxにおいては、バイナリ互換性などほとんど守られていない。もともと、環境ごとにディレクトリ構造が異なっているのだから、バイナリ互換性など考えるだけ無駄なのだ。自由なソフトウェア文化の元では、バイナリ互換性など些細な問題なのだ。ただ、これはユーザーにとってもあまり好ましい状況ではない。たとえば、ドライバーはカーネルのヘッダーに依存するので、安全を期すためには、常にカーネルと同じヘッダー、同じコンパイラを使ってコンパイルしなければならない。Linuxでは、多くのドライバーはカーネルごとコンパイルして内蔵する形になっているので、これでもいいのだが、やはりドライバーを外部から読み込みたい需要も常にある。そして、カーネルを歳コンパイルしたときに、外部モジュールのドライバーの再コンパイルを忘れて問題を引き起こす。

こと、GNU/Linuxのドライバーのバイナリ互換性に関しては、FreeBSDの方がよっぽどましなのである。FreeBSDはわざわざLinux互換レイヤーを設けてまで、GNU/Linux用のバイナリのほとんどをそのまま実行できるようにしている。これには、ドライバも含まれる。

話がそれた。不自由なWindowsの互換性における取り組みは、たしかに認めざるを得ない。不自由なWindows環境では、もはや、ソースコードの失われたプロプライエタリなバイナリが山ほどある。Microsoftとしては、この過去の資産をぶち壊すわけには行かないのだ。

ただし、この互換性は、プログラマーを怠惰にさせる。問題を本当に解決する方法、Unicodeへの移行を遅らせる。いまだに、多くの不自由なWindows用の不自由なプログラムは、Unicodeを使っていない。長期的に考えて、ソフトウェアは自由であるべきなのだ。自由なソフトウェアであれば、ソースコードが公開されているので、そのソフトウェアに価値がある限り、ソースコードは誰かが保存している。そのため、バイナリ互換性については、それほど真剣に考えなくても良いのだ。また、互換性が失われたとしても、ソースコードが公開されていれば、修正も可能だ。

不自由なWindowsは、マルチバイトサポートとANSI版Win32 APIのサポートを打ち切る勇気を持つべきである。たしかに、移行は痛みを伴うが、長期的な利点が大きい。もちろん、これは理想論であり、実際には実行できない。何故ならば、不自由なWindowsで動くソフトウェアは、ほとんどすべて不自由なソフトウェアだからだ。

GNU/Linuxは、UTF-8への痛みを伴う変更をやり遂げた。これは、ソフトウェアが自由だからである。誰でも、自由にソフトウェアを検証して改変し(Freedom 1)、改変版を再配布できる(Freedom 3)からである。そして、その恩恵は皆が享受できる。2012年の今現在、GNU/Linuxは不自由なWindowsに大勝利している。

OS外の状況も、近年大幅に改善された。オープンソースライセンスのIPAフォントのおかげで、我々は高品質なフォントを手に入れた。GTK+環境におけるフォント描画の質は、不自由なWindowsのClearTypeを大幅に上回っている。オープンソースライセンスのMozcのおかげで、日本語入力も改善された。自由ではないのが残念だが、オープンソースライセンスであるだけ、プロプライエタリよりはましだ。

ああ、哀れ不自由なWindowsよ。汝、いつまで下位互換性という大義のために、カオスな状況を容認するのだ。未来はないぞ。

No comments: