おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

Vine Linux の gnuplot と GUI

Vine Linux の gnuplot と GUI

GUI とは、グラフィカル・ユーザ・インターフェース (Graphical User Interface) のことで、ウィンドウ、メニュー、ボタンといったものを通して、ユーザがプログラムに指示を与え、プログラムから情報を受け取るシステムのことをいいます。gnuplot は、お世辞にも使いやすいインターフェースとはいえません。gnuplot に、GUI を付け加えて、なんとか使いやすくならないかと考えました。

GUI を実現するには

いろいろな方法がありそうです。
1 CGIとして作る。これは結構面白そうだと思います。ブラウザ上に文字入力枠やボタンをつくることにより、GUI を実現します。入力された情報は、サーバに送られ、サーバ上で gnuplot に処理をさせ、出来上がったグラフをブラウザに返し、表示させます。これだと、クライアントは、OSは何でも良く、ブラウザさえあれば OK です。しかも、クライアントには何のインストール、設定は必要ありません。問題は、gnuplot を動かすことのできるサーバを探す、あるいは自作することです。
2 Linux では、GTK2、qt といったツールキットがあります。それを利用すると GUI が比較的難しくならずに実現することができます。また、これらは Windows にも移植されており、簡単ではなさそうですが、Windows でも GUI ができそうです。言語としては、C または、C++ が主な言語になりますが、Python、Perl なども使えます。ただし、言語によって、どの程度使えるかは異なるようです。
今回は、LaTeX のソースを出力したいので、2の方法を検討することにしました。

Perl で、とりあえず作ってみた

Vine Linux で、Perl と GTK2 を使って GUI を作ってみました。まず、必要なパッケージのインストールです。synaptic から、perl-Gtk2-GladeXML、glade3 をインストールします。次はどういう画面を作るかの設計です。まず、紙と鉛筆を使って画面を図にしてみます。試作段階として、次のような画面を作ってみました。
イメージ 1

次にこのプログラムが何をするのかということを考えます。起動されたら、この画像で示されたダイアログを表示します。ユーザが、関数などの情報を入力し、「OK」ボタンを押したら、入力された情報を元に gnuplot のコマンドファイルを出力。その後、gnuplot を起動して、そのコマンドを実行させる。実際に作ってみると、これではまずい部分もあるのですが、試作品ですから、これで作業に入ることにします。

glade3 を使う

glade3は、Gtk2の画面を作るためのツールです。大変便利なツールです。glade3のやっている仕事をプログラミング言語のコードで書くとなると、大変な時間と労力を必要とします。glade3の使い方は、Gladeのウェブサイトチュートリアルを見るとよく分かります。ただし、このチュートリアルは、英語で、C言語用になっていますので、perl の場合とは違う部分もあります。とくに注意する点は、perl で glade3 を使う場合は、プロジェクト・ファイルの形式を、LibGladeにしなければならないということです。デフォルトが GtkBuilder になっていますから、かならず LibGlade に切り替えてください。

libglade を使って、perl で GUI を実現する

libglade を使った perl のプログラミング例が、/usr/share/doc/perl-Gtk2-GladeXML-1.006/examples に沢山あります。そのままでは、実行できないと思いますので、ユーザフォルダにコピーして、端末から実行してみてください。例えば、「hello-world.pl」をコピーしてきたら、端末からは、
$ perl hello-world.pl
と入力すると実行されます。そして、このサンプルファイルが非常に勉強になりますので、良く読むこむことをお勧めします。

Under Construction

ここまで書いてみたものの、あまりに分かりにくい不親切な説明になってしまっていたと思います。が、とりあえずこれでブログにアップロードし、後で全面的に編集しなおしたいと思います。(ゴメンナサイ)