X Window Systemとは
X Window System(以下、X)は、ビットマップディスプレイ上にウィンドウシステムを提供する表示プロトコルです。一般的に「X11」や「X」とも呼ばれます。
Unix系
オペレーティングシステム(OS)をはじめ、多くのプラットフォームでグラフィカルユーザーインターフェース(GUI)を構築するために利用されています。Xは、ユーザーインターフェースの見た目や操作方法を規定せず、多様なGUI環境を可能にしている点が特徴です。
歴史
Xは
1984年に
マサチューセッツ工科大学(MIT)で開発が始まりました。現在のバージョンであるX11は
1987年9月に登場し、その後、
X.Org Foundationが開発を主導しています。
リファレンス実装であるX.Org Serverは、MIT
ライセンスおよび類似の
ライセンスで提供されており、自由
ソフトウェアとして利用できます。
概要
Xは、GUI環境を構築するための基本的なフレームワークを提供します。ウィンドウの描画、移動、マウスやキーボードによる操作などを可能にします。X自体はユーザーインターフェースを規定せず、具体的な外観や操作方法は個々のクライアントプログラムやウィンドウマネージャに委ねられています。
アーキテクチャ
Xはクライアント
サーバモデルに基づいており、X
サーバがクライアントプログラムと通信します。X
サーバは、グラフィカルな出力要求を受け付け、ユーザーからの入力をクライアントに送信します。Xプロトコルは
ハードウェアに依存しないため、様々な環境で動作可能です。
このクライアント
サーバモデルは、新規ユーザーを混乱させることがあります。一般的に、
サーバはサービスを提供する側、クライアントはサービスを利用する側と考えられますが、Xではアプリケーションがサービスを利用する側(クライアント)、ディスプレイや
入出力サービスを提供する側が
サーバとなります。
Xの
通信プロトコルはネットワーク透過性を持つため、クライアントと
サーバは同一マシン上でも、別々のマシン上でも動作できます。また、異なるアーキテクチャやOS間でも通信が可能です。Xクライアントは、X
サーバを内包し、複数のクライアントに対して
サーバとして動作することもできます。これを「Xネスティング」と呼びます。
リモートのクライアントプログラムをローカルな
サーバで表示するには、
端末エミュレータでリモートのアプリケーションを起動し、出力をローカルに指定します。これにより、リモートアプリケーションはローカルマシンのディスプレイと
入力機器を使って動作します。この仕組みは、リモートマシンの管理や、計算量の多いシミュレーション結果の表示など、様々な用途に利用できます。
設計思想
Xの設計は、以下の原則に基づいています。
実際に必要になるまで新機能を追加しない
機構が何でないのかを定義することは、何であるのかを定義するのと同じくらい重要
具体的な例を挙げて一般化する方が、抽象的な一般化よりも良い
問題が完全に理解できない場合は、解決策を提供しない
10%の労力で90%の効果が得られる場合は、その方法を使う
複雑さを可能な限り分離する
方針よりも機構を提供する
これらの原則は、X11の設計にも受け継がれました。特に、ユーザーインターフェースの方針はクライアント側に任せるという考え方が重要です。
ユーザーインターフェース
Xは、意図的にユーザーインターフェースの仕様を含めていません。ボタン、メニュー、ウィンドウのタイトルバーなどは、ウィンドウマネージャ、GUIウィジェット・ツールキット、デスクトップ環境などによって提供されます。このため、X環境の見た目は多種多様です。
ウィンドウマネージャは、ウィンドウの位置や外観を制御します。デスクトップ環境は、ウィンドウマネージャ、各種アプリケーションを統合し、一貫したユーザーインターフェースを提供します。GNOME、KDE、Xfceなどが主なデスクトップ環境です。
Xサーバは、キーボードとマウスの操作を管理します。一部のショートカットキーはXサーバと関連付けられており、例えばControl-Alt-BackspaceでXセッションを終了させることがあります。
実装
X.Org Serverは、X Window Systemのリファレンス実装です。他にも、自由ソフトウェアやプロプライエタリソフトウェアによる実装が存在します。商用UNIXベンダーは、リファレンス実装をベースに独自の拡張を加えることが多いです。
2004年までは、XFree86がフリーなUnix系システムでのX実装の事実上の標準でした。しかし、XFree86のライセンス変更をきっかけに、X.Org Serverが主流となりました。
Xサーバは、WindowsやmacOSなどの他のウィンドウシステム上でも動作します。これらの環境では、XのウィンドウをOSのウィンドウに統合したり、Xのウィンドウを独立したウィンドウとして表示したりするなど、様々な実装方法があります。
OpenVMSでは、XとCDEが標準のデスクトップ環境として利用されています。かつては、OS-9にも純正のXサーバが存在しました。
macOSでは、X.Org ServerをベースにしたXQuartzが利用可能です。以前は標準で搭載されていましたが、現在は別途インストールする必要があります。
Windowsでは、Cygwinを併用することでX.Org Serverが動作します。他にも、様々なXサーバの実装が存在します。
スマートフォンやタブレットなどの組み込みシステムでも、X Window Systemが利用されています。
X端末は、Xサーバを実行するシンクライアントです。かつては、UNIXワークステーションが高価だった時代に、複数のユーザーがグラフィカルな環境を利用するための安価な手段として利用されていました。
Xの限界と非難
Xには、以下のような問題点が指摘されています。
ユーザーインターフェースの仕様が含まれていないため、アプリケーション間の連携が難しい
サウンドを扱わないため、音声処理はOSや他のソフトウェアに依存する
クライアントと
サーバ間の通信が暗号化されていないため、セキュリティ上の問題がある
クライアントとサーバの分離によるオーバーヘッドが存在する
ディスプレイドライバのクラッシュ時に、表示内容が失われることがある
Xと競合するシステム
Xの代替として、様々なシステムが提案されています。NeWS、Display PostScript、GMWなどが歴史的な例です。最近では、MirやWaylandといったシステムがXの代替として注目されています。
歴史の詳細
Xは、W Window Systemの後継として開発されました。Xの初期のバージョンは、MITのプロジェクトで開発されました。その後、DECが開発に協力し、Xは急速に進化しました。X11は、その設計プロセスがオープンな議論によって進められたことから、最初の大規模自由
ソフトウェアプロジェクトと言われることがあります。
Xの管理運営は、MIT X Consortium、X Consortium, Inc.を経て、
The Open Groupに移管されました。その後、XFree86の分裂をきっかけに、
X.Org Foundationが設立されました。
X.Org Foundationは、
ソフトウェア開発者主導のコミュニティベースでXの開発を続けています。
Xの名称について
X Window Systemは、しばしば「X Windows」と誤って表記されますが、正しい名称は「X Window System」または「X」です。
参考文献
参考文献に関する詳細な情報については、元のテキストをご参照ください。
外部リンク
外部リンクについては、元のテキストをご参照ください。