本文書では『かんな』Version 1.2 以降の変更点について時間をさかのぼりな
がら説明いたします。

1. 『かんな』Version 3.2 におけるパッチ

1.1 パッチレベル 1 での修正

  ・kinput2 で記号の連続入力に対応するための修正。
  ・サンプルのカスタマイズファイルの修正。
    - skk.canna を kinput2 で使えるようにした。
    - tut.canna で TUT 記号が入れられるようにした。
  ・Imakefile の修正。
    - X11R5,X11R6 ともに対応できるようにした。
    - INSTALLFLAGS を抜いた。
  ・ドキュメント用 README の修正。
  ・ドキュメントの修正。\tt の問題。
  ・いくつかの単語の品詞の修正。
  ・number.t がインストールされるようにした。
  ・Sparc の cc で warning が出たのを修正した。
  ・その他細かい修正。


2. 『かんな』Version 3.2 における変更点

『かんな』Version 3.2 では『かんな』Version 3.1 に対して以下に示すよう
な機能拡張を行っています。

 (1) グループ辞書のサポート
 (2) 辞書の同期処理のサポート
 (3) 分野別学習ファイルのサポート
 (4) 辞書コピーの改善
 (5) 辞書のアクセス権の設定
 (6) 接続クライアント数の拡大
 (7) バイナリ辞書からの単語削除のサポート
 (8) ユーザインタフェースの改善

2.1 かな漢字変換

 (1) グループ辞書のサポート

   辞書をコピーしなくても、グループ ID(gid) の同じユーザ間では複数のユー
   ザで同一の辞書を使用できるようになりました。

 (2) 辞書の同期処理のサポート

   辞書ファイルへの同期処理を追加しました。これにより、カスタマイズす
   ることによって、単語登録/削除時に辞書をメモリ上の辞書と同期できるよ
   うになりました。

 (3) 分野別学習ファイルのサポート

   一つの辞書に対し複数の学習情報ファイルが扱えるようになり、分野ごと
   に学習情報を切替えることができるようになりました。

 (4) 辞書コピーの改善

   辞書コピー専用の関数を作成し、辞書のコピーが速くなりました。また、
   学習ファイルについても、バイナリ辞書のコピーという形で個人別学習ファ
   イルとして使用できます。

 (5) 辞書のアクセス権の設定

   辞書の READ/WRITE 権を設定できるようにしました。

 (6) 空白文字を含む単語の登録・削除

   空白文字を含む読みや候補を登録・削除できるようになりました。

 (7) 接続クライアント数の拡大

   システムの資源(メモリ等)が許す限り cannaserver にクライアントが接続
   できるようにしました。

 (8) バイナリ辞書からの単語削除のサポート

   バイナリ辞書からの単語の削除が可能になりました(α版では未サポート)。

2.2 ユーザインタフェース

 (1) 逐次自動変換および連文節変換部の統合

   『かんな』Version 2.1 において、文節伸縮モードがサポートされました
   が、この機能が使用できるのは連文節変換時のみでした(Version 1.2 にお
   ける変更点 参照)。この機能が逐次自動変換時にも使用できるようにしま
   した(α版では未サポート)。

 (2) 編集モード時の処理の変更

   編集モードの処理が変更になり、編集モードがなくなりました。かわりに
   読みモード、単候補モード、字種モードの混在により処理されるようにな
   りました。

 (3) メニューのカスタマイズ化

   拡張メニューがカスタマイズできるようになりました。

 (4) 記号入力時の操作の改良

   記号を連続して入力できるようにしました。

 (5) 新キーワードの導入

   新キーワードが導入され、連文節変換時に英数モードで空白文字の入力時
   に変換が行われないようになりました。また、逐次自動変換時においても、
   句読点の入力時に変換が起動されるようになっている場合、英数モードで
   は句読点を入力しても変換が行われないようになりました。

 (6) 文法辞書の指定

   ユーザが自由に文法辞書を変えられるようになりました。

 (7) 辞書引き順の明確化

   カスタマイズファイルに、優先して引きたい順に辞書を指定できるように
   なりました。

 (8) boiled-egg 的入力方法のサポート

   あるタイミングで一括してローマ字かな変換/かな漢字変換を行うことがで
   きるようになりました。

 (9) ローマ字かな変換優先機能の追加

   ローマ字かな変換を優先することができるようになりました。


