(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【サルでも分かる】X11入門

スポンサーリンク

f:id:mtiit:20190409210627p:plain

はじめに

かけるじゅういち?

という方でも理解できるようX11に関する知識をざっくり整理しました。

X11とは

まず、意味と読み方ですが

意味

X Window System バージョン11

読み方

通称「エックスイレブン」たまに「エックスじゅういち」
(「X windows System」「X」と誰かが言ってる場合も「X11」を指している場合があります)

...X11を理解するには、X Windows Systemを理解すればよさそう。

X WIndow Systemとは?

UNIX系を操作する場合は一般的にテキストベースのインターフェースで操作を行います。
これをCUIと言います。(Windowsでもコマンドプロンプトといったテキストベースのインターフェースも用意されています)

一方でパソコンであるWindowsやMacでは、グラフィカルなウィンドウをマウスの移動やクリックで操作していきます。
これをGUIと言います。グラフィカルのGです。

そして本題のX Window Systemですが、"X"というウィンドウシステム、という名の通りGUIを提供するためのシステムです。マウス操作の世界です。

UNIX系においても標準的に採用されているので、同システムを利用すればパソコンのようにマウス操作が行えるというわけです。よく聞くデスクトップ環境のGNOMEやKDEも、X Window Systemを基盤として動作しています。

全体構成と構成要素

X Window Systemの全体像は以下の図が分かりやすいです。
f:id:mtiit:20181107213700p:plain
https://www.kenschool.jp/blog/?p=3349 より図を抜粋

上の図ではサーバとクライアントが同一筐体のように見えますが、一般的な構成はサーバが手元のパソコンでクライアントがリモートのサーバです。

全体構成を抑えた上で、図の中にある

  • Xサーバ
  • Xクライアント
  • Xプロトコロル

というX Window Systemを語る上で重要な用語について説明します。

Xサーバ

ユーザが操作したキーボードやマウスの動作をXクライアントへ送信し、またXクライアントから送られてきた画面描画情報を解釈してディスブレイに表示するプログラムです。

主にローカル端末(パソコンなど)で実行されます。

Xクライアント

Xサーバから受信した動作を元にデータを処理し、結果を画面描画情報としてX サーバーへ送信するプログラムです。

こちらは主にリモートにあるサーバ上で実行されます。

Xプロトコル

X Window Systemの基本プロトコルを指し、XサーバとXクライアントのやりとりを規定しているルールです。

具体的には要求/応答/エラー/イベントと4種類のパケットがあり、例を挙げれば、要求はクライアントからサーバに画面の描画を依頼、イベントはサーバからクライアントに操作の発生を知らせるなど。

少し細かい話ですが、同プロトコルはボタンやメニューのなどの詳細までは規定していないため、クライアント(=アプリケーション側)で規定しています。

サーバとクライアント、どっちがどっちかややこしい。

X Windows Systemはクライアント・サーバモデルではありますが、操作しているユーザではなくサーバ上で動作しているアプリ視点のアーキテクチャであるため画面を描画する機能側がサーバという風になっています。一般的に「サーバ=リモート。クライアント=ローカル」なのでこんがらがりやすいですが、「サーバはクライアントからの要求を待つ」というモデルに沿って考えれば納得できます。

X Windows Systemの中でのX11

やっとX11に関して説明しますが技術的な話ではないのでここは話半分で構いません。

歴史的な経緯は1984年にマサチューセッツ工科大学(MIT)の中でX1が開発され、その後も続々と改良を重ねて1987年にX11がリリースされました。XはOSに依存しないウインドウシステムで、多言語化に対応した初めてのソフトウェアという観点で意義があったと各書では触れられています。

そして、UNIXにGUI操作を提供したことから「UNIXの普及に大きく貢献した」とも言われています。
直感的な操作ができるGUIはユーザからしてもありがたいですよね。

ちなみにX11の現在ですが、MITを離れてX.Orgという非営利団体が主に開発・メンテナンスを進めており、アップデートはリリースとして管理されています。2018年現在は「X11R7」(バージョン11、リリース7)でした。

Unix/Linuxの以下のパスに/etc/X11にxorg.confという設定ファイルがありますが、このファイル名も同団体からきています。

使用例

現実的な話もしておくと、X Window Systemが必要になるケースに「ベンダー製品のインストール」などがあります。
例えばデータベースで有名なOracle製品なんかも専用のインストーラあるOracle Universal InstallerはGUIベースなのでX Window Systemが利用できる環境が必要です。(WindowsServerに入れる場合はそもそもGUIなので不要ですが、例えばLinuxに入れる場合は基本はCUIで操作をするので初めてGUIが必要になる)

同じような理由でIBM製品におけるIBM Installation Managerも、CUIで利用も可能ですがX Windows SystemがあればGUIベースで操作ができます。

そしてX Windows Systemを使用するにはサーバ上にX11がインストールされている事 そして パソコン上にXサーバシステムがインストールされている事 が必要です。

パソコンに入れるXサーバシステムはフリーソフトや商用ソフト含めて多々ありますが、WindowsであればXmingなどが有名ですね。

こちらも細かい話なので割愛いただいても構いませんが、具体的な通信経路としてはSSHクライアントのX11転送機能を利用してXアプリケーションを利用します。(Xプロトコル自体は暗号化がなされていないのでSSH接続を介してX Window Systemアプリケーションを利用する)

X WIndow Systemを起動する際は、サーバ側にてDISPLAY変数を設定しておきます。要は手元にあるパソコンのIPアドレスを教えてあげるイメージですね。

$ export DISPLAY=XX.XX.XX.XX:0.0 

この準備が完了すれば、例えばデフォルトでUnix系OSに付属しているのX11プログラムであるxclockコマンドを実行すれば、パソコンに以下のような窓が出現します。

f:id:mtiit:20181107231534j:plain

xclockはアナログ時計のフォーマットで時刻を表示してくれるXアプリなんだね

最後に

必要に迫られないとなかなか触れることのないシステムだとは思いますが、構成や用語などを頭に入れておくと良いかと思います。

以上です。