「英辞郎 第三版」と Firefox Add-On ‘Mouseover Dictionary’、英辞郎ビューア

2007/03/25(Sun) 08:45:00
英辞郎第三版 ((HY版)) | |本 | 通販 | Amazon
https://www.amazon.co.jp/exec/obidos/ASIN/4757411367/yoshiakishome-22/

 

1. ‘Mouseover Dictionary’

Firefox 用のアドオン(機能拡張) ‘Mouseover Dictionary’ を試してみたくて「英辞郎 第三版」を購入しました。

‘Mouseover Dictionary’ の設定には

trick7.com blog: 英辞郎第三版と"Mouseover Dictionary"アドオンで海外サイトを読みまくる
http://www.trick7.com/blog/2007/02/09-075041.php

を参考にしました。読み込まれた辞書データは

/Users/あなたのアカウント/ライブラリ/Application Support/Firefox/Profiles/あなたのプロファイル/mouseoverdictionary.sqlite

に保存されるようです。辞書を再度読み込みたい時は、このファイル mouseoverdictionary.sqlite を削除して、読み込めば良いようです。

また、私は Firefox で読み込んだ eijiro.txt を ‘PDIC Viewer‘ のテキスト形式で変換したファイルではなく、

“naoya_t”.camelize - 「英辞郎 第三版」のデータをPDIC1行テキスト形式に変換するためのPerlスクリプト
http://d.hatena.ne.jp/NaoyaT/20070212/pdic

pdic-conv-0.1.tar.gz を使って作成したファイルを使用しています。この後、説明に出てくる pdic-conv-0.1e.tar.gz ではないので注意してください。

2. ‘英辞郎ビューア’

私は英単語の暗記に、拙作 ‘Wordbook’ を利用しています。

‘Wordbook’ の入力ウインドウで、単語フィールドに単語を入力し、Return キーを押して選択した後、Shift + Command + K を押して EGWORD14 に付属している ‘電子辞典ビューア’ で検索結果を表示させ、検索結果を Wordbook にコピー、ペーストして登録しています。

‘電子辞典ビューア’ の代わりに ‘PDIC Viewer‘ が使えないかと思ったのですが、検索結果をコピーできないし、サービスメニューにも対応していないようです。

そこで「英辞郎 第三版」を利用したソフトがないかと

OSX Freewares
http://www16.plala.or.jp/x-tomo/

で探してみました。’英辞郎ビューア’ という名前のフリーウェアを見つけました。

Numata Designed Factory - EIJIRO Viewer (英辞郎ビューア)
http://numata.designed.jp/?EIJIRO%20Viewer

早速ダウンロードしました。辞書データの作成には

“naoya_t”.camelize - 「英辞郎 第三版」を英辞郎ビューアで引く
http://d.hatena.ne.jp/NaoyaT/20070212/eijiro

pdic-conv-0.1e.tar.gz を利用して、eijiro98.txt、reiji98.txt、ryaku98.txt、waeiji98.txt を作成しました。

FireFox のアドオン ‘Mouseover Dictionary’ で利用した pdic-conv-0.1.tar.gz ではないので注意してください。

環境設定で辞書データを登録するとちゃんと動作します。

発音記号は表示されませんが、検索結果もコピーできますし、サービスメニュー ( Shift + Command + E ) も動作します。

3. 遠回り

実は上の説明で出てきた pdic-conv-0.1e.tar.gz の存在を知らず、pdic-conv-0.1.tar.gz で作成した辞書データを ‘英辞郎ビューア’ に登録していました。

もちろん正しく動作しません。ところが ‘全文検索‘ は利用できます。

ソースも公開されているので、なんとかならないかと挑戦してみました。綺麗なソースなので、すぐに問題の箇所を発見しました。

辞書データで単語の先頭に ‘■’ 文字が付いているようですが、pdic-conv-0.1.tar.gz で作成した辞書データには付いていないようです。( ‘PDIC Viewer‘ でテキスト形式に変換したデータも同様のようです。)

