== EPWING形式変換スクリプト for LDOCE5 (PSS対応版) ==

本プログラムは、ロングマン現代英英辞典5訂版（桐原書店）（以下LDOCE5）に
付属のDVD-ROMの辞書を、FreePWINGを利用してJIS X 4081、いわゆるEPWING形式に
変換するプログラムです。

さらに、抽出した辞書データを 英単語学習ソフト P-Study System で利用するために
転送する機能を備えています。


■環境

開発時は下記のような環境で動作を確認しました。
- Windows 7 Professional (64bit)
- ImageMagick-6.8.4-10-Q16-x86-dll.exe (EPWING化しない場合は不要)
- ActivePerl x86 5.14.4.1405 (*)
- PAR::Packer (*)

(*) は本ツール利用時には不要


■使い方

[1] ロングマン現代英英辞典5訂版 付属のDVD-ROMをインストールする


[2] ImageMagick をインストールする (EPWING化せず PSS 音声抽出のみの場合は不要)

http://www.imagemagick.org/script/binary-releases.php#windows から
  ImageMagick-6.8.5-0-Q16-x86-dll.exe
をインストールしてください。バージョンは多少違っても動くかもしれません。

インストール時のオプションは基本的にデフォルトのままでOKです。


[3] LDOCE5 インストール先の設定を行う

LDOCE5 のインストール先が
  c:\Program\ Files (x86)\Longman\LDOCE5\ldoce5.data\
  c:\Program\ Files\Longman\LDOCE5\ldoce5.data\
以外の場合は ldoce5-fpw.conf の先頭にある「LDOCE5のインストール先へのパス」を変更してください。

また、必要に応じて「外字作成用TrueTypeFontへのパス」も設定してください。
(通常そのままでかまいません)


[4] 変換スクリプトの実行 (EPWING化する場合)

- コマンドプロンプトを開く

コマンドプロンプトを開き、本スクリプトがあるディレクトリに移動してください。


- fpwmake を実行する

下記コマンドを実行してください。
(マシン性能によりますがおおむね1時間〜数時間程度かかります)

  > fpwmake

これで LDOCE5 というディレクトリに辞書データ一式（honmonなど）が作成されます。

また、fpwmake.bat内で指定したzipコマンドが使える場合、そのディレクトリを圧縮して
パッケージを作成します。

LDOCE5 ディレクトリ(またはLDOCE5.zip)を別の場所にコピーして電子辞書アプリで閲覧してください。


[4] 変換スクリプトの実行 (EPWING化せず PSS 音声抽出のみの場合)

下記コマンドを実行してください。
(マシン性能によりますがおおむね1時間〜数時間程度かかります)

  > extract_psssound.bat


▼P-Study System 用にコピーする

下記のコマンドを実行して 音声ファイルを P-Study System のディレクトリにコピーしてください。

  > copytopss.bat

【注意】右クリックメニューから「管理者として実行」してください。
【注意】Windows Vista以降の場合、標準ユーザ(一般ユーザ)では実行できません。管理者アカウントでログインしてください。

コピー完了 と表示されれば終了です。


▼ファイル削除
本スクリプトを展開したディレクトリは削除してかまいません。


■ライセンス
本プログラムのライセンスはGPL 2に従うこととします。


■変更ポイント
オリジナルのスクリプトに比べて下記の点を改良しています。
- ActivePerl のインストール不要(PARでexe化)
- P-Study System 用の転送機能(スクリプト)を追加


■追加・変更ファイル

+ makepp.bat           PAR::Packerによる*.exeの生成バッチ
+ caller.pl            各スクリプトをできるだけまとめて PAR 化する(※)ために一元的に呼び出すスクリプト
+ caller.exe           各種Perlスクリプトのラッパー
+ fpwparser.exe        ldoce5-fpw.plのラッパー
+ catdump.exe          catdump.plのラッパー

+ psstool.pl           PSS用コピースクリプト
+ copytopss.bat        PSS用コピーバッチファイル(psstool.pl)
+ split_psssound.pl    split.pl をPSS用音声抽出のみ対応にしたもの(ImageMagick不要とするため)
+ extract_psssound.bat 音声抽出バッチファイル(split_psssound.pl)

