<HTML>
<HEAD>
<TITLE>爆笑! SGML奮闘記-vol.1-</TITLE>
</HEAD>
<BODY BGCOLOR="#FCFCFC">
<!--BODY BACKGROUND="/~miuraj/images/sgml1.gif"-->
<H1>爆笑! SGML奮闘記-vol.1-</H1>
<HR>
SGMLのこと、何にもしらない私の、SGML遍歴です。どうぞ笑ってやって下さい。
<BR>
だいたい1997年1月くらいまでのことです。
<HR>
SGMLの存在は1989年には知っていた。
単に存在を知っていただけで、それがなんなのかは知らなかった。
新聞屋さん達(作る方ね)が、SGMLがどぉこぉ言ってたような、、、
その程度の感心(?)しかなかったわけで、、、
<P>
で、その頃、本屋で「SGML入門」という本をみかけて「買おう」と思ったがなぜかやめた。
<BR>
#今から思うと不思議なもんだが、この記憶は結構鮮明で、その数年後、別にSGMLに
<BR>
#興味はないにも関わらす、買わなかったことを後悔した事もあった。
<P>
<A HREF="memo109.html">「SGML入門」ついて</A>
<P>
で、この間、8年の空白、、、
<P>
1996年6月、ちょっと試しにSGMLを使ってみることになった。
<P>
とはいうものの、SGMLについては何にもしらない。取敢ず、「実践SGML」を
買って読んでみた。全然、分からない。まぁ、なんとなくは分かった気にはなったけど。
<P>
その後、"Special Edition Using SGML"を買った。SGMLに関する各種情報源が
載っていたので買った。読むのに一苦労。結局、約1/3程を斜読みで終わり。
ただ、それに、PanoramaFree なるWWWブラウザー用Helper(っていうのかな)ソフトが
紹介されてる。早速、そいつをSoftQuad.から取ってくる。(FTPしたら約1時間かかった)
使ってみると、結構おもしろい。
<P>
これで、SGML文書を表示することは一応できる様になった。今度はSGML文書を作る番。
<P>
SGMLを使う場合、タグのチェックだなんだで検定用パーサーが無いと話にならない
らしい。
<BR>
で、<STRONG>SP</STRONG>っていうPublic Domain Softwareがあるらしい。
ソースコードのコンパイルにはGCCがいるらしいが、まだ、GCCはインストールして
いない。探しまわったら、SP/NSGMLS 1.0 for Solaris 2.3(binary)があったので、
getして使ってみることにした。
<P>
使ってみんべぇと、最初に作ったDTDは「実践SGML」 の P.38 に載っていたDTDなんだが、
「そのまんまじゃぁ、仮にも情報科学センターに勤務してんだから格好悪い」ってんで、
最後に、
<PRE>
&lt;!ENTITY SGML "Standard Generalized Markup Language" &gt;
</PRE>
の1行を追加した(<A HREF="memo-1-dtd.txt">全文</A>)。作った文書もめちゃくちゃ
簡単で、
<PRE>
	&amp;SGML;