検索する単語の先頭に ‘■’ 文字 を追加している箇所を修正し、 ‘■’ 文字のチェックをしないように関数の引数を NO にすると正しく動作しました。

修正した ‘英辞郎ビューア’ を利用していたのですが、Hatena Diary に記入しようと思って、pdic-conv-0.1.tar.gz のダウンロード場所を検索すると pdic-conv-0.1e.tar.gz を見つけました。

もしやと思い辞書データを作成し、登録してみると正しく動作しました。結局、修正の必要性はなくなったのですが、’英辞郎ビューア’ のソースを見て大変勉強になりました。

辞書データを Shift JIS のバイナリにして単語を検索する方法、検索アルゴリズムは大変参考になりました。スレッドについては私はよく理解していないので興味深かったです。それにしても、綺麗なソースですね。私の公開しているソースは本当に汚い。恥ずかしいですね。

4. Spotlight の暴走

いろいろ試行錯誤している時に動作が鈍くなり、アクティブモニタで確認すると mds というプロセスが CPU を占有しています。

初めは Spotlight がインデックスファイルを作成しているのかと思ったのですが、数時間しても CPU を占有しています。そこで Google で検索してみました。

【コラム】OS X ハッキング! 第180回 Spotlightトラブル対策室 (MYCOMジャーナル)
http://journal.mycom.co.jp/column/osx/180/

を参考に

~/Library/Preferences/com.apple.japaneseAnalysys/AppleContextualKKC.index/AdaptiveMap
~/Library/Preferences/com.apple.japaneseAnalysys/AppleContextualKKC.index/inputHistory.plis

の2つのファイルを削除し、ターミナル上で

sudo mdutil -E

を実行しました。1,2時間経つと mds の CPU 占有率も低下し、安定しました。(私の環境は iMac G5Mac OS X Tiger 10.4.9 です。)

ソースコードリーディングから学ぶ Javaの設計と実装

ソースコードリーディングから学ぶ Javaの設計と実装

自作ソフトの設計に役に立つのではと思い購入しました。
JavaについてはJavaアプレットが流行した時に勉強し始めました。それから数冊読んだ記憶があります。

第4章 Web アプリケーションフレームワーク Struts

Ruby on Rails入門-優しいRailsの育て方  asin:4798013951
ライド・オン・Rails Ruby on Railsを徹底攻略  asin:4797335750

のプログラム経験が役に立ちました。

第7章 テンプレートエンジン Jakarta Velocity を理解するのには

コンパイラ構成法  asin:4320029224
スモールコンパイラの制作で学ぶプログラムのしくみ  asin:4774121770
いまどきのプログラム言語の作り方  asin:4839919232

などで学んだ字句解析、構文解析が役に立ちました。

全般的にデザインパターンの確認に

Java言語で学ぶデザインパターン入門  asin:4797316462

を使いました。

第7章まで読み終えましたが、知識が豊富なほど深く理解できると思います。私は紹介されているフレームワークやソフトウェアを利用した経験がありません。経験があればもっと理解しやすかったと思います。

HelloKernel.kext、HelloIOKit.kext

Framework Programming Guide
http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/index.html

以前[ id:hatenadiary:20070205 ] にも書いた Framework Programming Guide を読み終えました。まだ完全には理解していませんが、今度は無謀にもデバイスドライバのドキュメントに挑戦してみました。

まず最初に

Getting Started with Hardware and Drivers: Getting Started with Hardware & Drivers
http://developer.apple.com/referencelibrary/GettingStarted/GS_HardwareDrivers/index.html

を読みました。ここで紹介されていた

I/O Kit Fundamentals
http://developer.apple.com/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/index.html#//apple_ref/doc/uid/TP0000011

を読み始めたのですが、理解しづらいので Getting Started with Hardware and Drivers で紹介されていた下記 URL を参考にデバイスドライバのサンプル Hello Kernel、Hello IOKit を作成してみました。

