[Q] QMI って、何?


[Q1] QMI って、big-Quixote は Mosaic のインターフェースを 持っているのですか?


[A1] QMI というのは(名前からするとそう聞こえるのですが)一般的な big-Quixote と 
Mosaic の Interface ではありません。big-Quixote のある一つのデータベースを 
Mosaic からアクセスする一例とお考え下さい。その例をを動かすには, HTTP
server (私たちが使ったのは gn というものでした), Perl (同じく 
perl-4.035) が必要です。Install については root の権限が必要となる場合
があります。QMI の各 script は perl の install 先などに依存しますから, 
多少の修正が必要でしょう。

QMI はそんなに複雑なことをしているわけではありません。big-Quixote の HTTP
Server と通信するようにして, big-Quixote の出力を画像や音声と結び付けてい
るのです。例となっている QMI を参考にして他のデータベースに応用するこ
とは(技術的には)比較的簡単に可能でしょう。具体的に適用するには,
big-Quixote の他に

	HTTP Server
	CGI Interface
	Perl
	HTML

などの知識が必要になりますが, 今時の若い衆にはそういうの得意なのがたく
さんいますよね。:-)

さてさて、前置きはこのぐらいにして、
「big-Quixote の Database を Mosaic を通して使う」方法につい
て今から少し書きますので, 参考にしていただけると嬉しいです. 
では, はじまりはじまり... (^_^)


* big-Quixote の Database を Mosaic を通して使う

QMI の directory に m1.html, m2.html, m3.html と 3つ WWW の page があ
ります. これらは FORM を用いた簡単なものです. 

この音楽 database のサンプルは以下のような構成で実現されています. 

		   TCP/IP         CGI
	[ Mosaic ] <--> [ HTTPD ] <--> [ music.cgi ]
					    ^
					    | TCP/IP
					    v
				       [qmi-server.pl]
					    ^
					    | stdin/stdout
					    v
				       [ Emacs (Qmacs)]
					    ^
					    |  TCP/IP(あるいは stdin/stdout)
					    v  (QIF protocol)
				       [ big-Quixote with music.qxt ]

少し(必要以上に)複雑になっていますが, これには以下の二つの理由があります. 

(1) big-Quixote を access するには QIF protocol で通信する必要があるが, こ
    れの実現は大変なので, 既存の Qmacs を用いる方がいい.

(2) music.cgi が起動されるたびに big-Quixote に access して,
	create database, query, delete database
    とやるより, music.qxt を読み込ませた状態にしておき,
    query だけ出す方が応答性が良い. 

いいわけはおいといて, どのように動くかを見てみましょう. 

=========
(0) qmi-server.pl は起動されている.  qmi-server.pl は Emacs を起動し,
Qmacs を走らせ, big-Quixote に music.qxt を読み込ませる. qmi-server.pl は,
TCP/IP の server として music.cgi からの質問の要求を待っている.

(1) m1.html の page が Mosaic に表示される. FORM なので, user はそこで, 
質問を入力し, [Start] を押すことで検索を要求する. 

(2) POST の request が HTTPD に届く. 

(3) HTTPD は music.cgi という script を起動する. ここで CGI (Common
Gateway Interface)により, music.cgi へは標準入出力で質問の文字列が渡る. 
m1.html で記述されているように, 質問は query という名前で渡る. 

(4) music.cgi は qmi-server.pl と TCP/IP で接続し, 受けとった質問の文
字列を渡す. 

(5) qmi-server.pl は music.cgi から受けとった文字列をそのまま Qmacs に
渡す.

(6) Qmacs は big-Quixote に質問を投げる. big-Quixote は計算し, 結果を出す. 
    Qmacs はその結果を人間が読む形にする. 

(7) qmi-server.pl は Qmacs の出力のうち ** で始まる行以外を, music.cgi 
    に返す.

(8) music.cgi は music-head.html と qmi-server.pl の出力のうち file を
示すものを URL に変換したものを組み合わせて HTML の形式で標準出力に出
力する.

(9) music.cgi の標準出力に出されたものは HTTPD を通じて Mosaic に渡る. 
=========

point は, (0) の database を big-Quixote に読み込ませて server として動い
ているところと, (8) の URL の変換です. それ以外は渡しているだけです. 

今の m1.html は big-Quixote の質問を文字列として直接使うようにしていますが,
FORM の機能をいろいろ使うと, big-Quixote の質問を user に直接見せないよう
にすることも可能です. 
-- 
ここまで. おしまい.