Info file: skk.info,    -*-Text-*-
produced by `texinfo-format-buffer'
from file `skk.texi'
using `texinfmt.el' version 2.37 of 24 May 1997.






File: skk.info, Node: デコレーション, Next: VIPとの併用, Prev: 辞書関連, Up: 便利な応用機能とユーザーオプション

デコレーション
==============

* Menu:

* 仮名文字のローマ字プレフィックスのエコー::  
* 入力モードを示すモードラインの文字列の変更::  
* 入力モードを示すカーソル色に関する設定::  
* ▼モードにおける変換候補のハイライト表示::  
* エラーなどの日本語表示::      



File: skk.info, Node: 仮名文字のローマ字プレフィックスのエコー, Next: 入力モードを示すモードラインの文字列の変更, Prev: デコレーション, Up: デコレーション

仮名文字のローマ字プレフィックスのエコー
----------------------------------------

`skk-echo' により仮名文字のローマ字プレフィックス (1) のエコーの有無を調
整できる。`skk-code' が `non-nil' であれば、仮名文字のローマ字プレフィッ
クスが入力時点で一旦カレントバッファに挿入され、続く母音の入力により、か
な文字に変換された時点でカレントバッファから消去される。


     t

     ------ Buffer: foo ------
     t
     ------ Buffer: foo ------

     a

     ------ Buffer: foo ------
     た
     ------ Buffer: foo ------

`skk-echo' の値を `nil' にすると、仮名文字のローマ字プレフィックスのエコ
ーは行なわれなくなる。上記の例では `t' がカレントバッファに挿入されるこ
とはなくなり、ローマ字1文字が完成する母音 `a' が入力される直前にいきなり
`た'の文字が挿入される。

--------- Footnotes ---------

(1)  *Note ローマ字プレフィックス: 辞書の形式.



File: skk.info, Node: 入力モードを示すモードラインの文字列の変更, Next: 入力モードを示すカーソル色に関する設定, Prev: 仮名文字のローマ字プレフィックスのエコー, Up: デコレーション

入力モードを示すモードラインの文字列の変更
------------------------------------------

下記の変数の値を変更することにより入力モードを示すモードラインの文字列を
変更することができる。


`skk-mode-string'
     アスキーモードを示す文字列。ディフォルト値は、"--SKK:"。

`skk-hirakana-mode-string'
     かなモードを示す文字列。ディフォルト値は、"--かな"。

`skk-katakana-mode-string'
     カナモードを示す文字列。ディフォルト値は、"--カナ"。

`skk-zenei-mode-string'
     全英モードを示す文字列。ディフォルト値は、"--全英"。




File: skk.info, Node: 入力モードを示すカーソル色に関する設定, Next: ▼モードにおける変換候補のハイライト表示, Prev: 入力モードを示すモードラインの文字列の変更, Up: デコレーション

入力モードを示すカーソル色に関する設定
--------------------------------------

カラーディスプレイを使用し、カラー表示をサポートしているWindow System下
で対応するEmacsを使用している場合には、入力モードの変更に合わせてカーソ
ル色が変更される (1) 。この機能を使用したくない場合は、
`skk-use-color-cursor' の値を `nil' にする。

`skk-use-color-cursor' の値が `non-nil' の場合は、入力モードを示すカーソ
ル色は、下記の変数によって決定されるので、これらの変数の値を変更すること
により、カーソル色を変更することができる。


`skk-default-cursor-color'
     SKKモードがオフであることを示すカーソル色。カーソルのある該当フレー
     ムにおけるディフォルトのカーソル色が代入される。

`skk-kana-cursor-color'
     かなモードであることを示すカーソル色。ディフォルト値は、
     reverseVideoがoffのときは"coral4"onのときは"pink"。

`skk-katakana-cursor-color'
     カタカナモードであることを示すカーソル色。ディフォルト値は、
     reverseVideoがoffのときは"forestgreen"onのときは"green"。

`skk-zenkaku-cursor-color'
     全角英字モードを示すカーソル色。ディフォルト値は、"gold"。

`skk-ascii-cursor-color'
     アスキーモードを示すカーソル色。ディフォルト値は、reverseVideoがoff
     のときは"ivory4"onのときは"gray"。


カーソル色の変更の際、カラーマップ切れが起きた場合にはエラーメッセージを
表示し、ディフォルトのカーソル色を使う。このエラーメッセージの表示を止め
るには、`skk-report-set-cursor-error' の値を `nil' にする。

--------- Footnotes ---------

(1)  Emacs 18にはカーソル色の変更機能はない。また、
Emacs 19であっても、`-nw' オプションを指定してEmacsを起動した場合は、
この機能が使えない。



File: skk.info, Node: ▼モードにおける変換候補のハイライト表示, Next: エラーなどの日本語表示, Prev: 入力モードを示すカーソル色に関する設定, Up: デコレーション

▼モードにおける変換候補のハイライト表示
----------------------------------------

`skk-use-face' が `non-nil' の場合、`skk-henkan-face' に指定されたface属
性をもって変換候補をハイライト表示する。このハイライト表示はEmacsの
Overlaysの機能を使っている (1) 。`skk-henkan-face' のディフォルト値は、
`highlight' である。Emacs標準フェイスの `default', `modeline', `region',
`secondary-selection', `highlight', `underline', `bold', `italic',
`bold-italic' (2) の他、新たにfaceを作り、利用することも可能。

新たな face を作り指定するには skk-make-face を利用して、

     (skk-make-face 'DimGray/PeachPuff1)
     (setq skk-henkan-face 'DimGray/PeachPuff1)

のようにするのが手軽。この例では、foreroundがDimGrayで、backgroundが
PeachPuff1であるfaceを作り (3) 、このfaceをもって変換候補の部分に色名を
指定している。foregroundの色のみを変更するためのfaceを作りたい場合は、


     (skk-make-face 'RosyBrown1)

のようにする。foregroundとbackgroundの色指定だけでない凝ったfaceを作る場
合は、`skk-make-face'では対応できないので、Emacsの`hilit19.el'の
`hilit-lookup-face-create'などを利用する。色名については、X Windowに添付
されている `rgb.txt' を参照のこと。配色として参考になるものは、Mule-2.3
標準添付である `canna.el' の `canna:attribute-alist' などがある。