3. 『かんな』Version 3.1 における変更点

『かんな』Version 3.1 では『かんな』Version 2.2 に対して以下に示すよう
な機能拡張を行っています。

 (1) 文節長学習・単語長学習対応

   文節長学習・単語長学習の結果をファイルに保管するようになり、翌日に
   なってもそれまでの学習結果が反映されるようになりました。

 (2) 辞書形式の変更

   4Kbyte 単位でアクセスするようになり、アクセス効率および仮想記憶効率
   が上がりました。また、辞書が小さくなりました。


4. 『かんな』Version 2.2 におけるパッチ

4.1 パッチレベル４での修正

 ・Mule を使っている時に接続がきれたり、立ち上げ時に辞書のマウントに失
   敗することがあった。この問題を直した。
 ・パッチ２ で cannaserver にバグを入れていた。具体的には文節伸ばし縮め
   を行った時に、余計なデータをクライアントに返していた。これを直した。
 ・addwords などでタブをうまく処理していなかったことの修正。
 ・単語登録時に候補を入れて確定した後 romaji 機能を使うと core dump す
   ることがあった。これを修正。
 ・辞書の若干の修正。
 ・jdvi2kps で epsbox スタイルを使う人のための注意を入れた。

4.2 パッチレベル３での修正

 ・パッチ２で入れてしまった以下の問題を解決
  - iroha.t のコンパイルができなくなっていた。
  - rename() を、ポータビリティ向上のため link/unlink で置き換えたが、
    置き換え方に一部間違いがあった。
 ・サービス番号のデフォルト値を用いる時に Little Endian マシンでの値の
   設定が間違っていた。 
 ・一般の接尾語辞書 suffix.t を消し、数関係の接尾語辞書 number.t を入
   れた。

4.3 パッチレベル２での修正

 ・DEC αで動作するようにした。今までも大体動いていたが、cannaserver 
   だけはプロトコル処理部に sizeof(long)==sizeof(int)==4 と仮定してい
   る部分があってうまくなかった。これを直した。
 ・TUT 入力のための tut.canna および tut.kpdef をサポート。
 ・ヘッダの C++ 対応(つもり)。
 ・ドキュメントの整備(ASCII TeX への対応、ディレクトリの記述が 
   Canna.conf にしたがうようにした、など)。
 ・ライブラリのマニュアルページを doc/man/lib から lib/canna に移した。
 ・doc/man/guide/tex/texindex の動作が awk に依存していたので C で書き
   直し名前も変更し cannaindex とした。
 ・rename() を使っている部分があったので link()/unlink() で書き換えた。
   rename() を持たないシステムへの対応。
 ・Purify した。
 ・狩野氏による、文法関連の unofficial patch の反映。(patches.49 まで)
 ・一部のマシンで make canna 時に辞書コンパイルのところで syntax error 
   が出る件を修正。
 ・その他細かいバグ修正。

4.4 パッチレベル１での修正

 ・sj3serv にも接続できるようにした。
 ・BSD386 などで見られる、プロトコルエラーを修正した。
 ・linux に対応した。
 ・ユーザインストール時に chown で fail する件に対処した。
 ・cannaserver での free 忘れ/メモリ初期化忘れの修正。
 ・マニュアルを作る時にディレクトリ表記をインストール時の指定に合わせ
   るようにした。
 ・canuum のベースを Wnn4.108 から Wnn4.109 に変えた。
 ・canuum の PTY の最大値を大きくした。
 ・mergeword の引数にファイルが指定できるようにした。また、splitword 
   に引数を与えない時に標準入力を見るようにした。
 ・いくつかの文法の修正。
 ・その他細かいバグの修正。


5. 『かんな』Version 2.2 における変更点

『かんな』Version 2.1 から『かんな』Version 2.2 では以下のことが追加
されました。

 (1) エンジンの切り替え

   かな漢字変換エンジンを cannaserver(irohaserver) と Wnn の jserver 
   との間で自由に切り替えることができるようになりました。

 (2) マーク

   字種変換などの範囲をマークとカーソルで指定できるようにしました。