Kernel Extension Concepts
http://developer.apple.com/documentation/Darwin/Conceptual/KEXTConcept/index.html

ターミナルでコマンド操作を理解していて、Xcode でプログラム経験があれば、何の問題もなく Hello Kernel、Hello IOKit を作成できると思います。

下記に表されているのが、実際にドライバをそれぞれ読み込んで kextstat を使って表示した状態です。

~ yoshiaki$kextstat
Index Refs Address    Size       Wired      Name (Version) <Linked Against>
99    1 0xa58000   0x42000    0x41000    com.apple.driver.AppleOnboardAudio (2.5.6b5) <98 71 29 11>
101    0 0xb39000   0x6000     0x5000     com.apple.driver.AppleOnyxAudio (2.5.6b5) <99 71 11>
103    0 0x9b8000   0xb000     0xa000     com.apple.iokit.IOBluetoothSerialManager (1.7.8f2) <93 11>
104    0 0x302b9000 0x2000     0x1000     com.MyTutorial.kext.HelloKernel (1.0.0d1) <11>
105    0 0x302c3000 0x3000     0x2000     com.MyTutorial.driver.HelloIOKit (1.0.0d1) <11>
Kernel Extension Concepts: Hello Debugger: Debugging a Device Driver With GDB
http://developer.apple.com/documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptDebugger/hello_debugger.html#//apple_ref/doc/uid/20002367

Kernel Extension Concepts: Hello Debugger: Debugging a Device Driver With GDB を試してみたかったのですが、デバイスドライバGDB で Debug する環境がありませんでした。

Kernel Extension Concepts: Packaging Your KEXT for Distribution and Installation
http://developer.apple.com/documentation/Darwin/Conceptual/KEXTConcept/KEXTConceptPackaging/packaging_kext.html#//apple_ref/doc/uid/20002368

Kernel Extension Concepts: Packaging Your KEXT for Distribution and Installation を参考に Hello IOKit を PackageMaker を使って、パッケージ (HelloIOKit.pkg) にしてみました。

PackageMaker の利用は難しいものとばかり思っていたのですが、以外と簡単で驚きました。xshogi.app に利用してみたいですね!

HelloIOKit.pkg をインストールし再起動した後(起動に少し時間がかかりました。)、 kextstat で表示した結果が次の通りです。

~ yoshiaki$kextstat
Index Refs Address    Size       Wired      Name (Version) <Linked Against>
96    0 0x30d61000 0xa000     0x9000     com.apple.iokit.IOFireWireIP (1.3.4) <37 25 6 5 4 3 2>
97    0 0x30d6b000 0x5000     0x4000     com.apple.driver.InternalModemSupport (2.3.6) <89 29 11>
98    0 0x30d70000 0x3000     0x2000     com.MyTutorial.driver.HelloIOKit (1.0.0d1) <11>
99    0 0x30d73000 0xd000     0xc000     com.apple.driver.AppleTexasAudio (2.5.6b5) <87 86 85 84 11>
101    1 0x30d8c000 0x2b000    0x2a000    com.apple.driver.AppleDBDMAAudio (2.5.6b5) <84 11>
102    1 0x32559000 0x42000    0x41000    com.apple.driver.AppleOnboardAudio (2.5.6b5) <101 84 29 11>
103    0 0x30db7000 0x6000     0x5000     com.apple.driver.AppleOnyxAudio (2.5.6b5) <102 84 11>
104    0 0x3270a000 0xb000     0xa000     com.apple.iokit.IOBluetoothSerialManager (1.7.8f2) <89 11>

Hello IOKit のアンインストールするシェルスクリプトも作成しました。基本的には

kextunload HelloIOKit.kext
rm -R /System/Library/Extensions/HelloIOKit.kext
rm -R /Library/Receipts/HelloIOKit.pkg

を実行しているだけです。この辺はあまり詳しくないので注意して実行してください。