</PRE>
を加えた程度のもの(<A HREF="memo-1.txt">全文</A>)。やっぱり芸がない。
<P>
ところが、ここから先が大変だった。SP の使い方がよくわからない。第一、
マニュアル読んでも知らない言葉ばっかり。だいたい、
<P>
<CENTER>
catalogって何のカタログ?  entity managerって誰、何のこと?、、、
</CENTER>
<P>
<BR>
ってな状態ですから。まぁ、本をきちんと読んでいれば、entity manager くらいは
見当ついた筈なんですけど、なぜか「entity=実体」って感じがじなかったもんで、、、
<P>
<A HREF="../sgml_guide/sgml_entity_manager.html">路地裏</A>(マネージャー?)
<BR>
<A HREF="../sgml_guide/sgml_open_catalog.html">路地裏</A>(何のカタログ?)
<P>
でも、 取敢ずサンプルとして付いている文書やらDTDやらで、あれこれオプションを
組み合わせてやっているうちに、使い方が分かってきた。じゃ、今度は自分が入力
したやつで、、、
<BR>
と、今度は何なんと
<P>
<CENTER>
DTDにエラーがある! DTDにエラーがある! DTDにエラーがある!・・・
</CENTER>
</P>
のオンパレードで大ショック。何が悪いんだかまるでわかんない。
結局、実際に上記SGML文書が、SPからのお許しをもらえたのは、作成の3日位後だった。
<P>
<A HREF="./memo108.html">なんでお許しがでないの?</A>
<P>
次に、「日本語が使えなきゃしょうがあんめぇ」と日本語の混ざったSGML文書を作った。
(さっきのものとほとんど同じなので、変更箇所だけ)
<XMP>
<From>三浦　淳</From>
<P>&SGML-JP;は日本語に訳すと「標準一般化マークアップ言語」となります。</P>
</XMP>
ついでに、DTDは、前述のDTDを最後の一行だけ変更した。
<XMP>
<!ENTITY SGML-JP "標準一般化マークアップ言語" >
</XMP>
こいつは楽勝で、SPによりチェックできた。
<BR>
このときのSGML宣言は、今から思うと随分乱暴なもので、「EUCコードで書いて
あんだから、まぁ、こんれでも大丈夫だろう」と思って使った。
以下が、そのSGML宣言の、「大丈夫」の根拠になった部分。
<PRE>
BASESET   "ISO Registration Number 100//CHARSET ECMA-94
           Right Part of Latin Alphabet Nr. 1//ESC 2/13 4/1"
DESCSET      128         32   UNUSED
             160         95   32     <- ここ
             255          1   UNUSED
</PRE>
<A HREF="./memo112.html">なんで大丈夫?</A>
<P>
調子にのって、「(タグ)要素の名前にも日本語を使おう」と考え、「SGMLのかきかた」
に載っていたSGML宣言を使った。入力するのがえらい面倒だったが「しかたあんめぇ」
と我慢して入力した(おいおい、プログラム書けよってか、、、)。
<BR>
以下はその一部。
<XMP>
NAMING
          LCNMSTRT
            "&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;
		(略)
             &#248;&#249;&#250;&#251;&#252;&#253;&#254;"
          UCNMSTRT
            "&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;
		(略)
             &#248;&#249;&#250;&#251;&#252;&#253;&#254;"
</XMP>
ところが、これがまた難物。散々入力させといて、
<P>
<CENTER>
240文字越えてんなぁ、ちと長いんじゃねぇかい。
</CENTER>
</P>
とSPにおこられる。数えてみたら、確かに240より長い(762文字)。それが2回も。
<BR>
でも理由が全然わかんない。調べてみると、システム宣言というものがSPのマニュアル
にある。なんでも、システム宣言でシステム固有(例えばパーサー)のパラメーター定義
をすることになってるんだそうだ。
でも、それ見てみると、どうも24000文字まではいけそうだ。うむぅ、、、
<P>
で、このせいなのかどうなのかは深くは追及しないことにして、「このSGML宣言は、
今は使えねぇ」と諦めた。
<P>
<A HREF="memo107.html">この後日談</A>
<P>
結局、SPのパッケージに含まれる、japan・・・ というSGML宣言で、EUCコードが
OKなので、じゃぁ、というわけで、
<PRE>
	EUCコードの場合は、それをSGML宣言として使おう。
	タグに日本語を使うのは当面あきらめよう!