これらについては参照できるドキュメントがほとんど存在しませんので、こ
こでちょっと説明します。詳しい説明はもうしばらくお待ちください。

(1) エンジンの切り替え

  エンジンの切り替えはダイナミックローディング(dlopenなど)を使って行っ
  ています。したがって、ダイナミックローディングを利用できない OS では
  使えません(実はオブジェクトサイズが大きくなっても良いのであればなん
  とでもできるのですが)。ロードされるライブラリは libRKC.so (かんな) 
  か libRKWnn.so (Wnn) です。

  β版の Makefile (Imakefile) では Shared Library のことはあまり考慮し
  ていないのでエンジンの切り替えを行うには人手での Makefile の書き換え
  が必要になります。

  libRKWnn.so はβ版のソース(lib/RKWnn)に加えて、Wnn の libwnn.a と 
  kinput2 の jclib.o jilib.o があれば作成できます。以後の版で Makefile 
  を提供する予定ですが、とりあえずやってみたい人は doc/misc/engine.tx 
  を見てトライしてください。

(2) マーク

  マークを打つのは C-<space> です。今までは C-n などで字種変換をすると
  入力中の文字全てが字種変換されていましたが、Version 2.2 では 
  C-<space> が打たれたり、一度字種変換がされたりするとマークが設定され、
  そこから後ろだけが字種変換されます。

  《例》

   fairu C-n a C-p → V1.2  ファイルa (「ファイル」の部分が確定される)
                      V2.1  fairua
                      V2.2  ファイルa (「ファイル」の部分も読みのまま)


6. 『かんな』Version 2.1 における変更点

『かんな』Version 2.1 では『かんな』Version 1.2 に対して主に以下に示す
機能拡張を行っています。

 (1) 逐次自動変換方式の導入(サーバクライアント方式ではフリーソフト初)
 (2) 個人別頻度学習管理のサポート
 (3) EUCのG3文字のサポート
 (4) ユーザインタフェースの改善

これにともない、かな漢字変換辞書形式の変更、ローマ字かな変換テーブルの
形式の変更、カスタマイズファイル形式の変更を始めとする様々な変更が行わ
れました。詳しくは以下を参照してください。

6.1 かな漢字変換

 (1) 逐次自動変換サポート

  サーバクライアント方式としては初の逐次自動変換をサポートしました。従
  来のパーソナルコンピュータなどでは逐次自動変換の操作方法がぎこちない
  場合が多くありましたが、連文節変換でのユーザインタフェースを自然に拡
  張する形の操作法を提供しており、誰でも自然に逐次自動変換を利用するこ
  とが可能です。

 (2) 個人別頻度学習のサポート

  今までは同一の辞書を複数のユーザが使用しているときは最後に使用した人
  の学習情報によって他の人の学習情報が上書きされていましたが、メインの
  辞書とは別に学習情報ファイルをユーザ毎に分散させて持たせることにより
  頻度情報を各個人毎に管理することが可能になりました。

  今まで通り頻度情報を共有することもユーザ毎の設定により可能です。

 (3) EUCのG3文字のサポート

  JIS規格により補助漢字集合(JIS X0212)が制定されました。補助漢字集合は
  UNIX Internationalの日本語規約ではEUCのG3文字として取り扱うことが定
  められております。

  『かんな』Version 2.1では補助漢字集合を始めとしてG3領域に置かれるこ
  とが多い外字等をサポートできるようにEUCのG3文字をかな漢字変換の「読
  み」あるいは「候補」として利用できます。

 (4) 辞書形式の変更(バイナリ辞書)

  個人別頻度学習とEUCのG3文字のサポートに伴い辞書形式が変更されました
  (テキスト形式辞書に関しては以前のままです)。

  旧形式の辞書を『かんな』Version 2.1でも活用したいかたのために旧形式
  辞書から新形式辞書へのコンバータツールもサポートしています。

