5. クライアントアプリケーション

ここでしばらくの間、クライアントプログラムに注目してみよう。クライアント プログラムをゼロから書きたかったんだって思ってほしい。それも X が用意して いる機能だけを使ってだ。 Xlib はめちゃくちゃスパルタンで使いずらい ライブラリだし、それを使って、ユーザーが使えるように画面にボタンを置いたり、 テキストやあるいは素敵なコントロール(スクロールバーやラジオボックスなんか)を 置いたりするのは、恐ろしくこみいったことだっていうことが、すぐに 分かるだろう。

でも嬉しいことに、他の誰かがこれらのコントロールをわざわざプログラムして くれて、その結果を使えるような形にして僕達に提供してくれたんだ。ライブラリ って形でね。これらのコントロールは普通「ウィジェット」って呼ばれてる。そして もちろん、このライブラリは「ウィジェットライブラリ」さ。そこでパラメータを いくつか付けてこのライブラリから関数を呼び出して、ボタンを画面上に出させる わけだ。ウィジェットの例としては、メニューやボタン、ラジオボタン、スクロール バー、それにキャンバスなんかがある。

「キャンバス」っていうのは面白い類のウィジェットだ。というのは、それが 基本的にクライアントの中のサブエリアになっていて、そこに何かを描ける からなんだ。当然だけど、 Xlib を直接使うことはないだろう。なぜって、 もしそうすると、ウィジェットライブラリの邪魔をすることになるだろうからね。 だからキャンバスウィジェットの中に任意のグラフィックスを描く方法は ライブラリ自身が用意しているんだ。

このウィジェットライブラリは、ユーザーの動作を入力として解釈するのは もちろんだけど、実際に画面上に要素を描画するものだから、使うライブラリには 主に各クライアントの様々な面や動作に責任があるんだ。開発者の立場から見れば、 ウィジェットライブラリにはある API (関数の集合)もあるから、使いたい ウィジェットライブラリがどれなのかは、その API で決まるのかも知れない。