Tomotaka SUWA
t-suw****@users*****
2005年 10月 27日 (木) 22:50:35 JST
諏訪です。 今週末に 2.5 をリリースする予定でしたが、ちょろちょろ不具合が出ているの で延期します。 # ただし、直る保証もありませんが... で、不具合の修正がてら、抽象辞書クラスである Dictionary のインタフェー スも変更したいと思っています。主な変更点は以下の通りです。 (1) 共有辞書とユーザー辞書のインタフェースを分離 抽象 Dictionary クラスから補完や辞書登録、保存等のメソッドを削除し、 これらを定義する抽象 UserDictionary クラスを追加します。 (2) 命名ルールの変更 今までは「送りあり」→ WithOkuri、「送りなし」→ WithoutOkuri でし たが、それぞれ OkuriAri、OkuriNasi に改めます。 この結果、SKK 辞書ファイル中の「;; okuri-ari entries.」や「;; okuri-nasi entries.」と対応することになります。 (3) メソッドの追加 Dictionary クラスに、「送りあり/なし」それぞれのエントリ数を返すメ ソッドを追加します。 具体的にはこんな感じです。 ===================== ここから ==================== #pragma once #include <vector> class CppCFString; class OkuriganaEntry; // 抽象辞書クラス class Dictionary { public: virtual ~Dictionary() {}; // 辞書の情報 virtual int countOkuriAri() = 0; virtual int countOkuriNasi() = 0; // 検索 virtual std::vector<OkuriganaEntry> findOkuriAri(const CppCFString& query) = 0; virtual std::vector<CppCFString> findOkuriNasi(const CppCFString& query) = 0; }; // 抽象ユーザー辞書クラス class UserDictionary: public Dictionary { public: virtual ~UserDictionary() {}; // 見出し語の補完 virtual std::vector<CppCFString> findCompletions(const CppCFString& query) = 0; // 単語登録 virtual void registerOkuriAi(const CppCFString& index, const CppCFString& okuri, const CppCFString& kanji) = 0; virtual void registerOkuriNasi(const CppCFString& index, const CppCFString& kanji) = 0; // 単語削除 virtual void removeOkuriAri(const CppCFString& index, const CppCFString& okuri, const CppCFString& kanji) = 0; virtual void removeOkuriNasi(const CppCFString& index, const CppCFString& kanji) = 0; // 保存 virtual void save() = 0; }; ===================== ここまで ==================== SKKDictionary や DMDictionary は今まで通り、Dictionary クラスを継承しま す。これとは別に、ユーザー辞書を具現化する SKKUserDictionary クラスを追 加します。当然のことですが、SKKUserDictionary は UserDictionary を継承 することになります。 ざっとこんな変更を、二週間ぐらいでやってしまおうかと思うのですが、どう でしょうか? インタフェースに関する疑問質問叱咤激励その他のアイデアなど があれば、よろしくお願いします。 ロードマップをまとめると、 AquaSKK 2.4 リリース ↓ humble-ascii-mode-1.0 ↓ 細々としたバグ修正 ← 今ここ!!! ↓ Dictionary インタフェースの変更と関連する修正 ↓ AquaSKK 2.5 リリース(リリースタグ:release-2_5) ↓ SKK 関連辞書の改善(ブランチ:dictionary-renovation) ↓ AquaSKK 2.6 リリース(?) って感じですね。 阿部さんも辞書関連の拡張を希望されているので、抽象辞書クラスの変更は結 構インパクトがあると思います。 なので、インタフェースの変更について不明な点があれば、なんでも聞いて下 さい。ここは急がず、じっくり進めていくつもりです。 よろしくお願いします。 -- Tomotaka SUWA