6.2 ローマ字かな変換

 (1)「ん」の入力のためのデフォルトの変更

  従来「あんない」「せんい」などの入力を行う時に「annai」「sen'i」など
  のような「n」一文字が「ん」に対応するものをデフォルトとしていました。
  もちろん従来からカスタマイズの設定により変更することは可能でしたが、
  『かんな』Version 2.1 ではパソコン、ワープロで広く見られる「nn」を
  「ん」に対応させる規則をデフォルトに変えました。これにより「あんない」
  「せんい」などの入力のしかたは以下のようになります。

   ┌────┬─────┬───────────┐   
   │        │   従来   │『かんな』Version 2.1 │
   ├────┼─────┼───────────┤
   │あんない│   annai  │      annnai          │
   ├────┼─────┼───────────┤
   │ せんい │   sen'i  │      senni           │
   │        │   semni  │      sen'i           │
   │        │          │      semni           │
   ├────┼─────┼───────────┤
   │ べんり │   benri  │      benri           │
   └────┴─────┴───────────┘

 (2)ローマ字かな変換テーブルの形式の変更

  ローマ字かな変換テーブルのテキスト形式およびバイナリ形式を変更しまし
  た。ローマ字かな変換規則の記述の際に中間結果を記述する３番目フィール
  ドが設けられ柔軟な規則が記述できるようになりました。

  以前作成したローマ字かな変換テーブルに関しても『かんな』Version 2.1 
  で利用することが可能です(バイナリ形式、テキスト形式両方とも)。


 (3)複数のローマ字かな変換テーブルの切り替え可能

  複数のローマ字かな変換テーブルを登録しておいて、使用時にそれらを切り
  替えることが可能となりました。

 (4)多候補シンボル定義が可能

  「.」(ピリオド)や「,」(コンマ)を始めとして全てのキーに対して複数の記
  号を対応させて使用時に切り替えることが可能となりました。例えば、以下
  のような対応が可能です。

   ┌───┬──────────────┐
   │ 入力 │ ローマ字かな変換結果       │
   ├───┼──────────────┤
   │  .   │   。 または ．             │
   ├───┼──────────────┤
   │  ,   │   、または ，              │
   ├───┼──────────────┤
   │  [   │  「、『、［、〔 または [   │
   ├───┼──────────────┤
   │  ]   │  」、』、］、〕 または ]   │
   └───┴──────────────┘

  切り替えはかな漢字変換の候補選択と同様の操作で行えます。また、複数の
  切り替えをリンクして行うことも可能です。

6.3 日本語入力操作

 (1)モード表示の変更

  逐次自動変換モードの導入に伴ってモード表示文字列を見直しました。

   ・「確」の領域の削除

    モード表示の左側に設けられていた、確定入力を表す「確」を表示する領
    域が削除されました。

    確定モードはモード表示を取り囲む括弧の形で表現されます。

   ・アルファベット入力モードのモード表示が 「」(空文字列)だったものが 
     「　　　」(空白文字列)に変更されました。(見た目には同じです)

 (2)文字種ベース変更の削除

  読みを入力している状態で C-i および C-o を押した時に文字種ベースの変
  更が行われるようになっていましたが、誤操作が多いのでオプションとしま
  した。

 (3)再初期化の削除

  ユーティリティメニューにてカスタマイズファイルの再読み込みを行いかな
  漢字変換を再初期化するメニューを提供していましたが、アプリケーション
  プログラムとの間に設定のずれを生じさせる可能性があるので『かんな』
  Version 2.1 ではサポートを取り止めました。

  再初期化に関してはアプリケーションプログラムが提供している機能によっ
  てのみ行えます(例えば『かんな』版 Nemacs の M-x canna-reset)。

 (4)候補番号の表示

  候補一覧を出している際に、現在カーソルが指している候補が全体の候補の
  何番目かを示す表示が行われるようになりました。

 (5)文節伸縮モード

  文節を伸ばし縮めするもうひとつの方法として一太郎などでよく見られる方
  法もオプションとしてサポートするようにしました。

  その場合、文節伸ばし縮め操作を行うとカレント文節以降が一旦読みに戻さ
  れ、読みの上でカーソルが移動し、文節長を調整することになります。文節
  長が正しくなった時点で変換キーを押すとカーソルがある部分までをひとつ
  の文節として変換が行われます。

 (6)大文字小文字変換

  今までは字種変換時に字種が英数字になっていたときのみ大文字小文字変換
  が行われていましたが、かなが表示されている時に大文字小文字変換キーを
  押すと一旦英数字に変換した後大文字小文字変換するようにしました。

 (7)バージョン情報、サーバ情報の表示

  ユーティリティメニューにて『かんな』のバージョンや接続しているサーバ
  に関する情報が取り出せるようになりました。

 (8)設定の変更

  逐次自動変換や学習に関して使用時にオン／オフを切り替えることが可能に
  なりました。