</PRE>
という結論に落ち着いた。これで、
<OL>
<LI>文字コードは、いわゆるASCIIコードとEUCコードを使う。
<LI>要素名には日本語は使わない。
</OL>
という、当面の基本的な文字の使い方は決まった。
<P>
SGMLで議事録作ってみんべぇ、ってなわけで、議事録用DTDを作り始める。
<BR>
んで作った<A HREF="./gijiroku.dtd">議事録用DTD</A>は、英語(それも、なんか
間違ってる)やローマ字表記の日本語や、他人が見たらわけわからん略語ばっかで、
われながら「なんだかなぁ〜」状態。
<BR>
今でこそ、こんな形になっているが、まず、「議事録の要素には何が必要か」
に結構手間をとられた。
<BR>
単に要録のようなものなら、会議名とか出席者とか。あと、配付資料、議題、報告
なんかがあれば、残りの部分は箇条書きでいいだろうと最初は思った。
<BR>
が、ある時、突然、「採決があったり、動議がだされたり、あるいは、
発言をそのまま記載した方がいい場合もあるかもしれない」なんて思っちゃった
もんだから、もう継ぎ剥ぎだらけのグチャグチャの粘土細工状態。
いろいろいじって、今のDTDの原形ができあがった。
<P>
<A HREF="./memo101.html">混在内容モデルについて</A>
<P>
それで、SGML文書(議事録)を作り始める。実際には、議事録は別の人が
テキストファイルを作成し、それをSGML文書に変換する作業を行なった。
特に問題はなく、順調に作業は進んでいった。
<P>
と、ある日、いきなり
<P>
<CENTER>
おぅ、XX行目の??文字目はSGML文字じゃねぇ! 出直してこい!
</CENTER>
</P>
と怒られたり、いろいろ。SGML宣言までは公開してないからしょうがあんめぇと、
その度、元の議事録見ながらSGML化した。
<P>
<A HREF="memo105.html">文字コードについて</A>
<P>
それに追い撃ちを掛けるかのように、ある日、突然、「図が議事録に入ってきたり、
表が入ってきたり」で、で、で、で、四苦八苦。「表入れるなら、一言いってくれよ」状態。
<P>
<A HREF="memo106.html">表(table)のDTD</A>
<P>
いろんな理由があって、あんなDTDになってしまったが、結構後悔している箇所が多い
のも事実。今だに議事録DTD作成作業は終わらない。
<BR>
#一人でやってるからって話もあるか、、、
<P>
<A HREF="./memo102.html">DTDの変更</A>
<P>
今度は、
<UL>
<LI>SGML文書を電子メイルでやり取りするんだったら、EUCじゃなくってJISコード
の方がいいよな。JISとEUCってほとんど同じだし簡単だろう。
</UL>
と、所謂JISコード(さっきまではEUCコード)で、文書作って見ようと思いたった。
<BR>
#区切り子の変更は無しね。
<P>
JISコードを使うためのSGML宣言が、「はじめてのSGML Appendix B」に載っていて、
以前それを入力してあったので、それをもとにして DESCSET を書き換えようと思った。
<BR>
でも面倒なのでやめた。
<BR>
#結構長いんですよ、これって。「よく入力したなぁ」ってわれながら感心してしまう。
<BR>
<!-- #「SGML宣言の例」って、--><!--A HREF="../sgml_guide/jisx4151_sd.html"--><!--こんなん--><!--/A--><!--です。-->
<P>
で、エスケープシーケンスとか文字集合のことなんか詳しくは知らないから、
前述のSGML宣言を単純に7単位系のJISコード用宣言に直したつもりになって、
「うーん、できん」とうなった。
CHARSET の BASESET と DESCSET 、エスケープシーケンスの記述の意味なんか
全然考えてなかったわけで、、、
<BR>
お恥ずかしい限りだが、そのときのSGML宣言(一部)は
<PRE>
CHARSET
BASESET "ISO 646-1983//CHARSET
		International Reference Virsion(IRV)//ESC 2/5 4/0"
DESCSET 0   9 UNUSED
        (略)
        32 95 32
       127  1 UNUSED
BASESET "ISO Registration Number 87//CHARSET
	JIS X 0208//ESC 2/6 4/0 ESC 2/4 2/9 4/2"
DESCSET 0  32 UNUSED                          
       32  95 32
       127  1 UNUSED