--------- Footnotes ---------

(1)  以前のバージョンではText
Propertiesを使用していたが、`egg.el', `canna.el',
`wnn-egg.el' を参考にしてOverlaysを使用するように変更した。Overlays
は、テキストの一部ではないので、Overlaysのかかったテキストから文字を切り
出してもコピーの対象にならないし、アンドゥ時も無視されるので、変換された
候補の表示を一時的に変更するにはText Propertiesよりも好都合なためである。
Emacs 18ではOverlaysが実装されていない。

(2) `default' 以外のface上で変換を行なっている場合は、変換により
faceを `default' に変更しても意味があろうが、通常はそのようなケース
は稀であるので、`default' faceを利用することはまずないであろう。

(3) この配色は私が日常使用しているお気に入りのものである。少なくとも表現
力乏しい私のノートパソコンの液晶では、過激な配色でなくやわらかい色に見え
るため、目の疲れも少ないので重宝しているが、他の方のディスプレイ上ではど
んな感じに映るのであろうか。ひょっとして恐ろしく趣味の悪い色に見えている
かと想像すると少し不安である。



File: skk.info, Node: エラーなどの日本語表示, Prev: ▼モードにおける変換候補のハイライト表示, Up: デコレーション

エラーなどの日本語表示
----------------------

ディフォルトでは、エラー・メッセージ・ミニバッファプロンプトを英語表示す
る。`skk-japanese-message-and-error' の値を `non-nil' にすることで、これ
を日本語で表示する。



File: skk.info, Node: VIPとの併用, Next: I-search関連, Prev: デコレーション, Up: 便利な応用機能とユーザーオプション

VIPとの併用
===========

`skk-use-vip' の値を `non-nil' にすることで、VIエミュレーションパッケー
ジであるVIPを併用することができる。*Note VIP: (vip)Top.  現時点では、正
式に対応しているVIPのバージョンは3.5 (1) のみである。しかもVIP 3.5は、
Emacs 18からEmacs 19へのバージョンアップに取り残されたままEmacs 19に添付
されており、Emacs 19ではそのままでは上手く動作しない。従い、現状では、
NemacsもしくはEmacs 18ベースのMule-1.xと `vip.el' 3.5という組み合わ
せでのみSKKを併用することができる。

SKKのディストリビューションに`vip.el' 3.5をEmacs 19ベースのMuleでとりあ
えず動かすためのパッチを添付している (2) 。VIPER対応までの間、VIエミュレ
ーションのEmacs19でSKKを動かしたいユーザーは一度お試しいただきたい。


将来のバージョンのSKKにおいてVIP 3.5の後継バージョンであるVIPER (3) の併
用が可能になるよう改良される予定である。

--------- Footnotes ---------

(1)  Mule-2.3 に標
準添付のもの。なおVIP 3.5は、その後VIP 4に引き継がれ、いくつかのマイナー
バージョンを経てVIP19, VIPERと発展している。Emacs 19に標準添付されている
のはVIPERである。ちなみにVIP3.5の作者は、SKKの作者でもある佐藤雅彦
<masahiko@kuis.kyoto-u.ac.jp> であるが、VIPの後継バージョンはいずれ
も別人によるものである。

(2) 本質的には、`mark' 関数の仕様が Emacs 18と19とでは違うので、こ
れに対応しさえすれば良いのだが、コードが簡略化できる個所には少し手を入れ
ていている。なお、VIPERではこれらの簡略化も含めて既に改良済みである。

(3) *Note VIPER: (viper)Top.



File: skk.info, Node: I-search関連, Next: skk-init-fileのバイトコンパイル, Prev: VIPとの併用, Up: 便利な応用機能とユーザーオプション

I-search関連
============

* Menu:

* 起動時の入力モードの指定::    
* 間に空白等を含む文字列の検索::  



File: skk.info, Node: 起動時の入力モードの指定, Next: 間に空白等を含む文字列の検索, Prev: I-search関連, Up: I-search関連

起動時の入力モードの指定
------------------------

`skk-isearch-start-mode' の値を指定することで、インクリメンタル・サーチ
を起動した元のバッファの入力モードにかかわらず、インクリメンタル・サーチ
の起動時の入力モードを指定することができる(但し、
`skk-isearch-use-previous-mode' の値は `nil' にしておく必要がある)。


`ascii'
     アスキーモード

`kana'
`hirakana'
     かなモード

`eiji'
     全英モード


一方 `skk-isearch-use-previous-mode' の値を `non-nil' にすることで、直前
のインクリメンタル・サーチでの入力モードを用いるよう指定することもできる。



File: skk.info, Node: 間に空白等を含む文字列の検索, Prev: 起動時の入力モードの指定, Up: I-search関連

間に空白等を含む文字列の検索
----------------------------

`検索'という文字列をインクリメンタル・サーチによりマッチさせたい場合に、
バッファが下記のような状態になっていることがある。

     -------- Buffer: foo --------
     この行末から始まる文字列を検
     索して下さい。
     -------- Buffer: foo --------

正規表現を用いたインクリメンタル・サーチ (1) を行なうことにより、上記の
ように文字列の間に `-', タブ文字、改行文字、復帰文字、 `^L' 等が含まれて
いてもインクリメンタル・サーチによりマッチさせることができる。


変数 `skk-isearch-whitespace-regexp' の値が、検索の対象となる文字列の連
続した日本語文字の間に挿入され、その結果が正規表現で表現され、検索の対象
となる。`skk-isearch-whitespace-regexp' のディフォルト値は

     "\\(\\s \\|[ \t\n\r\f]\\)*"

である。`skk-isearch-whitespace-regexp' の値を

     "\\(\\s \\|[ \t\n\r\f<>|]\\)*"

のようにすることで、文字列が `>>' や `|' 等で引用されており、文字間に引
用文字を含む場合であってもマッチするようにすることができる。

--------- Footnotes ---------

(1)  ディフォルトのキーバ
インドは `M-C-s' と `M-C-r'。



File: skk.info, Node: skk-init-fileのバイトコンパイル, Next: picture-modeとの併用, Prev: I-search関連, Up: 便利な応用機能とユーザーオプション

`skk-init-file' のバイトコンパイル
==================================

`skk-byte-compile-init-file' の値を `non-nil' にすることで、`skk-mode' 
起動時に `skk-init-file' (ディフォルト値は、`~/.skk'。) をチェックして、

  1. `skk-init-file' をバイトコンパイルしたファイルがないか、

  2. `skk-init-file' とそのバイトコンパイル済ファイルを比較して、前者の
     方が新しいとき

