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