英辞郎 for kindle(mobipocket creator)
kindleにUnicodeハックを入れさせてもらい、さらにprimary dictionary を英辞郎から作成した英和辞書に変更してから、kindleの使い勝手が、もう劇的と言ってしまってもいいんじゃないの?ってくらい『快適』になった。
そうなると、なんかまた読んでみたくなるわけで…、実はkindle購入とともに購入していた「Programming C# 3.0」も、まだ80%ほどで止まっている状態なんだけど、あの手の本と言うのはいつもだいたいこのくらいのところで飽きてきちゃうんだよね。
ってことで、またぞろ新しい本をポチってしまった。もちろん、いきなりポチったわけではなくて、sampleをダウンロードして、最後まで読んじゃってから、やっぱ続きが読みたいよ~となって、勢いで「Buy Now」しちゃったということなんだけど。で、またまた、C#のプログラミング本で「more Effective C#」というもの、主には genericはこんなふうに使うと凄いんだぞーみたいなことが書いてあるようだ。moreなしの旧巻もあるんだが、そちらは .NET 1.1のときのもので、要するに初期のC#に基づいてEffectiveなプログラミング技法について書かれているものなのだが、.NET2.xになって、画期的な新機能(主にはgeneric)が加わって、新たに書き直されたという感じか?旧巻も読むべきか、微妙な感じなのが、ちょっと気になるが、とりえあず、新しい方を読み始めた。
それは、いいや。で、問題の英辞郎辞書で気になる点を、Eijiro117-csv2htmlのバグも含めて、いくつか修正した。
どうも、Eijiro117-csv2html.plには、意味カラムの内容から、語形変化部分(【変化】で始まる、それっぽい領域)を抽出する部分にバグがあったようで、もしかすると、Eijiro117~を使用した場合は語形変化追従しない辞書ができていたかもしれない。自分は、英辞郎の117バージョンを購入していないために使用していないために発見が遅れしまった、ごめんなさい。今回のバージョンはおそらく語形変化追従できるはず。
前回の Eijiro117-cvs2html.pl でとりあえずkindleのオンタイム辞書検索にて、語形変化にも追従していく辞書の作成はできた(と思っていたのだが、実はバグっていたかもしれない)。しかし、大部分の単語は正しく変化形の場合も、元の単語の意味が正しく表示されるのだが、ときどき、この語形変化の追従が上手くいかない場合がある。辞書のエントリーが例えば、以下のような場合だ。
- 「dog」というエントリーがある。
- 「dog」には、「dogs」という複数形がある。
- 「dogs」という1単語だけの独立した、別のエントリーはない。
- 「dogs and gods」というエントリーがある。
というふうに辞書が構成されている場合、dogs という単語にカーソルが合ったときに、当然、dogの意味を表示して欲しいわけだが、これが出てこない。(これはあくまでも例であって、実際のkindleでdogsに当てたときにdogが出てこないと言うわけではない)
kindleの辞書検索では、まずdogsのまま、検索し、そのエントリーがない場合に語形変化を検索するという手順を踏むようだ。ところが、上記のような構成では、「dogs」で検索した場合に、「dogs and gods」がヒットしてしまうらしい(「dogs*」と検索しているのだろう)。
ヒットしたので、語形変化形を探さないのだが、その先で、ヒットしたエントリー「dogs and gods」と「dogs」は一致しないため、ヒットしたエントリーはなしということになっているらしいのだ。
実は、対応は簡単で、要するにindexのエントリーが2語以上である場合は indexに入れなければいい。ただし、当たり前だが、2語以上のエントリーの検索はできなくなってしまう。痛し痒しというところ。
で、解決策ではないのだが、今のところ、この「2語以上」のエントリーはindex化しないというのではなくて、<idx:entry>タグのname属性を「”idiom”」として、別のインデックス扱いにしている。1語のエントリーはname属性なしとしていて、mobipocket creatorのbook settingsでも、default lookup index を空欄ししたままなので、1語のindexのみが使用されて検索されるようだ。
と、以上のことを、ごにょごにょしている、その過程で語形変化のタグ作成の処理のバグも見つかったというわけ。
ただし、残念なことに、この「idiom」という名前を付けたindexは使いようがない。無理やり使うとすると、mobipocket creatorのbook settingのdefault lookup indexにidiomと書くくらいだが、これだと、wordでの検索が行えないことになるので、使えない辞書って感じになってしまう。
そもそもは、mobipocketの <a onclick=”index_search(“idiom”, “*dog*”, ホニャララ) ” />みたいな感じに、辞書本文表示のエントリータイトルのリンクで、idiom検索の集合が出てくれたら素敵だと思って、こういう事にしたのだが、kindleのmobipocketリーダーは、<a>タグの onclick属性をサポートしていないのだ、というか、そもそも index_search()などのjavascript関係の実装がどこまでされているのかも、ちょっと怪しい感じだし。
まぁ、とりあえず、いつか、kindleのリーダーが、こうしたフィーチャーをサポートした暁には、対応がスムーズに出来るようにしておこう~ってくらいの意味しかないっていうのが現状。
Eijiro117.csv2html-v2:例によって、何が起こっても責任は持てないのであしからず。使い方は、下のscreen-shotをクリックすると出てくる感じ。(あと、細かいことは、前のアーティクルも見てね)
【追記/2009-01-25】なんか、kindleブームのようでアクセスが(超マイナーブログだったのに)異常に多い(日に200もアクセスがあるなんて…200万じゃないです、正味200です、はい)ので、念のために、このスクリプトのバグ修正版をここで追加しているので、こちらを使用願いたい。ってことで、やっぱり、上のリンクは外しておこうと思う。
- 実行の様子。「EIjiro118-WIK:6-ITAI」というのが動きを制御している。
WIK:nn がエントリーの語数を表す。6を指定すると、180万語ほどになるが、一 応mobipocket creatorでprcを作成可能。ITAIという文字列があると、『1語』の みをデフォルトindexとして、2語以上は「idiom」indexとする。kindleで2語以 上の辞書検索はできなくなるが、語形変化追従ケースは増える。
Related posts:
3 Responses to “英辞郎 for kindle(mobipocket creator)”
Leave a Reply
Plugin by wpburn.com wordpress themes

こんにちは!
先日はありがとうございました。
バージョンアップしたようで^^
また頂いていきますね。
辞書のおかげで最近kindleが非常に使いやすくなって嬉しいです。
どもです。
idiomをmain-index化しないという策は、ありなのか、どうかは微妙です。ときどき、idiomを検索したいときもありそうなので。特に、英辞郎はidiomエントリーが膨大で、1語の下に何百もあったりして、ページめくりで探すのはさすがに苦痛ですから。
20個に1個くらいの割合で、main-indexに入れるかな?とも思ったのですが、なんか、それはそれでindex自体が変なindexになるようで嫌な感じだし。
こちらの記事を参考に、Kindle 3に英辞郎(ver3)をなんとか入れることができました。
ありがとうございました。