6.4 カスタマイズファイル

 (1)カスタマイズファイル名の変更

  カスタマイズファイルのファイル名が .iroha から .canna に変更になりま
  した。また、カスタマイズファイルの記述形式もLispシンタックスを使った
  ものに変更になりました。既存の .iroha を新形式に変更するためのコマン
  ドも提供します。

  既存のシンタックスは拡張性が乏しかったためバージョンアップ時に新しい
  カスタマイズ記述を組み入れると古いアプリケーションプログラムが回復不
  能なシンタックスエラーとなっていました。新形式では一部理解できない部
  分があっても読み飛ばして次の設定を行うことが可能です。

  また、新形式では現在の『かんな』のバージョン、接続されているサーバの
  バージョンなどを問い合わせることが可能であり、それらのバージョンによっ
  て条件的にカスタマイズを行うことが可能です。

 (2)InitialMode の削除

  今までは InitialMode によってアプリケーション起動時のかな漢字変換の
  モードを設定することが可能でしたが、『かんな』Version 2.1 ではこれに
  代わって initialize-function という機能を使ってアプリケーション起動
  時の状態を設定することが可能です。

  initialize-function では「一度ある状態に移行してからそこでの設定を変
  更してまた別の状態に戻る」などの処理が行えます。

  例えば、initialize-function にて「一度日本語入力モードに移行し、文字
  ベースをカタカナに切り替えた後再びアルファベットモードに戻る」という
  処理を行っておけば、C-oなどで日本語モードに移った時にカタカナベース
  の日本語入力が行えるようになります。

 (3)実行可能機能の増加

  文字ベースに関する機能が増えた他、逐次自動変換関連、新しい文節伸ばし
  縮め操作関連でキーに割り当てることができる機能が増えました。

 (4)記号定義

  ローマ字かな変換の補助としてピリオドやコンマに対して複数のローマ字か
  な変換を定義する機能が追加されました。ユーザの好みで任意のキーに対し
  て任意の記号を割り当てることが可能です。

 (5)確定モード等の削除

  確定モード等のモードがなくなりました。それに代わって以下の２つのうち
  のいずれかで代替することができます。


   (a) 読み入力時の属性を変更する以下の機能を組み合わせて入力する文字
       種や状態を変更します。

    名称                          機能
    base-hiragana                 文字ベースをひらがなに変える
    base-katakana                 文字ベースをカタカナに変える
    base-eisu                     文字ベースを英数に変える
    base-kana                     文字ベースをひらがなかカタカナに変える
    base-zenkaku                  文字ベースを全角に変える
    base-hankaku                  文字ベースを半角に変える
    base-kakutei                  確定入力に入る
    base-henkan                   確定入力を抜ける
    base-hiragana-katakana-toggle ひらがなとカタカナをトグルする
    base-kana-eisu-toggle         かなと英数をトグルする
    base-zenkaku-hankaku-toggle   全角と半角をトグルする
    base-kakutei-henkan-toggle    確定入力かどうかをトグルする
    base-rotate-forward           文字ベースを順送りに変更してゆく
    base-rotate-backward          文字ベースを逆送りに変更してゆく


   (b) モード定義を使う

     以下で説明するモード定義を使い新たにモードを定義します。

 (6)モード定義

  ユーザが自由にモードを定義することが可能となりました。

  モードの定義に伴い、そのモード固有のローマ字かな変換テーブル、モード
  表示文字列、文字ベースの状態などが選択できます。

  これにより疑似かな入力モードやＴコード入力モードなどが定義できます。

  またユーザ定義モードだけに対して有効なキーの割り当てを行うことが可能
  です。

 (7)記号モードでのカスタマイズ

  『かんな』Version 1.1 から Version 1.2 へとバージョンアップされた時
  に記号モードだけに有効である限定カスタマイズが行えなくなりましたが、
  元に戻しました。

  したがって、記号モード固有のカスタマイズを行うことが可能となります。

