多言語ブラウザは,ユーザの端末上で動作するビューアと,WWWサーバとビューアの中間に位置するMHTMLサーバの二つの部分から構成される.
多言語ブラウザの構成を図に示す.
各種サーバとの間にプロクシサーバを介することで,MHTMLサーバからはHTTPプロトコルのみでGopherおよびFTPサーバへのアクセスを可能としている.
MHTMLサーバはC言語を用いて作成されており,Unixワークステーション上で動作する. ビューアはJava言語を用いて作成されており,Javaアプレットに対応するWWWブラウザ上で動作する. MHTMLサーバとビューアとの間の通信にはHTTP[6]プロトコルを用いる.
ビューアはMHTMLサーバとの入出力を行う入出力部,MHTMLテキストの解釈と表示を行うMHTML解釈・表示部,ユーザからのURLや言語の指定,ナビゲーションなどの指示を受け付けるビューア操作部から構成される.
ビューアの構成を図に,ビューアのJavaクラスの構成とそれぞれが受け持つ機能を表
に示す.
入出力部では,ビューア操作部からの文書の取得要求を受け付けてMHTMLサーバに送り,MHTMLサーバから返答されたMHTML文書をMHTML解釈・表示部に受け渡す. MHTMLサーバとの入出力にはHTTPプロトコルを用いる.
MHTML解釈・表示部では,MHTMLサーバから受け取ったMHTMLテキストのフォント部から各文字のフォントグリフを取り出し,テキスト部をパースして文書のレイアウトを決定し,アプレット上に描画する.
また,ユーザのリンク部分のクリックによる文書の取得要求の受け付けもここで行う.
対応するHTMLのタグはHTML2.0[5]のタグの一部であり,見出し,箇条書リスト,リンク,インラインイメージなどに対応している.
ただしインラインイメージについては,レイアウトの処理が複雑になることとイメージの読み込みに時間がかかることを考慮し,画面上には直接表示せずにイメージに対するリンクに置き換えることで処理している.
また,クリッカブルマップやテーブル(表組)には対応していない.
ビューアが対応するタグの一覧を表に示す.
ビューア操作部ではユーザからの入力を受け付け,それぞれに応じた処理を行う.
ユーザからの入力の種別と使用しているJavaの部品クラスを表に示す.
入出力部ではビューアからのHTTPプロトコルによる要求を解釈し,それに応じて他の部分に処理を受け渡す.
MHTMLサーバへの要求種別と要求に必要なパラメータ,およびそれぞれに対する返答内容を表に示す.
この部分は複数のビューアからの同時の要求を処理する必要があるため,要求が来るごとにプロセスの複製(fork)を行い,以降はその複製されたプロセスによって処理を続行する.
アプレット提供部ではユーザのWWWブラウザからの最初の要求となるビューアアプレットのプログラムコードおよびアイコンイメージなどのファイルの提供を行う. プログラムコードやアイコンイメージなどのファイル自体はサーバの二次記憶上に置かれている.
文書取得部ではビューアからURLによって指定された要求文書をHTTPプロトコルにより代理取得し,ISO-2022変換部に受け渡す.
これと同時に,指定された言語情報からMHTML変換に必要なフォントを主記憶上にロードする. これは文書の要求発行から取得終了までにある程度時間がかかることと,日本語や中国語など文字種の多いフォントのロードに処理時間がかかることから,この間に子プロセスを起動して並行して処理することで,全体の処理時間を短縮するためである.
ISO-2022変換部では文書取得部から受け取ったHTML文書要求に含まれる言語情報を元にISO-2022-JP-2[8]に変換し,MHTML変換部に受け渡す. なお,日本語の場合は受け取ったHTML文書の符号化方法(JIS,シフトJIS,EUC)を自動判別し,ISO-2022-JP-2に変換する. その他の言語(中国語,韓国語,タイ語)では符号化方法が単一のため,判別の必要はない. また,元のHTML文書がISO-2022-JP-2で記述されている場合は変換をせずにそのままMHTML変換部に受け渡す.
MHTML変換部ではISO-2022変換部から受け取った文書をMHTMLに変換する. 変換されたMHTML文書は入出力部に受け渡され,HTTPプロトコルによる要求の返答としてビューアに返される.
アクセスログ記録部では各要求ごとに要求元のホスト名,要求されたURL,指定された言語,ブラウザの種類などをサーバの二次記憶上のログファイルに記録する. アクセスログの詳細についてはシステム管理の章で述べる.