に `skk-init-file' を自動的にバイトコンパイルする。`nil' であれば、
`skk-init-file' とそのバイトコンパイル済みファイルを比較して 
`skk-init-file' の方が新しいときは、そのバイトコンパイル済ファイルを(誤
ってロードされることのないように)消す。

なお、`skk-byte-compile-init-file' は `skk-init-file' のロード前に参照さ
れるので、この変数の設定の変更を `skk-init-file' に書いても効果がない。
`~/.emacs' などを利用すること。



File: skk.info, Node: picture-modeとの併用, Next: サーバー関連, Prev: skk-init-fileのバイトコンパイル, Up: 便利な応用機能とユーザーオプション

`picture-mode' との併用
=======================

SKKモードを `picture-mode' において使用した場合は、下記の問題点があるが、
これについては、`picture-mode' の側の問題であるので、現在のところ、SKK側
では対処していない。

  1. SKKモードで全角文字を入力した場合に、BSで全角文字が消せないこと。現
     状では、backward 方向にある文字を消したい場合は、その文字にポイント
     を合わせ、`C-c C-d' で一文字づつ消すしか方法はない。

  2. `picture-movement-up' や `picture-movement-down' により上下に全角文
     字を挿入した場合にカラムがずれる場合があること。


いずれも `move-to-column-force' 関数の中で使用している `move-to-column' 
で全角文字を無視したカラム数が与えられたときにカーソル移動ができないこと
が原因である。



File: skk.info, Node: サーバー関連, Prev: picture-modeとの併用, Up: 便利な応用機能とユーザーオプション

サーバー関連
============

* Menu:

* skkservの起動オプション::     
* skk-server.elのオプション::   
* うまく起動できないときは::    
* サーバー起動後の辞書の再読み込み::  
* 限界・改良の余地::            



File: skk.info, Node: skkservの起動オプション, Next: skk-server.elのオプション, Prev: サーバー関連, Up: サーバー関連

`skkserv' の起動オプション
--------------------------

`skkserv' の起動時のオプションにより、ディフォルト辞書名の変更、ディバッ
グ・モードの指定などができる。オプションの指定方法は下記の通り。

     skkserv [-d] [-p NNNN] [JISHO]

また、各オプションの意味はそれぞれ下記の通り。


-D
     ディバッグ・モード。

-P NNNN
     通信用のポート番号として NNNN を使う。

JISHO
     JISHO を辞書として利用する。


オプションなしで起動すると、通常モード(ディバッグ・モードでない)で、サー
バのコンパイル時に指定した辞書とポートを利用する。`skkserv' は、サーバと
なるべき子プロセスを作った後、直ちに終了する。エラーがあっても何のメッセ
ージも出さない。

ディバッグ・モードで走らせると、`skkserv' はそのままforegroundで走り、メッ
セージを出力する。キーボードから割りこみをかけることもできる。

`skkserv' の起動はスーパーユーザが行う必要はない。



File: skk.info, Node: skk-server.elのオプション, Next: うまく起動できないときは, Prev: skkservの起動オプション, Up: サーバー関連

`skk-server.el'のオプション
---------------------------



`skk-servers-list'
     辞書サーバー毎の情報リスト。複数のマシーンで動いているサーバにアク
     セスできる場合には、以下のように、リストの各要素に順にホスト名、フ
     ルパスでのサーバー名、サーバーに渡す辞書名、サーバーが使用するポー
     ト番号を書き、設定をすることもできる。下記に例を示す。

          (setq skk-servers-list
                '(("mars" "/usr/local/soft/nemacs/etc/skkserv" nil nil)
                  ("venus" "/usr/local/nemacs/etc/skkserv" nil nil) ))


     この場合最初に指定したサーバにアクセスできなくなると、自動的に順次
     リストにある残りのサーバにアクセスするようになる。なおサーバーに渡
     す辞書およびサーバーが使用するポート番号で、サーバーをコンパイル時
     の値を使用する場合は `nil' を指定する。