6.5 アプリケーションインタフェース

アプリケーションインタフェースに関しては以下の変更があります。

 (1)ワイドキャラクタインタフェースのサポート

  ワイドキャラクタベースのかな漢字変換ライブラリをサポートします。これ
  により日本語を取り扱い易いワイドキャラクタだけを使って日本語関連のア
  プリケーションプログラムを作成することが可能です。

 (2)KC_PARSE の変更

  KC_PARSE によってアプリケーションプログラム独自にカスタマイズを設定
  することが可能でしたが、カスタマイズファイルの形式の変更に伴い 
  KC_PARSE で与える文字列も変更になります。

 (3)IROHA_ から CANNA_ へ

  モードや機能、キーなどを表すマクロ名としてIROHA_××××がありました
  が、このマクロ名がCANNA_××××に変更されました。

  ただし、コンパイル時に -DIROHA_BC を指定することにより旧マクロ名を使っ
  ていてもコンパイルが可能です。

 (4)モード番号、機能番号
 
  モード番号(CANNA_MODE_××××)、機能番号(CANNA_FN_××××)の番号が
  一部入れ替わりました。これらの番号をマクロ名でのみ扱っている場合には
  問題ありませんが、直接番号をプログラムに記述している場合には修正が必
  要です。

 (5)libiroha から libcanna へ

  かな漢字変換を行うアプリケーションプログラムがリンクするライブラリが 
  libiroha から libcanna に変更になりました。

6.6 コマンドの変更

 (1)コマンドの追加

  かな漢字変換辞書やローマ字かな変換テーブルの新形式に対応するためのユー
  ティリティツールを始めとしていくつかのコマンドが追加されました。

    追加コマンド   概要
    ------------+------------------------------------------------------
    canvert        カスタマイズファイル、かな漢字変換辞書等の形式の変換
    addwords       一括単語登録
    delwords       一括単語削除

6.7 ファイルの位置

  『かんな』の名称が決定したことに伴い今まで iroha が付いたディレクトリ
  に存在していたファイルを canna が付くディレクトリに移動しました。

 (1)辞書関連

  ローマ字かな変換ファイルやかな漢字変換ファイルは $(irohaLibDir)/dic 
  に移動、その他 $(irohaLibDir) にあったものは $(cannaLibDir) に移動し
  ました。

 (2)ログファイル、ロックファイル

  エラーログやロックファイルは $(irohaSpoolDir) から $(cannaSpoolDir) 
  に移動しました。

 (3)ヘッダファイル

  ヘッダファイルは $(irohaIncDir) から $(cannaIncDir) に変更になりました。

 (4)UNIX通信用ファイル

  かな漢字変換サーバとクライアントがUNIXドメインで通信するための
  ファイル(/tmp/.iroha_unix/IROHA)に関しては旧クライアントとの通信に関す
  る互換性確保のためファイル名が変わりません。

以上

/* Copyright 1994 NEC Corporation, Tokyo, Japan.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without
 * fee, provided that the above copyright notice appear in all copies
 * and that both that copyright notice and this permission notice
 * appear in supporting documentation, and that the name of NEC
 * Corporation not be used in advertising or publicity pertaining to
 * distribution of the software without specific, written prior
 * permission.  NEC Corporation makes no representations about the
 * suitability of this software for any purpose.  It is provided "as
 * is" without express or implied warranty.
 *
 * NEC CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN 
 * NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 
 * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 
 * OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
 * PERFORMANCE OF THIS SOFTWARE. 
 */

($Id: CHANGES.jp,v 2.8 1994/08/08 03:02:34 misao Exp $)
