[an error occurred while processing this directive]
Title
電子辞書 - 「小学館 スーパーニッポニカ2001 LightEdition」をPDIC形式に変換する

とりあえずの公開。
まず、前準備で用意したもの以外に必要なものがありますので、それを挙げておきましょう。
  1. cygwinもしくはUNIX互換環境 (http://cygwin.com/)
  2. Ruby (http://www.ruby-lang.org/ja/download.html)
  3. freepwing (http://www.sra.co.jp/people/m-kasahr/freepwing/)
  4. epwutil (http://openlab.ring.gr.jp/edict/epwutil/)
  5. ssnfpw2001 (後述)
  6. nippodic.lzh (http://www.ikushimo.com/pc/nippodic.lzh)
  7. 小学館 スーパーニッポニカ2001 LightEdition CD-ROM
以下はcygwin環境を前提に書きます。
それ以外のUNIX互換環境の方は適宜読み替えて下さい。(いずれにせよPDIC形式にするにはWindows環境が必要ですが。)

まず、Windowsにcygwinをインストールします。
Rubyはcygwin版があるはずですのでそれを入れます。(展開するだけのはずです)
Windows環境では、PATHをcygwinのbinディレクトリへ通しておきましょう。
ActivePerlも入れている場合はややこしいことになるのでそちらはPATHをいったん外しておきましょう。
んで、ssnfpw2001は電子辞書オープンラボのMLかNewsGroup(news.ring.gr.jpサーバのring.openlab.edict)の
Message-ID: <20010316223001.00DEE5E31@mail.asahi-net.or.jp>
Date: 17 Mar 2001 07:30:06 +0900
From: yamato@jade.dti.ne.jp (S.Yamato)
Subject: $B%9!<%Q!<%K%C%]%K%+(B EPWING $B2=$G$-$^$7$?(B (うちでは化けてます)
のメール/記事に添付されていますので、MLに加入するなりNewsGroupを購読するなりして入手して下さい。
ファイル名は「ssnfpw2001-0.0.1.tar.bz2」です。
こちらのコードから復元するという手もイケルかも。(未確認)
「ssnfpw2001-0.0.1b.tar.bz2」というのもありますが、こちらは旧版のスーパーニッポニカ対応版なので2001を使う限りは必要ありません。
ただし、もしかすると旧版でもPDIC化できるかもしれませんが。(とりあえず私は持っていないし買う気もないので特に対応はしません)
このプログラムを開発、公開して下さった大和慎一様、ありがとうございます。

んで、freepwingも入れます。
INSTALLを読んでそのままやるだけです。

次に、epwutilを入れます。
私は1.1を使いました。
makefile.dosは使わずにmakefile.unxでコンパイルしましたが一応使えてます。
コンパイルした実行ファイルは/binに置いちゃいました。

ここまでの準備ができたら、ssnfpw2001のtar.bz2ファイルを適当な場所で展開します。
展開されたファイル中の.rbファイルがRubyスクリプトで書かれているのですが、cygwin環境ではこのスクリプトに書かれている/usr/bin/rubyではなく/usr/local/bin/rubyにRubyがインストールされているため、全.rbファイルの一行目を修正します。
んで、CD-ROMの「SuperNipponica2001LE」ディレクトリを展開したディレクトリにコピーします。(別にどこでもいいんですが)
Makefileの中身は該当箇所を
BASE = ./SuperNipponica2001LE
LEAN = true
と書き換えます。
そして、bashで
fpwmake
fpwmake catalogs
fpwmake install INSTALLDIR=/usr/share/dict
を実行すると/usr/share/dictにEPWING形式のデータができますので、DDwinでnippon.txtに出力します。
ここでcygwinは用済みなので、PATHはActivePerl+JPerlに通しておきます。
(fpwmakeで5時間以上かかったと思います。ディスク容量にも気を付けましょう。)

次はいよいよ(やっと?)出力テキストのPDIC一行テキスト形式への変換です。
nippodic.lzh内のファイルと出力ファイル(nippon.txt)を同じディレクトリに置きます。
そしてnippon.batを実行します。
すると最終的にnippodic.txtができます。
ただし、この時点では各説明著者の署名にくっついているタグが削除されていません。
タグを削除したい場合はnamezan.batを実行して下さい。
タグだけでなく署名も削除して容量を節約したい場合は著者に感謝しつつnamekesi.batを実行して下さい。
さらに、本文中のルビを消したい場合はrubikesi.batを実行して下さい。
どれを実行してもnippodic.txtが書き換えられますので使用するファイルは同じです。
これでPDIC一行テキスト形式になっているはずですので、PDICでPDIC形式に変換して下さい。
ルビ・署名無しでPDIC形式へ変換すると約120MB程度になります。(でかっ)
このデータでは、説明があまりに長い単語は登録されません。
(そういうものに限って重要だったりする。)
これは、PDICの用例部の長さは20kBytesまでという制限によるものです。
これを回避したい場合はご自分でテキストを編集して下さい。
本当は「・」(スペーススラッシュスペース,PDIC一行テキストの訳/用例部境界)から20kBytes未満にある「 \ 」(スペース円スペース)の中で最も20kBytesに近いもののところで改行を入れて初めの行の「・」以前をその行頭に付けて、単語末尾に数字を振る、ってやりたかったんですが、そんなもん書けん。書ける人、そーいうの書いて頂戴。
処理方法は分かるのにその処理の実装ができない歯がゆさよ。(爆)
ってゆーかね、他にもなんかちゃんと一行テキスト形式になってないところがあったような気がするんだなぁ。(汗)
手作業で直してたら見つかったんですが、どこか忘れた。(あほ)
ちなみにこのままではエラーで登録されなかった単語のリストです。error.txt
どうも、「碁石」がちょっとおかしいみたいですねー。
ま、いーや。
あー、そーいえば行末の「 \ 」が残ってるのがあったなあ。ま、いっか。(修正済)
あー、気合い入れてべんきょーすっかなー。
でもそんな時間ねー。
やる気もねー。
あうー。

以下がZPDVIEWで検索したときの画像。
SuperNipponica2001LEonZPDVIEWSuperNipponica2001LEonZPDVIEW
あーあ、英語の翻訳から現実逃避してこんな事やるなんてもうヲレもダメだな。
なんか「あー」が異常に多いし。
[an error occurred while processing this directive]
sign