- fpwmake.bat          caller.pl, caller.exe, catdump.exe を利用するように修正。


 ※ +は追加、-は変更したファイル
 ※ PAR 化はスクリプトとPerl本体、ライブラリ一式を1つのexeに固めるため、
    オリジナルの分離した Perl スクリプトのままでは大量の無駄なexeができるため caller.pl にまとめた。


■謝辞

オリジナルスクリプトの作者の隆さん、takさんをはじめ、本ツールに関わる全ての
方々に感謝します。
(作者の一覧は下記オリジナルのreadme.txtをご参照ください)



-------------------------------------------------------------
---- 以下、隆さんによるオリジナルスクリプトの readme.txt ----
-------------------------------------------------------------

EPWING形式変換スクリプト for LDOCE5
by 隆

2012-09-06

本プログラムは、ロングマン現代英英辞典5訂版（桐原書店）（以下LDOCE5）に付属の
DVD-ROMの辞書を、FreePWINGを利用してJIS X 4081、いわゆるEPWING形式に変換する
プログラムです。

※ 推奨環境

以下のような環境で，動作確認しています。

□cygwin環境
- Cygwin 1.7.15
- Perl 5.10.1 for Cygwin
  - Compress::Raw::Zlib (cygwinに入っているもの)
  - Image::Magick       (cygwinに入っているもの)
  - XML::DOM 1.44       (CPANからダウンロード・インストール)
  - XML::RegExp 0.04    (CPANからダウンロード・インストール)
  - FreePWING 1.6.1

□ActivePerl環境
- ActivePerl 5.14.2.1402
  - Compress::Raw::Zlib (ActivePerlに入っているモジュール)
  - XML::DOM 1.44       (ppmで依存するパッケージとともにインストール)
  - FreePWING 1.6.1     (このパッケージに入っている改造版)
- ImageMagick 6.7.8.2
- 7zip 9.20

→ Compress::Raw::Zlib (idm形式を展開するのに利用しています)
→ XML::DOM 1.44       (idm形式から展開後の辞書データの解析に利用しています)
→ XML::RegExp 0.04    (XML::DOM に必要)
→ Image::Magick       (TrueTypeFontから外字を作成するのに利用しています)
→ 7zip                (Windows環境でzip圧縮するために利用しています)

＊ActivePerlで条件検索をONにして変換すると以下の警告が出る場合があるが、
  変換はできているようです。

『警告: 通常、大きな並べ替えのリダイレクト出力の使用は並べ替えた出力ファイル
  を直接指定するよりも遅くなります。』

□外字のフォント
- ARIALUNI.TTF

変換したEPWING形式の辞書データは，以下のビューアを利用して確認しました。
- EBWin 3.06
- EBPocket Professional for Android 1.16.5
(外字テーブルを修正しているので、LDOCE5.mapを使用中の場合は更新してください)

※ 対応状況
- LDOCE5の辞書本体を変換。 
- サイドパネルのデータに対応。
  (COLLOCATIONS, THSAURUS, PHRASE BANK, EXAMPLE BANKに対応)
- Word family, Word origin, Verb form に対応
    → 手元のDVDで以下の参照先が存在しないのでリンク自体を削除しています。
        retail3 (verb) の Verb form 2つ目
        x2 (verb) の Verb form 2つ目
        co- (prefix) の Word origin データ内の → COM-
        tipsy (adj) の Word origin データ内の → TIP2
- 本体、サイドパネル変換中の分母は、手元の辞書変換時の総数を使用しています。
- 外字はできるだけ変換。見落としや変換ミスがあるかもしれません。
  (takさん作成の gaijitbl.pl から 外字として使われないpsymbol_table を
   削除し、symbol_table に外字を追加。追加文字には(add)をつけています)
- 参照は不完全ながら対応。 
- 画像と音声は出来るだけ対応。一部の音声データは、元々DVDに収録されていない
  ようなので再生できません。変換できない音声は'×'と表示されるように変換して
  います。手元のDVDでは以下の音声データが取り出せませんでした。
    → 音声ファイルが存在しないため例文が無音になる
         performance 2項6番目の例文
         pet         pet rabbit/bird etc 2番目,3番目の例文
         seat        Parliamentary/Senate etc seat の例文
         seat        win/gain/lose a seat の例文
         seat        keep/hold onto a seat の例文
    → 音声ファイルのCompress::Raw::ZlibによるInflateに失敗するファイル
         woodcut,woodcutter,wooded,wooden のUS版の発音
