[aquaskk-dev 27] Re: Dictionary の変更について

Back to archive index

Tomotaka SUWA t-suw****@users*****
2005年 11月 9日 (水) 01:07:03 JST


諏訪です。

特にこれといった反対意見もなかったので、辞書のインタフェースを変更し、
関連する修正とあわせて commit しました。

主な変更点は以下の通りです。

(1) UserDictionary インタフェースを追加

    このインタフェースを継承したクラスとして、SKKUserDictionary を追加
    してあります。内部的な作りは SKKDictionary を引きずっていて、ほとん
    ど変わっていません。

(2) UserDicSaver の廃止

    以前は独立したスレッドで UserDicSaver が走り、10 分毎にユーザー辞書
    を保存していましたが、これを廃止しました。かわりに、
    SKKUserDictionary クラスで自動的に辞書を保存するロジックを組み込ん
    でいます。

    ユーザー辞書が保存されるタイミングは以下の二つになります。

    1. 辞書に対する更新が 50 回以上発生した時

       確定・単語登録・単語削除の発生回数が 50 回になる毎にファイルに書
       き出します。本家と同じ動作です。

    2. デストラクタ

       終了時には強制的にファイルに保存します。

(3) SKKServer に terminate メソッドを追加

    SKKServer クラスの後始末をする terminate メソッドを追加しました。
    Foundation の applicationShouldTerminate で呼ばれます。
    SKKServer.terminate() では SKKUserDictionary のデストラクタも呼ば
    れます。

(4) 辞書の扱いを抽象化

    SKKServer クラスでは Dictionary や UserDictionary のポインタを保持
    するようにしました。

    getBaseDic() や getKotoeriDic() は依然として具象クラスを返していま
    すが、将来的にはこれらのメソッドも廃止してより抽象度を高める予定で
    す。

(5) ことえり辞書の強化

    環境設定でことえり辞書を追加・削除した後に、リロードするコードを追
    加しました。また、DMDictionary をリファクタリングしてます。

(6) その他

    CppCFString で new[] と delete[] の対応を取るようにしました。これで
    かなりメモリリークが減っていると思います。また、いくつかのソースで
    適切なヘッダーをinclude するように修正しています。

ちょっと欲張ってしまったせいか、予定よりもかなり大掛かりな修正になって
しまいました。

また、ことえり辞書を本格的にテストしたのは今回が初めてだったのですが、
リファクタリング前から LAServer が結構な頻度でクラッシュしていました。
残念ながら、この不具合はまだ解決していません。

クラッシュログを見る限りでは、DMDictionary::findRecord のどこかにバグが
潜んでいると思われます。

ということで、引き続きテストを続けます。

-- Tomotaka SUWA



aquaskk-dev メーリングリストの案内
Back to archive index