</PRE>
だった。
<P>
<A HREF="memo114.html">勝手な思い込み</A>
<P>
当然できない。で、ここまで来て、初めて「はじめてのSGML Appendix B」に
書いてある、
<P>
<CENTER>
JIS X 0208 の文字をG1集合に指示し、列 10-15に呼び出す。
</CENTER>
</P>
って何じゃい?と思った。で、エスケープシーケンスとか調べ始めた。そしたら、
<UL>
<LI>電子メイルで日本語を交換する際のエスケープシーケンス(ISO-2022-JP-2)
</UL>
と、
<UL>
<LI>SGMLのJIS規格に載っているエスケープシーケンス
</UL>
は全然違う。JISコードの文字って、必ず各バイトの先頭は0だと思ってたら
そうじゃなかった(おーまいごっど!)。「"何でG1へ指示、列10-15へ呼出し"なのか、
メモ程度にでも書いておいてくれればいいのに」とも思ったりもするわけで、、、
<BR>
#常識だったりして、、、
<P>
<A HREF="memo111.html">どう違う? エスケープシーケンス</A>
<BR>
<A HREF="memo113.html">ついでに</A>(RFC 1554(ISO-2022-JP-2)もご賞味ください)
<P>
いろいろSGML宣言作ったりしたけど、全然だめ。
<P>
で、とにかく至急やらなきゃいけない事があったので、現実逃避することにして、
「とにかく、いろいろやってみなきゃなんねぇんだから、ぼちぼち、考えよ。」
と、SGML文書をHTMLへ変換したり、検索したりするプログラム(いや、なに、なんだ、タグ以外の部分だけ、grepするだけ)をどうにか
動くようにした。
<P>
で、議事録をSGMLにしたり、DTDを変更したりしながら、いろんなSGML関連ツールを
集めたりしたが、結局ほとんど使っていない。ときどき、7bit JISコードを使う方法
を考えてたけど結局わからない。というか、
<P>
<CENTER>
同一SGML文書内で、任意の文字集合を使い分ける方法
</CENTER>
</P>
がわかんない。お間抜けとかなんとかいうより「はまった」って感じ。あと、未だに
<P>
<CENTER>
要素名に日本語を使う方法
</CENTER>
</P>
も全然わかんない。
<P>
そうこうするうちに、1996年12月。
<BR>
やっと「JISハンドブック」で「JIS X 4151 文書記述言語SGML」読んでみました。
昼休みに。
<P>
やっぱり全然わかんない。ただ、多符号だか多言語だかの言葉があって「参考」だか
に書いてあるらしい。でも「JISハンドブック」には「参考」ってぇのは載ってない。
<P>
ここまできちゃったらしょうがない! ってんで、赤坂の日本規格協会にいって、
SGMLの規格票とかエスケープシーケンスに関する規格票を買っちゃいました。
<P>
<A HREF="./memo103.html">所は赤坂、日本規格協会へ</A>
<P>
規格票読んでから「こんなんなってんのか、、、へぇー」状態。
で、結局というか今は諦めてます。
<P>
<A HREF="./memo110.html">普通ならさっさと気がつく?(^ ^; </A>
<P>
そんなわけで、SGML文書を作るってことに関しては、いまは落ち着いてます。
<P>
でも、本当はもっといろいろ考えなきゃいけないこともあったりもする。
例えば「数式」はどうすんだとか、、、、
<BR>
参考になりそうな本(規格書や技術レポートら何やら)には高いから手が出ない。
<BR>
#それにしても何であんなに高いのかねぇ、ISOの規格書って。(;o;)
<P>
そうそう、文書のレイアウトをどうするかも結構、悩ましい。
DSSSLなんてもんもあって、Jade を用意したのはいいけど、DSSSL自体、
よくわかんないから使えない(そもそもLispをしらない)。
<BR>
SPDLなんか、PSはわかるからいいけど、それ以外の部分がどうなってるんか
皆目見当がつかない。
<BR>
レイアウトだったらODIFなんかもあるけど、ODAだのOSIなんかもっとわかんない。
OSIがでてくると、当然、SDIFってやつのこともでてくる。
<P>
<A HREF="./memo104.html">SDIFってなんじゃい?</A>
<P>
そもそもSDIF自体、ちょくちょく本にでてくるけど、それ自体の情報なんてほとんど
ない。見つけたら見つけたで、今度はASN.1が何だとかBERが何だだそうで、、、
<P>
もう、ドツボです(とかいいながら、こんなページ作って遊んでる)。
<HR>
<A HREF="./v02.html">続き</A>(vol.2)
<BR>
<A HREF="../../index.html#SGML">SGML(三浦のページ)</A>へ戻る
<HR>
<ADDRESS>
miuraj@isc.meiji.ac.jp
</ADDRESS>
</BODY>
</HTML>