- 音声データはサイズが大きくPCMに変換すると容量的に厳しいので、mp3にwave
  ヘッダをつけて収録しています。そのため、一部のソフトウェアでしか再生出来
  ないと思われます。
- 条件検索に実験的に対応。 一応辞書本体とサイドパネル内の例文から条件検索の
  インデックスを作成できるようにしたつもりですが、見落としやうまく例文が引け
  ないものがあるかもしれません。条件検索に組み込みたくない単語は $condskipword
  に'|'で区切って記述してください
- おおよその収録データサイズ
    本体辞書データ  58MB
    サイドパネル    53MB (examples)
    サイドパネル    21MB (thesaurus)
    サイドパネル     3MB (word-sets)
    サイドパネル   193MB (collocations)
    サイドパネル    49MB (phrases)
    語源等          16MB (word family, word origin, verb form)
    小画像データ     5MB
    大画像データ    27MB
    音声データ    1321MB
    条件検索       660MB (サイドパネルが全て有効の時のIndex+Entryの追加サイズ)
    インライン    +368MB (指定可能なすべてのデータがインラインの時)

＊ 構成
- readme.txt        このファイル
- ldoce5-fpw.conf   設定ファイル
- ldoce5-fpw.pl     変換スクリプト本体
- gaiji.pl          外字作成スクリプト
- parse.pl          展開後のデータを中間形式に変換する部分
- split.pl          画像と音声データの抽出とタグファイルの作成
- gaijitbl.pl       gaiji.plとparse.plの両方で使うテーブル
- catalogs.txt      カタログファイル定義内容
- Makefile          makeコマンド用定義ファイル
- fpwmake.bat       Windows用変換バッチファイル
- freepwing.zip     Windows用カスタム版freepwing1.6.1

以下は同梱のおまけ
- ebwin.pl          EBWin用の外字変換テーブルを作成するスクリプト
- idm2txt.pl        idm 形式のXMLデータを抽出するスクリプト

＊ ライセンス
本プログラムのライセンスはGPL 2に従うこととします。

＊ 使い方
以下の手順で実行してください。

1. 設定ファイルの確認
以下の2つのパスを設定します。詳細は設定ファイルの中を見てください。
 - LDOCE5のインストール先へのパス 
 - 外字作成用TrueTypeFontへのパス
   (arialuniを使用しています。他のフォントを使用する場合、bitmap
    ディレクトリ内に作成される外字の画像を確認してください)

その他細かい設定。0は無効、1は有効、2はインライン/大サイズ画像
- $collobox         COLLOCATIONSの項
- $thesbox          THESAURUSの項
- $grambox          Grammarの項
- $f2nbox           Registerの項
- $sideex           Side PanelのEXAMPLE BANKの項
- $sidethes         Side PanelのTHSAURUS(ThesaurusとActivator)の項
- $sidecollo        Side PanelのCOLLOCATIONSの項
- $sidephras        Side PanelのPHRASE BANKの項
- $sideword         Side PanelのTHSAURUS(Word sets)の項
- $wdfamily         Word familyの項
- $wdorigin         Word originの項
- $verbform         Verb formの項
- $indent           字下げ
- $italic           斜体指定
- $bold             太字指定
- $emphasize        強調指定
- $link             参照
- $phrasalverb      phrasal verb entryを検索語に登録
- $gramshortform    [uncountable]->[U]などの変換
- $geoshortform     (American|Australian|British) Engrish->(Am|Aus|Br)E
- $condsearch       例文の条件検索の有効・無効 (実験的に対応)
- $image_type       画像埋め込み
- $sound_type       音声埋め込み

- $condskipword         条件検索に登録しない単語
- sub replace_pos_word  (adjective)->(adj) などの変換関数
- sub replace_gram_word [uncountable]->[U] などの変換関数
- sub replace_geo_word  [American Engrish]->[AmE] などの変換関数

サイドパネル,Word family,Word origin,Verb form の項は本文中に
インラインに展開することが出来ます。Word origin の項はWord origin
からWord originへのリンクが存在するため、インラインに展開しても
個別のデータも展開しています。

