
目次
はじめに ▼ SGMLパーザー ▼ Sgmls ▼ MacSgmlsの開発動機 ▼ MacSgmlsの操作 ▼ MacSgmlsの配布 ▼ 問題への対処 ▼ MacSgmls ver.1.1.4 バグ情報 ▼
現在,SGMLの導入が各分野で始まっていますが,その検討に役立つと思われるSGMLパーザー(SGML構文解析系)のMacSgmlsを紹介します。今までのほとんどのSGMLパーザーはUNIXやDOSで動くものでありましたが,このMacSgmlsは私(岸 和孝)が開発したフリーウェアで,Macintoshで動くSGMLパーザーとしては初めてのものです。
SGMLパーザーとは,SGMLで書かれた文書デ一タについて,その文書型定義(DTD)が文法的に正しいかどうか,またDTDに基づく文書実現値のタグ付けが正しいかどうかを調べたり,さらに後処理が容易になるように文書実現値を要素構造情報集合(ESIS:Element Structure Information Setの略)の形式へ変換する応用プログラムで,構文解析系とも呼ばれます。このようなSGMLパーザーは,SGML文書処理のワークフローにおいて常時用いられる道具として重要な位置付けにあります。[図1を参照]
|
▲図1 SGML文書処理のワークフロー
商用のSGMLパーザーあるいはSGMLパーザーを組み込んだエディターが販売されていますが,やや高価であり,事前の研究用として,とりわけ個人が使うには難があります。そうしたことからフリーウェアのSGMLパーザーが注目されるわけです。
フリーウェアのSGMLパーザーとしてはJames Clark氏が開発したSgmlsが有名です。現在,UNIX(Linux,Solaris,SunOS,DEC/OSF,MachTen),Win32,DOS,OS/2に移植されたものが配布されています。[
ftp://ftp.jclark.com/] これらはいずれもUNIX風のコマンド操作で動かすものです。
私は社団法人日本印刷技術協会(JAGAT)で1996年以来「五日間でわかるSGMLとPerl」のセミナーを担当しています。その実習では当初DOS版のSgmlsをWindows95のDOS互換ボックスで使っていましたが,その操作はひいき目にも容易ではありませんでした。そこでSgmlsのGUI(グラフィカル・ユーザー・インターフェース)を設計し,まずMacintoshへ移植した次第です。
ところで,SgmlsのMachTen版はMacintosh版とは呼べなくはありませんが,それらしいGUI操作はできません。また,SgmlsのWin32版でもWindows風のGUI操作はできません。また,MacintoshでSoftWindowsを介してWin32版を使うにしても同じことです。SgmlsのOS/2版もUNIXエミュレーターのemxによるもので,やはりGUI操作はできません。
このようにフリーウェアのSgmlsがUNIXの枠を出ないことや,DTPでは極めて優位にあるMacintosh環境にSGML応用プログラムがないことには,UNIXの方がテキスト処理の歴史が長いという理由以外の,私の知らない事情があるのかもしれません。
そうした事情はともかく,SgmlsのMacintosh版は,Sgmlsのソースコード(sgmls-1.1-J0.2)に基づいて開発しました。最初のARCSGMLはCharles F. Goldfarb氏によって開発され,その後,そのソースコードを元に,SgmlsがJames Clark氏によって翻案されました。このSgmlsが前述のように様々なプラットフォームへ移植されています。DOS版のSgmls-Jは,そのSgmlsを土屋哲氏がシフトJISコードを扱えるように翻案したものです。
SgmlsのソースコードはC言語で記述され,全体で約8万行あり,TeXアプリケーションのソースコードの4倍ほどになる労作です。この場を借りて先輩たちへ謝意を表します。
私はMacintosh版のSgmlsをMacSgmls(バージョンl.1)と名付けました。MacSgmlsの構造はちょうどモナカのようなもので,おいしいアンコに相当するSgmlsをMacintoshのGUIという引き立て役のカワで包んでいると思って下さい。従って,私の開発部分はGUI関連のモジュールに過ぎず,MacSgmlsの構文解析の機能はSgmlsとほとんど同じです。
MacSgmlsはメニューやメッセ一ジをもちろん日本語で表示しますが,それらを英語で表示するようにも簡単に切り換えられます。その機能はソフトウェア輸入偏重の昨今,MacSgmlsが欧米でも使えるようにお返しのつもりで組み込んだものです。
SGMLパーザーの操作で最も難しいところは条件設定です。Sgmlsでは環境変数を設定したり,非常に長いコマンド行を打たなければなりません。MacSgmlsでは条件設定を分かりやすいダイアログにしました。[図2を参照]
|
▲図2 MacSgmlsの条件設定
MacSgmlsでは,指定した文書フォルダーの中の幾つかの関連する文書データ(文書型定義,データ実体,一般文実体など)をファイル名テンプレートによって自動的に識別するように設定できます。とりわけ,公的公開識別子による文書実体の識別は複難であり,運用を分かりやすくするための工夫をしました。[図3を参照]
|
▲図3 MacSgmlsのファイル名テンプレート
MacSgmlsでは,シフトJISコードか拡張UNIXコードで表わされた文書データを扱うことができます。
一般に,Macintoshはインタラクティブ(対話型)処理が中心で,バッチ(一括型)処理が弱いとされていますが,MacSgmlsでは条件設定と構文解析処理を分けており,ドラッグ・アンド・ドロップによってバッチ処理もできます。つまり,MacSgmlsのアイコンに対して幾つかの文書データをまとめて移動すれば,次々に構文解析し,その結果はファイルへ次々に出力されます。出力されるESIS形式のデータは要素構造を扱うSGML準拠応用プログラム(例えば,SgmlForm)で処理できます。
MacSgmlsは,ESIS形式のデータ以外に,エラーリストや容量状況リストを出力することもありますので,それらにそれぞれ,例えば,‘.esi’,‘.err’,‘.cap’といった「拡張子」を付けて区別しています。
MacSgmlsの説明書はオンラインマニュアルにしてあり,操作中に随時参照できます。また,その説明書の内容はSGML(HTML)形式で保存出力されますので,SGMLの演習に応用できるでしょう。
MacSgmlsは,文書データを入力・編集したり,さらにタグを色分けで強調できる簡単なエディターを備えています。これは元のSgmlsにはない機能です。
ここで紹介したMacSgmlsの配布は,パソコン通信とインターネットで行います。現在,パソコン通信ではニフティサーブのFPRINTのデータライブラリ(No.6)で配布しています。また,インターネットでは“
http://hyperarchive.lcs.mit.edu/HyperArchive/Archive/text/sgml-tool.hqx”で配布しています。今後,最新版はそれらのサイトから入手して下さい。
MacSgmlsにはまだ幾つかの問題(欠陥や不具合点)が潜んでいると思われます。Sgmlsそのものにも幾つかの問題もあるようです。私の環境や能力だけでは十分に検査できませんので,是非多くの方々からのご指摘やご指導をお願いします。

(1997年9月記)