[aquaskk-dev 22] Dictionary の変更について

Back to archive index

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



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