インライン展開時には展開する項目をメモリに読み込むため、perlの
使用メモリサイズが大幅に増えます。全部インライン展開した場合、
手元のActivePerl (64bit版)で約370Mb(条件検索ONだと620MB)程度の
メモリ使用量となりました。

2. パッケージを作成 

□ cygwin の場合
変換実行には、以下のコマンドを実行します。
   $ fpwmake package
LDOCE5 というディレクトリに辞書データ一式（honmonなど）が作成されます。また、
zipコマンドがインストールされていれば。そのディレクトリを圧縮してパッケージ
を作成します。
package-tar-(gz|bz2)を指定するとzipの代わりにtar.(gz|bz2)形式で固めます。詳しく
は、FreePWINGのドキュメントを参照してください。

□ ActivePerlの場合
変換実行前に freepwing.zip をzip内のフォルダを保つように展開します。展開後、
以下のフォルダが作成されます。
  ─ freepwing
     ├ doc
     ├ FreePWING
     │ ├ FPWUtils
     │ └ Link
     └ libexec
また、fpwmake.bat内のZIPおよびZIPFLAGSを環境に合わせて修正してください。7zip
を使う場合、ZIPFLAGSは修正しなくても動作すると思います。

変換実行には、以下のコマンドを実行します。
   > fpwmake
LDOCE5 というディレクトリに辞書データ一式（honmonなど）が作成されます。また、
fpwmake.bat内で指定したzipコマンドが使える場合、そのディレクトリを圧縮して
パッケージを作成します。以下のコマンドを実行すると、中間ファイル・生成ファイル
をすべて削除します。
   > fpwmake clean
clean 実行前に、作成済みの辞書ファイルを別の場所にコピーしておいてください。

＊ 謝辞

スクリプトは、takさん作成のldoce5-fpw-20100111 (*1)を元に作成しました。また、
mp3のwav変換は、kazuhiroさんのoald7sound (*2) を参考に作成しました。収録し
ているfreepwing.zipは、cygwinにインストールしたFreePWING(*3)を一部改変した
ものを一つのフォルダにまとめたものを収録しています。オリジナルのFreePWINGは
(*3)から入手することができます。

先駆者の方々に敬意を表します。

(*1) http://www.geocities.co.jp/tak492/
(*2) http://ikazuhiro.s206.xrea.com/staticpages/index.php/oald7-fpw
     http://ikazuhiro.s206.xrea.com/article.php/200912261656263
(*3) http://www.sra.co.jp/people/m-kasahr/freepwing/
     ftp://ftp.sra.co.jp/pub/misc/freepwing/

【参考】FreePWINGの改変部分
ActivePerlで変換するために、cygwinにインストールしたFreePWINGを一部改変して
収録しています。改変内容は、freepwing\FreePWING\Sort.pm の
  # sort コマンド
  $sort = '/usr/bin/sort';
を
  # sort コマンド
  $sort = 'sort';
に変更しています。sortコマンドにパスが通っているが前提ですが、これでWindows
でもとりあえずFreePWINGが動作するようです。なにか問題が出た場合は、gnuのsort
コマンドを入れ、Windowsのsort.exeよりも優先して動くようにパスを設定すれば動作
すると思います。

＊ 更新履歴
- 2012-07-28 とりあえず画像と音声に対応
- 2012-08-20 Side Panelに対応
- 2012-08-23 phrasal verb entryを検索語に登録する機能を追加
             LDOCE5の辞書ブラウザで検索対象外なので、初期設定はOFF
- 2012-08-24 $phrasalverbが1の時、phrasal verb内に外字が含まれている句動詞
             が検索語に登録されない問題を修正
- 2012-09-05 Word family, Word origin, Verb form に対応
             サイドパネル,Word family, Word origin, Verb form のインライン展開に対応
             例文の条件検索に実験的に対応(サイズが大きいので、デフォルトはOFF)
 -2012-09-06 ldoce5-fpw.confの初期値を修正
                $phrasalverb の値を 1 (Enable) → 0 (disable)に修正
             $phrasalverbが1のときしか条件検索を作成しない問題を修正
             条件検索 ON の時EBPocketで改行が余分に入る問題に対応
