2008年05月11日
[英語学習] , [Macintosh] , [RSS等のXML] , [Unicode等の文字コード] , [辞書] , [プログラミング]
Leopardの「辞書」アプリで「ランダムハウス英語辞典」を使う
Leopardの辞書アプリ(Dictionary.app)で英辞郎を使えるようにしたおかげで、海外のサイトを読むのもずいぶん楽になった。しかし、単語の意味などをもう少し詳しく知りたいという時は、英辞郎だとちと物足りない。そこで、だいぶ前に買ったまま、ほとんど活用していなかったランダムハウス英語辞典(第二版)をDictionary.app用に変換してみることにする。
ランダムハウス英語辞典が使えるMac用の辞書ソフトとしては、すでにJammingがあるが、できればDictionary.appにまとめたいところ。検索機能はJammingが格段に優れているが、日常的にさっと調べるならDictionary.appの方が使いやすく感じる。まあ、変換処理自体が面白くなってきたというのもあるのだけど。
○Windows上で辞書データを吸い出す
ランダムハウス英語辞典のデータは独自形式になっていて、私ではとても手に負えない。そこで、太田純氏が作成されたランダムハウス英語辞典Toolkitを使わせていただいた。これは、ランダムハウス英語辞典のデータをHTMLに変換するWindows用のツール。当然、利用するにはWindows(Parallels Desktop for Macなどの仮想環境でもOK)が必要になる。ランダムハウス英語辞典Toolkitでは、srd2html.iniというファイルで設定を行うが、私は以下の内容にした。
BASEPATH = c:\srdtmp\
OUTPATH = c:\srd\
DICPATH = c:\Program Files\小学館\ランダムハウス英語辞典\
DATAPATH = c:\Program Files\小学館\ランダムハウス英語辞典\
SORTCMD = c:\Windows\System32\sort.exe
MACINTOSH = 0
FIGURE = 1
JPEG = 1
SOUND = 0
GENSOUND = 0
COMPLEX = 0
QUICKJUMP = 0
QJITEMS = 3
QJLINES = 30
QUICKRET = 1
ITALIC = 0
PRONSYM = SPEAKER
JUMPSYM = BIPOD
ARROWSYM = JUMP
RETSYM = RETURN
これで、srd2html.exeを実行すればsrd.htmlが生成される。また、figフォルダにはBMPの画像ファイルがコピーされるので、これを適当なツールでJPEG形式に変換しておく。
○生成されたHTMLを修正する
私の手元にあるランダムハウス英語辞典は、どうもデータにバグがあるようで、そのままではエラーが出てしまう。そこで、適当なテキストエディタを使ってsrd.htmlを修正する。修正内容は以下の通り。
・Avalementの項目の文字化け
Avalementの項目(ID="1190300")に文字化けがある。「屈曲によってスキーが」という文章に修正。
・adsuki beanの重複
adsuki beanという項目が重複している。ID="224900"の方は文章量の少ない項目(ID="239400"を参照している方)を残し、ID="239400"の方は文章量の多い項目を残す。
・その他の重複項目
その他にもいくつかの重複項目がある。
IDを列挙すると、
353200, 393700, 1076900, 1077000, 1077100, 1121500, 1225000, 1396900, 1885200, 1904900, 1914600, 2088900, 2101900, 2106100, 2108500, 2365200, 2452600, 2536200, 2536600, 2717300, 3121300, 3167800, 3265100, 4445800, 5760300, 5861700, 5873700, 5959500, 6897700, 6907700, 7160400, 7193700, 7194400, 7286000, 7298600, 7625900, 7679100, 7696200, 7789200, 7792900, 8064000, 8211700, 8229600, 8257300, 8501900, 9015400, 9047000, 9051400, 9199600, 9318000, 9327700, 9336700, 9338000, 9338700, 9350700, 9351200, 9351400, 9370200, 9443000, 9466600, 9549300, 9553900, 9746700, 10118300, 10661800, 10781200, 11034200, 11085300, 11321500, 11414300, 11414400, 11582200, 11600800, 11608200, 11853900, 11854400, 11856600, 11858300, 11858400, 11858500, 11860000, 12068100, 12214700, 12216400, 12585600, 12596500, 12596600, 13562000, 14796100, 14821200, 15057600, 15098200, 15157400, 15163100, 15205800, 15243200, 15251400, 15288700, 15560100, 15654900, 15841300, 15841400, 15848500, 15877300, 15877400, 16102800, 16110300, 16125800, 16402500, 16403100, 16465100, 16465200, 16465300, 16465400, 16465500, 16465800, 16466000, 16466100, 16466400, 17115600, 17138800, 17231400, 17435800, 17543200, 17919100, 17928100, 17934200, 17936600, 17936700, 17936800, 17960800, 18293800, 18403900, 18432400, 18440900, 18795400, 19176600, 19441700, 19639100, 19763300, 19789700, 19807900, 19827700, 19852500, 19856600, 19879300, 19879700
……勘弁してください。どうも「kimono」とか「harakiri」など、日本語由来の単語に問題があるようだ。重複しているIDの項目を削除する(実は、同じIDでも内容が微妙に異なる。片方は説明が詳しく、片方は出典が書かれているという具合。気になる人は適宜編集してほしい)。
○Xcodeをインストールする
ここからはMac上での作業になる。
・英辞郎の場合と同じく、Mac OS X用の開発ツール「Xcode」をインストールする(Leopardのインストールディスクの「Optional Installs」→「Xcode Tools」→「XcodeTools.mpkg」を実行)
・「/Developer/Exmaples/Dictionary Development Kit/project_templates」フォルダを適当な場所にコピーする
○変換用のスクリプトを準備・実行
・ここから、変換用のスクリプトをダウンロードして、(コピーした)「project_templates」フォルダに解凍する(同じファイル名は上書き)
・生成したsrd.htmlも、同じく「project_templates」フォルダにコピーする
・画像の含まれる「fig」フォルダは、「project_templates」内の「OtherResources」フォルダにコピーする。
・「ユーティリティ」フォルダの「ターミナル」アプリケーション(Terminal.app)を起動して、「cd」コマンドで(コピーした)「project_templates」フォルダに移動する
・ターミナルで、「ruby srd_conv.rb < srd.html | ruby gaiji_rep.rb srd.lst | ruby ucs4_to_utf8.rb > MyDictionary.xml ; make ; make install」と入力。
・「辞書」アプリケーション(Dictionary.app)を立ち上げると、ランダムハウス英語辞典(SRD)が使えるようになっているはず。
○発音記号もコピー&ペーストできる
オリジナルのランダムハウス英語辞典では、発音記号などをすべて外字によって表現していた。そのため、説明文を別のアプリケーションにコピーしても、文字化けしてしまう(Jammingを使った場合でも同じ)。
Dictionary.app用に変換したデータでは、これらをUnicodeの文字で表示しているので、見たとおりの状態でコピー&ペーストできる。この変換テーブル(srd.lst)は、私が近い形を探して作ったので、間違いがあるかも。手書き文字のように、Unicodeではどうしても表現しきれなかったものもいくつかある。
○日本語のキーワードからも引ける
ランダムハウス英語辞典には、日本語の検索インデックスも用意されている。和英辞典ほどではないが、結構便利である。
○変換スクリプトの話
・srd_conv.rbは、srd.htmlをXML形式に変換。
・gaiji_rep.rbは、外字をUnicodeの文字に変換。
・一部の文字が文字実体参照(????という形式で文字を表現する)になっているので、これをucs4_to_utf8.rbで実際の文字に置き換えている。Unicodeのいわゆる文字コード(UCS-4)からUTF-8への変換方法は、『文字コード超研究』を参考にしている。この本は、文字コードの基本知識から具体的な変換方法まで、わかりやすく書かれていてオススメ。
(※このエントリーに対してトラックバックを送る際は、下記URLをコピーし、自分のエントリーの「TrackBack先のURL」欄に貼り付けてください)
(※この記事へのリンクは、http://www.binword.com/blog/archives/000602.htmlにお願いします。トラックバック用URLとは異なりますのでご注意ください)
以下は、このエントリーに送られたトラックバックです。