`skk-report-server-response'
     `non-nil' であれば、変換時サーバーの送出する文字を受け取るまでに 
     `accept-process-output' を何回実行したかを報告する。

`skk-remote-shell-program'
     リモートシェルのプログラム名。ディフォルト値は下記の通り。

          (or (getenv "REMOTESHELL")
              (and (boundp 'remote-shell-program) remote-shell-program)
              (cond
               ((eq system-type 'berkeley-unix)
                (if (file-exists-p "/usr/ucb/rsh") "/usr/ucb/rsh" "/usr/bin/rsh") )
               ((eq system-type 'usg-unix-v)
                (if (file-exists-p "/usr/ucb/remsh") "/usr/ucb/remsh" "/bin/rsh"))
               ((eq system-type 'hpux) "/usr/bin/remsh")
               ((eq system-type 'EWS-UX/V) "/usr/ucb/remsh")
               ((eq system-type 'pcux) "/usr/bin/rcmd")
               (t "rsh") ))





File: skk.info, Node: うまく起動できないときは, Next: サーバー起動後の辞書の再読み込み, Prev: skk-server.elのオプション, Up: サーバー関連

うまく起動できないときは
------------------------

`skkserv' とうまく接続できないときは、

     % ps ax | grep skkserv

などとして `skkserv' が走っていることを確かめた上で、Emacsの 
`lisp-interaction-mode' (1) で以下のフォームを順次評価する。

     ;; network streamをopen。"foobar"の個所には `skkserv' を動かし
     ;; ているホスト名を書くこと。
     (open-network-stream "skkservd-debug" (current-buffer) "foobar" "skkserv")
     ;; 初期設定
     (cond ((fboundp 'set-process-kanji-code)
            (set-process-kanji-code (get-process "skkservd-debug") 0))
           ((fboundp 'set-process-coding-system)
            (set-process-coding-system
             (get-process "skkservd-debug") *euc-japan* *euc-japan* ))
           ((boundp 'kanji-fileio-code)
            (setq kanji-fileio-code 0) ))
     ;; 変換すべき文字列として `かんじ' を送信する。
     (process-send-string "skkservd-debug" "1かんじ ")
     ;; 成功すると、カレントバッファに、
     ;; 1/漢字/幹事/完治/完爾/寛治/感じ/
     ;; などとSKK-JISYO.Lに含まれる候補が挿入される。
     ;; 先頭の数字 `1' は `skkserv' が候補の検索に成功したことを示す。
     ;;serverをdisconnectする。
     (process-send-string "skkservd-debug" "0")

--------- Footnotes ---------

(1)  Emacsのディフォルトでは、
`*scratch*' バッファが `lisp-interaction-mode' になっている。



File: skk.info, Node: サーバー起動後の辞書の再読み込み, Next: 限界・改良の余地, Prev: うまく起動できないときは, Up: サーバー関連

サーバー起動後の辞書の再読み込み
--------------------------------

`skkserv' 起動後に `skkserv' の参照している辞書の内容を変更したい場合、
単純に `skkserv' のプロセスをkillしてしまうとその時に同じ `skkserv' を利
用してskkを使っているすべてのユーザに悪影響がある。

そこで `skkserv' を走らせたまま辞書を再読みこみする方法を付加した。なお、
辞書のファイル名を変更するときはできない。つまり、コンパイル時または起動
時に指定されたファイル名の位置に、新しい辞書を上書きする必要がある。


  1. 新しい辞書を `skkserv' の所定の場所に置く(`cp' の各引数は適当な文字
     列に直す)。

          % cp NEW-JISHO /usr/local/mule/etc/SKK-JISYO.L 

  2. `skkserv' のプロセス番号を求める。

          % ps ax | grep skkserv

  3. `skkserv' に辞書再読み込みを指定するシグナルを送る。

          % kill -INT NNNN

     ここで NNNN は上記で求めた `skkserv' のプロセス番号とする。なお、
     signalを送ることができるのはスーパーユーザのみ(個人で `skkserv' を
     起動した場合は、スーパーユーザまたは起動した人のみ)である。



なお、下記の点に注意すること。
   * 上記手順で1と3の間(辞書ファイルの中身が書きかわったのに、まだ 
     `skkserv' がそのことを知らないとき)では、`skkserv' は変な動作をする
     ことがある。特に、辞書のサイズを小さくしたときには死んでしまうかも
     しれない。

   * 動作は、SparcStation-2/SunOS 4.1.1上でのみテストした。signalの取り
     扱いが異なるマシン上では動作しない可能性がある。




File: skk.info, Node: 限界・改良の余地, Prev: サーバー起動後の辞書の再読み込み, Up: サーバー関連

限界・改良の余地
----------------

`skkserv' がディバッグ・モードでないときに合法的に殺す手段はない。killす
る。

一つの計算機の上で使用できる同じ番号のTCPソケットは、一つしか存在できな
い。従い標準ポート番号を使う `skkserv' も一つしか動かない。ディバッグや
テストの際に`skkserv'を殺してすぐに起動すると、ポートが使われている、と
いう趣旨のエラーが起きる。この場合は、少し待ってから再度起動する。

一つのサーバが受けつけられるクライアントの数の上限は、関数 
`getdtablesize' により決まる。もし上限を越えた数のクライアントがコネクト
要求をしてきた時はサーバは異常終了する。

本来のSKK辞書には, 見出し語の長さの上限はないが、`skkserv' では 512バイ
トに限っている(`skkserv.h' の BUFSIZE の値)。なお、変換文字列の長さに制
限はない。

辞書検索は、読みの第1文字目による場合分けを行った後は、線型探索を行なっ
ている。現在の状況ではこれで十分であるが、場合によってはより高速な探索方
法を検討する必要があるかもしれない。



File: skk.info, Node: 辞書ユーティリティプログラム, Next: 拡張アイディア, Prev: 便利な応用機能とユーザーオプション, Up: Top

辞書ユーティリティプログラム
****************************

SKK辞書に関するユーティリティプログラムには、Emacs Lisp, Perl, C の各言
語により書かれたものがある。

* Menu:

* Emacs Lispユーティリティプログラム::  
* Perlによるユーティリティプログラム::  
* Cによるユーティリティプログラム::  



File: skk.info, Node: Emacs Lispユーティリティプログラム, Next: Perlによるユーティリティプログラム, Prev: 辞書ユーティリティプログラム, Up: 辞書ユーティリティプログラム

Emacs Lispユーティリティプログラム
==================================

Emacsの中でコマンド `skk-merge', `skk-diff' により、二つの辞書をマージし
たり差分を計算することができる。

誤って貴重な辞書を破壊しないように、以下の作業は辞書をコピーしたものにつ
いて行うほうがよい。

* Menu:

* skk-check-jisyo::             
* skk-merge::                   
* skk-diff::                    



File: skk.info, Node: skk-check-jisyo, Next: skk-merge, Prev: Emacs Lispユーティリティプログラム, Up: Emacs Lispユーティリティプログラム

`skk-check-jisyo'
-----------------

  1. `M-x skk-check-jisyo' を実行する。`辞書ファイル: ' と聞いてくるので、
     チェックしたい辞書ファイルを指定する。

  2. 辞書をチェックした結果がバッファ `*jisyo check*' に表示される。この
     うち、

          単語がひとつもない.
          空単語. 
          行の最後が「/」でない.
          読みの直後が「 /」でない.
          読みと単語の区切りがない.

     というメッセージのある行については、辞書に問題があるので適当に修正
     する。これ以外のメッセージは、ユーザへの注意なので無視してもよい。
     以上の修正を必要ならば行い、結果を再びもとの辞書ファイルにセーブす
     る。



File: skk.info, Node: skk-merge, Next: skk-diff, Prev: skk-check-jisyo, Up: Emacs Lispユーティリティプログラム

`skk-merge'
-----------

`skk-merge' では辞書の見出し語のソートをshell scriptを用いて行う。これは
最近の辞書のサイズが大きくなったためにEmacs Lispのソート関数を用いると
Emacsがcore dumpすることがあるためである。このshell scriptのファイル 
`emacs-sort' をディフォルトの位置以外に置いてある場合は `.emacs' または 
`.skk' の中で変数 `skk-emacs-sort' の値に正しいfull path nameを設定する
必要がある。

二つのSKK形式の辞書をマージするコマンドである。

  1. 作業用のディレクトリを用意し、そこに `cd' する。

  2. マージしたい辞書を DIC1、DIC2 にコピーする。

  3. `M-x cd' 等により、Emacsの `default-directory' を上記の作業用のディ
     レクトリと一致させる。

  4. `M-x skk-merge' を実行する。

  5. `辞書ファイル1' と`辞書ファイル2' を聞いてくるので DIC1、DIC2を答え
     る。計算が終了すると結果が `NEW-SKK-JISYO' という名前のファイルに出
     力される。出力された新辞書はソートされている。





File: skk.info, Node: skk-diff, Prev: skk-merge, Up: Emacs Lispユーティリティプログラム

`skk-diff'
----------

二つのSKK形式の辞書の差分をつくるプログラムである。
   * 作業用のディレクトリを用意し、そこに `cd'する。

   * 差分をとりたい2つの辞書を DIC1、DIC2 にコピーする。

   * `M-x cd' 等により、Emacsの `default-directory' を上記の作業用ディレ
     クトリと一致させる。

   * `M-x skk-diff' を実行する。`辞書ファイル1'と `辞書ファイル2' を聞い
     てくるので、それぞれ、DIC1 と DIC2 を答える。計算が終了すると、DIC1
     と DIC2 の差分が `SKK-JISYO-DIFF' という名前のファイルに書かれる。



File: skk.info, Node: Perlによるユーティリティプログラム, Next: Cによるユーティリティプログラム, Prev: Emacs Lispユーティリティプログラム, Up: 辞書ユーティリティプログラム

Perlによるユーティリティプログラム
==================================

Perlで書かれたユーティリティプログラムはskktoolsと総称され、SKKの
distributionではディレクトリ `contrib/skktools' の下にある。

skktoolsは、辞書をマージしたり、pubdic辞書をSKK辞書の形式に変換したりす
るためのツール群である。SKK辞書は読みに対応する複数の漢字が `/' で区切ら
れた構造をしているが、このツールでは読みと漢字が1対1に対応した形式(これ
を「リスト形式」と呼ぶ)のファイルを中間形式として取り扱う。

skktoolsには以下のプログラムがある。


`skk2list'
     SKK辞書をリスト形式に変換する。

`pubdic2list'
     pubdic辞書の名詞エントリをリスト形式に変換する。

`list2skk'
     リスト形式をSKK辞書に変換する。

`adddummy'
     SKK辞書ソートのためにダミー文字を加える。

`removedummy'
     加えたダミー辞書を取り除く。

`sub'
     二つのリスト形式の辞書の差分を計算する。

`skkconv'
     漢字検索コマンド。


例えば、既存のSKK辞書とpubdic辞書をマージして新しいSKK辞書を作成するには
次のように行なう。

     % (skk2list skk-jisyo ; pubdic2list kihon.u) \ ; リスト形式を連結
           | adddummy \                             ; ダミー文字追加
           | sort -u \                              ; ソート
           | removedummy \                          ; ダミー文字削除
           | list2skk \                             ; SKK辞書に変換
           > skk-jisyo.new

これらのツールではEUCの辞書のみ取り扱い可能である。それ以外の文字コード
の辞書を使うときは後述の`jis2ujis'などのコマンドを加える必要がある。

二つのリスト形式の辞書の差分を計算するには、

     % sub 旧リスト 新リスト

とする。比較する二つのファイルはあらかじめソートされていなければならない。

`skkconv' はSKKサーバを使用してコマンドラインでかな漢字変換するためのコ
マンドである。例えば`かんじ'という読みをもつ漢字を以下のように検索できる。

     % skkconv kanji
     漢字
     幹事
     感じ
     ......
     %

この他に以下のPerlライブラリとコマンドがある。


`codeconv.pl'
     JIS, EUC, SJIS相互変換ライブラリ。

`roma2kana.pl'
     ローマ字 ==> 平仮名変換ライブラリ。

`kana2roma.pl'
     平仮名 ==> ローマ字変換ライブラリ。

`jis2sjis'
     JIS ==> SJIS変換コマンド。

`sjis2jis'
     SJIS ==> JIS変換コマンド。

`jis2ujis'
     JIS ==> EUC変換コマンド。

`ujis2jis'
     EUC ==> JIS変換コマンド。

`roma2kana'
     ローマ字 ==> かな(EUC)変換コマンド。

`kana2roma'
     かな(EUC) ==> ローマ字変換コマンド。




File: skk.info, Node: Cによるユーティリティプログラム, Prev: Perlによるユーティリティプログラム, Up: 辞書ユーティリティプログラム

Cによるユーティリティプログラム
===============================

Cで書かれたユーティリティプログラムはjisyo-toolsと総称され、SKKの
distributionではディレクトリ `jisyo-tools'の下にある。

Emacs LispやPerlによる同様のプログラムでは辞書が巨大な場合は、Emacsがパ
ンクしたり、実行時間が非常に長くなることがあるが、そのようなときに有用で
ある。

* Menu:

* プログラム作成方法::          
* skkdic-expr::                 
* skkdic-sort::                 
* skkdic-count::                



File: skk.info, Node: プログラム作成方法, Next: skkdic-expr, Prev: Cによるユーティリティプログラム, Up: Cによるユーティリティプログラム

プログラム作成方法
------------------

`Makefile' を見て、必要があれば中の CC と CFLAGS の内容を変更してから 
`make' を実行する。

なお `skkdic-expr' では作業用のファイルとして辞書の2倍程度の大きさのもの
を作成する。このファイルが作成されるディレクトリは実行時に指定できるが、
デフォールトとして `/tmp' を指定してる。もしも明らかに不足する場合には、

     -DTMPDIR=\".\"

を CFLAGS に追加すると、`/tmp' が溢れるといった災害を防ぐことができる。



File: skk.info, Node: skkdic-expr, Next: skkdic-sort, Prev: プログラム作成方法, Up: Cによるユーティリティプログラム

`skkdic-expr'
-------------

複数のSKK辞書をマージしたり、他の辞書と同じ内容を引くのに使う。例えば、
次のようにして使う。

     % skkdic-expr JISYO1 + JISYO2 - JISYO3 > RESULT

上記の例では、JISYO1 と JISYO2 にある JISYO1 と重複しない候補を加え、そ
の後、JISYO3 と同じ候補があれば削除する。

また、次のオプションが使用できる。引数の辞書の直前に指定する。


-D
     作業用ディレクトリ。

-O
     出力ファイル。


その他の使用例をあげる。

  1. 複数の辞書を `cat' でつないだものを整理する。

          % skkdic-expr OLDDICT1 > NEWDICT1

     このように使用すると、重複する候補を削除したり、同じ読みが別々の行
     に複数存在していても一行のエントリにまとめる。例えば、

          じしょ /辞書/
          じしょ /璽書/
          じしょ /字書/

     のような辞書を

          じしょ /辞書/璽書/字書/

     と、一行にまとめることができる。候補の配列(候補が出力される際の優先
     順位)は上から順になる。

  2. 個人辞書にある分だけを取り出す。

          % skkdic-expr ~/.skk-jisyo - SKK-JISYO.L > PRIVATE

     この差分を将来のSKK辞書に反映させる方法については *Note 謝辞とお願
     い:: を参照のこと。

  3. 2つの辞書の共通部分を取り出す。

          % skkdic-expr JISYO-A - JISYO-B > JISYO-TMP
          % skkdic-expr JISYO-A - JISYO-TMP > JISYO-COMMON





File: skk.info, Node: skkdic-sort, Next: skkdic-count, Prev: skkdic-expr, Up: Cによるユーティリティプログラム

`skkdic-sort'
-------------

ソートされていない辞書を通常のSKK辞書の形式にソートし、
`;; okuri-ari entries.' と `;; okuri-nasi entries.' を
適切な位置に挿入する。入力は標準入力のみ、出力は標準出力のみが指定できる。
例をあげる。

     % skkdic-expr JISYO-A + JISYO-B | skkdic-sort > NEWDICT

一時的に使用するswapを小さくするためにあえて `skk-jisyo-expr' とは別のプ
ログラムとしてある。



File: skk.info, Node: skkdic-count, Prev: skkdic-sort, Up: Cによるユーティリティプログラム

`skkdic-count'
--------------

SKK辞書の中の候補の数を数える。`[' と `]' で囲まれた送り仮名毎のブロック
も一つの候補として数える。



File: skk.info, Node: 拡張アイディア, Next: SKKメーリングリスト, Prev: 辞書ユーティリティプログラム, Up: Top

拡張アイディア
**************

将来のバージョンに託された拡張アイディアを順不同で述べる。これ以外にも要
望、拡張の具体的アイディアがあれば、開発者にご連絡いただきたい。


   * 辞書の個々の見出し語、候補に属性を持たせて、

       1. 例えば、その属性の内容により、変換の際に候補の絞り込み条件を指
          定できるようにする。また、絞り込み条件はユーザーの任意に変更で
          きるようにする。一例をあげれば、サ変動詞になり得る名詞に適当な
          属性を持たせ、`〜する'という送り仮名がタイプされた場合には、そ
          のサ変動詞属性を持った名詞のみを候補として出力する、など活用の
          幅は非常に広い。サ変動詞の問題については、*Note 辞書登録モード:: 
          も参照のこと。

       2. 例えば、候補に関する意味を属性として持たせ、意味を調べるような
          拡張変換を行なえるようにする。

       3. 例えば、候補に最終の変換時刻などを属性として持たせ、辞書のメン
          テナンスに利用する(一定期間アクセスのない候補を個人辞書から削
          除するなど)。


     言うは易しだが、色々な未解決の問題がある。多数の見出し語や候補に属
     性を持たせて、通常の変換効率をできる限り落さないで、かつ効率良く属
     性のメンテナンスを行なう方法を模索することがまず大変。Emacsのバッファ
     に読み込む辞書とサーバー経由でアクセスしている辞書とがあることも検
     討事項。Emacs側の機能で対応した場合にサーバー経由の辞書属性をどうや
     って得るか、またはその逆が課題である。コーディング抜きであってもア
     イディアをいただけたら幸いである。

   * `C-x C-j', `C-x j' など、SKKモードの起動に使用されるキーに元々割り
     付けられているEmacsのオリジナルのコマンドの自動退避。意外と難しい？ 
     *Note .emacsの設定::.

   * メニューバーから指定できるユーザーオプションを増やすこと。現状では
     オン/オフトグルに変更するようなコマンドのみの変更しかできない。
     *Note ユーザーオプションの設定方法::.

   * 対になる文字列の一括入力を一度に複数の文字について行なったときのポ
     イントの位置を検討する。*Note 対になる文字列の一括入力::.

   * いかなるユーザーオプション変数をバッファローカル化しても動作するよ
     うにすること。辞書バッファで参照されるユーザーオプションを、変換を
     行なっていたバッファの指定値から受け渡しして辞書バッファで参照する
     などの配慮が必要か。*Note 送り仮名の厳密なマッチ::.

   * 送り仮名の厳密なマッチなしの送り仮名の自動処理を行なうオプションを
     作ること。現状の送り仮名の自動処理では、送り仮名のプレフィックスが
     マッチするだけでは候補として出力せず、更に送り仮名全体が厳密にマッ
     チするかどうかをチェックしている。これは候補の絞り込みのためには有
     効に作用するが、個人辞書の内容が貧弱な場合は、逆にこれがあだとなっ
     てすぐに辞書登録モードに入ってしまう。オプション設定することにより、
     いずれの場合にも対応できるようにする。*Note 送り仮名の自動処理::.
     *Note 送り仮名の厳密なマッチ::.

   * VIPER対応。*Note VIPとの併用::.

   * SKKの起動後、2C-modeを起動するとモードラインが乱れる。これに対応す
     る。

   * その他、どんどん増えるEmacsの標準添付パッケージとの親和性を高めるこ
     と。

   * 有限オートマトンを用いた変換において、よりT-codeライクな操作を可能
     とするようにすること。

   * `skk-num.el' の `skk-kanji-num-str2' で、`100000000'
     ==> `一億万' になってしまうバグを修正すること。

   * `1995' ==> `壱阡九百九拾伍' のような数値変換を行なう 
     `skk-kanji-num-str3' を新設すること。内容証明郵便で支払の督促状を書
     くときなどに便利？

   * `query-replace' などのコマンドで、SKKの入力モードを認識するようなプ
     ロンプトを出す。こりゃ無理か？

   * 部首変換プログラムと辞書を作ること。現在作業中の辞書を中島が持って
     いるので、作業にご協力いただける方はご連絡いただきたい。

   * あるパターンにマッチする語を変換・確定しても、その語を個人辞書に取
     り込まないようにすること。例えばカタカナのみからなる語を変換して使
     うことはあっても、その語で個人辞書を太らせることがないように設定す
     ることができる。

   * SKKが大きくなった元凶、数多くのユーザーオプションをほとんどなくした
     stripped `skk.el' を作ること。




File: skk.info, Node: SKKメーリングリスト, Next: SKKの入手方法, Prev: 拡張アイディア, Up: Top

SKKメーリングリスト
*******************

* Menu:

* ユーザーメーリングリスト::         
* 開発者用メーリングリスト::  



File: skk.info, Node: ユーザーメーリングリスト, Next: 開発者用メーリングリスト, Prev: SKKメーリングリスト, Up: SKKメーリングリスト

ユーザーメーリングリスト
========================

SKKに関する意見交換の場としてSKKメーリングリストが開設されている。これま
でメーリングリストで話題になったこととしては、SKKの虫の報告/修正、質問/
回答、SKK改良のための提案等がある。また、最新のSKKもメイリングリストを通
して配布し、参加者の協力を得て、テスト、改良を重ねている。


メーリングリストへの参加したいとき。
     `skk-join@kuis.kyoto-u.ac.jp' へメールを送れば、自動的に発信者のメ
     ールアドレス(`From:' のアドレス)が登録される。

メーリングリストへの記事の投稿を行なうとき。
     `skk@kuis.kyoto-u.ac.jp' へ送れば自動的に全ての登録者に送付される。

メーリングリストに登録したアドレスを変更したいとき。
     新しいメールアドレスから `skk-change@kuis.kyoto-u.ac.jp' 宛に、本文
     の1行目に下記の書式で旧アドレスを書いたメールを送付する。
          `Old: YOUR-OLD-NAME@YOUR-OLD-ADDRESS'

メーリングリストから抜けたいとき。
     `skk-leave@kuis.kyoto-u.ac.jp' へメールを送る。


`skk-source@kuis.kyoto-u.ac.jp' 宛にメールを送付することで、過去のSKKメ
ーリングリストへの投稿記事を入手することができる。入手したい記事の
`Mailinglist-ID:' に従い、下記の要領で `Subject:' を指定し、メールを送付
することで、指定された内容のメールが返送される。


`Mailinglist-ID:' が134の記事を入手する場合。
     `Subject: 134'

`Mailinglist-ID:' が100番から199番の記事を全部入手する場合。
     `Subject: ml-contents-01'


ただし、0〜99番の場合は `ml-contents-00' と指定する。なお、
Mailinglist-ID:が欠番の部分もある。



File: skk.info, Node: 開発者用メーリングリスト, Prev: ユーザーメーリングリスト, Up: SKKメーリングリスト

開発者用メーリングリスト
========================

SKKの開発に関する情報交換、及びテスト版の配布などを行う場としてSKK開発者
用メーリングリストが開設されている。


メーリングリストへの参加したいとき。
     `skk-develop-join@kuis.kyoto-u.ac.jp' へメールを送れば、自動的に発
     信者のメールアドレスが登録される。

メーリングリストへの記事の投稿を行なうとき。
     `skk-develop@kuis.kyoto-u.ac.jp' へ送れば自動的に全ての登録者に送付
     される。

メーリングリストに登録したアドレスを変更したいとき。
     新しいメールアドレスから `skk-develop-change@kuis.kyoto-u.ac.jp' 宛
     に、本文の1行目に下記の書式で旧アドレスを書いたメールを送付する。
          `Old: YOUR-OLD-NAME@ YOUR-OLD-ADDRESS'

メーリングリストから抜けたいとき。
     `skk-develop-leave@kuis.kyoto-u.ac.jp' へメールを送る。




File: skk.info, Node: SKKの入手方法, Next: SKK関連ソフトウェア, Prev: SKKメーリングリスト, Up: Top

SKKの入手方法
*************

* Menu:

* メールによる入手方法::        
* Anonymous Ftpによる入手方法::  
* WWWを利用して入手する方法::   
* その他の入手方法::            



File: skk.info, Node: メールによる入手方法, Next: Anonymous Ftpによる入手方法, Prev: SKKの入手方法, Up: SKKの入手方法

メールによる入手方法
====================

`skk-source@kuis.kyoto-u.ac.jp' 宛にメールを送付することで、SKKのソース
をメールを入手することができる。下記の要領で `Subject:' を指定し、メール
を送付することで、指定された内容のメールが返送される。


`skk.el' が欲しい場合。
     `Subject: skk.el'

入手可能なファイルのインデクスが欲しい場合。
     `Subject: index' `index' にはファイルサイズと最終更新日が入っている。

ファイルのバージョン等を知りたい場合。
     `Subject: VERSIONS'

SKKの最新版全体を入手したい場合。
     `Subject: all' こうするとSKKのパッケージがいくつかのメールに分割さ
     れて送られてくる。

一度に多数のメールを受け取ることができない場合
       1. `Subject: all-1' により、まずpart1を入手し、全体の個数を確認す
          る。

       2. 次に `Subject: all-2-10' のようにして受信可能な範囲で全体の一
          部(上の場合はpart2からpart10)を入手する。

       3. メールの取りこぼしがあったときは、例えば、`Subject: all-22,31' 
          とするとpart22とpart31が入手できる。




File: skk.info, Node: Anonymous Ftpによる入手方法, Next: WWWを利用して入手する方法, Prev: メールによる入手方法, Up: SKKの入手方法

Anonymous Ftpによる入手方法
===========================

IP接続のされているサイトからはanonymous ftpによりSKKを入手することもでき
る。

京都大学(`skk.kuis.kyoto-u.ac.jp [130.54.22.225]')及びスタンフォード大学
(`steam.stanford.edu[171.64.71.20]')の `/pub/skk' 以下にSKKが置いてある。
SKKのバージョンにより置かれているディレクトリが異なるので、注意すること。

また、これらのサイトでは公式リリースのものの他に最新のSKKも置いてある。



File: skk.info, Node: WWWを利用して入手する方法, Next: その他の入手方法, Prev: Anonymous Ftpによる入手方法, Up: SKKの入手方法

WWWを利用して入手する方法
=========================

SKKのホームページが以下の場所に開設されている。


日本語版URL
     `http://skk.kuis.kyoto-u.ac.jp/skk/index.html'

英語版URL
     `http://skk.kuis.kyoto-u.ac.jp/skk/index-e.html'


Mosaicやchimera等のWWWクライアントを利用して、ホームページにアクセスすれ
ば、ホームページからのリンクをたどることによって、ftpサーバ
(`skk.kuis.kyoto-u.ac.jp')にアクセスすることができる。



File: skk.info, Node: その他の入手方法, Prev: WWWを利用して入手する方法, Up: SKKの入手方法

その他の入手方法
================

SKKは1988年4月に第1版をJUNETに投稿して以来、毎年4月にJUNETのニュースグル
ープfj.sourcesに新しいバージョンを投稿している。この方式もひきつづき続け
ていきたいと考えている。

SKKはまたMuleのcontributed softwareでもあるので、Muleの一部としても入手
することができる。



File: skk.info, Node: SKK関連ソフトウェア, Next: 謝辞とお願い, Prev: SKKの入手方法, Up: Top

SKK関連ソフトウェア
*******************

* Menu:

* KAKASI::                      逆引プログラム
* skkfep::                      SKKクローンFEP
* pskkserv::                    skkserv代替プログラム
* SKK on Jed::                  Jedで動くSKK
* skkinput::                    X上のSKK入力プログラム



