[Anthy-dev 1354] Re: 今後の開発予定

アーカイブの一覧に戻る

YamaKen yamak****@bp*****
2004年 11月 10日 (水) 19:07:30 JST


ヤマケンです。custom APIの改訂について返信します。

At Wed, 3 Nov 2004 09:59:20 +0900,
mover****@hct***** wrote:
> > YamaKen <yamak****@bp*****> wrote:
> > >   property.scmの件が片付き次第以下の方針に基づいて対応する予定で
> > >   す。足永さんの方で何か意見や作業予定がある場合は早めにお知らせ
> > >   ください。
> >
> > インターフェースを十分にシンプルなものにしたい、という点だけです。
> > 使用側には
> >
> >   * 値のsetter/getter
> >   * group,symbolリストのgetter (C側ではschemeを意識させない事)
> >   * コールバックのsetter(通知の辺りの構造はどうなるのか分かりませんが)
> >
> > だけを見せるというのが大まかなイメージです。

「Schemeを意識させない」事は実現するつもりです。言い換えると、
uim_scm_*()とuim_lispは全廃するつもりです。

また、custom variable及びgroupに対する各種属性取得用関数も廃止し
て、以下のような構造体に属性を収めて扱うつもりです。これに対する
意見はありますか?

union uim_custom_value {
  int as_bool;
  int as_int;
  char *as_str;
  char *as_pathname;
  char *as_symbol;
  char *as_key;
};

struct uim_custom {
  int type;  /* UCustomType */
  char *symbol;
  char *label;
  char *desc;
  union uim_custom_value value;
  union uim_custom_value default_value;
  union {
    struct {
      int min, max;
    } as_int;

    struct {
      char *regex;
    } as_str;

    struct {
      char **valid_symbols;
    } as_symbol;
  } range;
};

struct uim_custom_group {
  char *symbol;
  char *label;
  char *desc;
};

> 重要だと思います。個人的なイメージとしては↓のような感じ。
> 
> >   * 値のsetter/getter
> uim_custom_read_string("anthy-on-key?")
> uim_custom_write_string("anthy-on-key?", "\"<Control>j\" \"<Control>J\"");
> 
> のようにRead&WriteをベースにしたAPI。

元々custom APIはsetter/getterベースのAPIです。以下の2関数が
get/setに対応します。

uim_lisp uim_custom_value(uim_lisp custom_sym);
void     uim_custom_set(uim_lisp custom_sym, uim_lisp custom_val);

この部分について足永さんが問題にしているのは値の授受にuim_lispを
使う事だけだと思いますが、kzkさんの意見は文字列ベースで値の受渡
しを行うべきという主張も含んでますか?

私としては上記のような構造体でuim_lispを置き換えるつもりでいます。

> >   * group,symbolリストのgetter (C側ではschemeを意識させない事)
> これはhelper messageとして通知 or コールバック?

これはあるcustom valueの設定が他の項目のactivityに影響を与える場
合等ですね。例えば "Specify default IM" のチェックを外すと、
"Default input method"の選択メニューが無効化されるといった具合で
す。

> "group,symbolリスト"って動的に変わるモノでも無いので元となるテキストファ
> イルでも最初に用意してそれを読み込んでも良いと思うんですけどね。

定義の一元化ができなくなるのでそれはまずいです。コードにせよデー
タにせよ一元化は重要です。

それに、ユーザが自分でcustom variable(symbol)や「俺専用設定」と
いったgroupを定義する事も想定しているのでリストの動的生成は必須
です。

> どちらにせよscmをこねくり回す仕様はちょっと...

[Anthy-dev 1113]での表明が曖昧だったかもしれませんが、私自身は9 
月初め頃から「custom API利用者にSchemeの知識を要求するべきでない」
という意見に達しています。

なので、kzkさんの言動が遠回しな批判であればその必要は既に無いし、
custom variableの定義をSchemeで行うという仕組そのものに問題を感
じているならもっと具体的な意見が必要です。

単なる感想なら苦笑いしつつ「そうですね」と同意しておきます。

> >   * コールバックのsetter(通知の辺りの構造はどうなるのか分かりませんが)
> これは通知に何を使うかによりますね。

現在のcustom APIでは上述のcustom variable間の連携による変化を検
出するためにポーリングが必要になっていますが、良くない設計なので
見直すつもりです。

-------------------------------
ヤマケン yamak****@bp*****



Anthy-dev メーリングリストの案内
アーカイブの一覧に戻る