これは SKK に対するよくある質問と、それに対する回答集です。

SKK のなぜなに
=========

Q.1-1 最新のバージョンは？
----------------

現在、開発版の最新版は Daredevil SKK 11.x、安定版は SKK 10.6x です。

Q.1-2 SKK はシンプルなのが長所だったのでは？ 色々使わない機能があり過ぎるような。
----------------------------------------------

かような議論は 10 年来行われてきており、結論は出ていませんが、事実として現在まで開発が続けられています。

     「シンプルな操作性の維持と多機能化・高機能化は両立できる」

というのが現在の開発陣の考えであるようです。

多機能化と言っても多くはユーザーオプションによって無効にすることができますし、skk.el 本体が複雑化しないようにモジュール化されています。

Q.1-3 SKK はどのバージョンの Emacs で使えますか？
---------------------------------

SKK 10 に関しては

  - Emacs 19.28 or later をベースとした Mule 2 or 3

  - Emacs 20.2 or later

  - --with-mule オプション付きでコンパイルされたXEmacs 20.4 or later

  - Meadow 1.00, 1.01, 1.10

  - Mule for Windows 1.21, 1.22

がサポートしようとする対象の Emacs です。Daredevil では、Nemacs 上で動くようです。

Q.1-4 SKK はどんなオペレーティングシステムで使えますか？
---------------------------------

基本的にサポート対象の Emacs がその OS で動いているなら、SKK の基本的な機能は動くはずです。

拡張機能については、UNIX の各種コマンドを前提としているものがいくつかあります (look とか ispell とか)。これらがお使いの OS にもあれば使える場合が多いでしょう。

Mac OS 版の Emacs でも動くようですが、インストールが UNIX make コマンド、あるいは make.bat を前提にしているので、手作業で、 skk/SKK-MK を評価するなどの手間がかかるでしょう (APEL についても同様の苦しみがあるはずですが)。See Q.2-4 APEL って何ですか？. Perl で動く make について、

     At Thu, 10 Aug 2000 19:06:31 +0900,
     SUZUKI Norio wrote:

     > CPANのmodules/by-category/Development_Supportに
     > Make-1.00.tar.gz というperlで書かれた module があります。
     > MacPerlで動くかどうかは分かりませんが試す価値はあるでしょう。

という情報もあります。MacPerl で動作を確認した人がいらっしゃったら、情報をお寄せ下さい。

Q.1-5 Emacs に付属の SKK を使っているのですが...
----------------------------------

まず初めに言っておかなければなりませんが、

「Emacs には SKK は付いていません」 (Nemacs 3.3.2 には SKK 2.25 が付いていたりしますが...)

Emacs 20 には KKC というプログラムが付属し、Leim では KKC を利用した日本語入力機能を提供しています。これは SKK の辞書を利用しているため、ミニバッファに「Loading skk/skkdic...done」と表示されますが、決して SKK が動いている理由ではありません。

開発中の Emacs ではこの問題は既に解決されています。

Q.1-6 開発版の SKK は何故、Daredevil などと言う branch 名がついているのですか？
------------------------------------------------------

無責任な開発がどんどん続き、何が起こっても知りませんよ、と警告しているのにこれを使おうとなさるあなたにぴったりのネーミングではありませんか ;-p。

開発陣の一人が講読している某ラジオ英会話講座の、ある日のスキット名が「Daredevil なんとか」で、その内容は「とにかくやってみよう。うぎゃぁぁぁ、やられたぁ」というものでした。これがあまりに自分の開発ポリシーに合致するので、ここから Daredevil の名をいただいたのであります。

Q.1-7 APEL に依存せずに SKK だけで済むように開発してもらえませんか？
------------------------------------------

同様の議論が過去散々あり、本家は検討したいと言い、一方、ぼく (中島) は APEL を使わない SKK の開発はやらない、と宣言したこともあって、部外の人から SKK community 分裂か？、と冷かされたりもしました。

悪いけどぼくはやりません。せっかく良いものがあるのにそれを利用しないのは、無駄な努力だと思うからです。APEL から独立する努力をする時間があれば、その時間を使って APEL にもっと貢献したいです。

APEL よりもっと遥かに効率の良いものができれば別ですが、それまでは APEL を利用し続けます。

もちろん、あなたが APEL 非依存版の作成をやりたいんだったら止めはしません。SKK Openlab に参加してやってもらっても良いですよ。但し、Maintrunk, Daredevil とは別 branch にして下さいね。

See Q.2-4 APEL って何ですか？.

Q.1-8 SKK の中に更にいくつもモードがあって良く分かりません。
-----------------------------------

入力モード

     入力される文字別のモードには下記のものがあります。

              +------------------+--- skk-mode -----+--------------------+
              |                  |                  |                    |
              |                  |                  |                    |
          skk-j-mode      skk-latin-mode   skk-jisx0208-latin-mode skk-abbrev-mode
          (かな/カナモード) (ASCII モード)    (全英モード)        (SKK abbrev mode)

     ASCII モードと言うのは、C-j により skk-j-mode に移行する他は、全てのキーバインドは SKK を起動する前の状態と同一のモードです。SKK への入口が見えているモードと言えるかもしれません。

     SKK abbrev モードというのはアスキー文字を利用した変換ができるモードです。このファイルの後半にが活用例が出ていますので、ご覧下さい。

辞書登録モード

     辞書登録モードは、かな/カナモード、SKK abbrev モードで変換した際、候補が見つからないときに辞書登録をするサブモードです。

変換モード

     入力文字がそのままバッファに挿入され、変換をしないモードを確定入力モードと言い、■モード、と呼びます。

     バッファに▽のマーカが出て変換する文字の見出し語を入力するモードを ▽モードと呼びます。

     ▽モードから SPC を押して変換候補の選択をするモードを▼モードと呼びます。バッファに挿入されている▽のマーカが▼に変わります。

SKK の入手から導入まで
=============

Q.2-1 最新版の SKK はどこから入手できますか？
----------------------------

     http://openlab.ring.gr.jp/skk/cvs-ja.html

をご覧の上、SKK Openlab の CVS から入手できるものが最も新しいです。

最も新しくなくて良ければ、

     http://openlab.ring.jp/skk/daredevil-ja.html

もしくは

     http://openlab.ring.jp/skk/maintrunk-ja.html

からどうぞ。

Q.2-2 SKK を入手しましたが、辞書が付いていないのですが。
---------------------------------

     http://openlab.ring.jp/skk/dic-ja.html

から別に入手して下さい。SKK Openlab の CVS には最新版があります。

Q.2-3 SKK を入手しましたが、サーバが付いていないのですが。
----------------------------------

     http://www.ne.jp/asahi/bdx/info/software/jp-dbskkd.html

から dbskkd を入手して下さい。

SKK 10.x, Daredevil ともにサーバの種類、バージョンには依存していないはずなので、SKK 9.6 以前添付の skkserv や ruby で書いた rskkserv なども使えます。

Q.2-4 APEL って何ですか？
------------------

APEL は A Portable Emacs Library の略で、XEmacs/GNU Emacs 間、あるいは Emacs のそれぞれのバージョン間の差異を吸収するパッケージです。

元は FLIM/SEMI のために開発されたものですが、旧 SKK で培ったバージョン間の work around のノウハウを全部反映してもらいましたので、APEL 自体、大幅に汎用性がアップしています。

Q.2-5 色々別に入手するものがあってインストールが難しいですね。昔は全部一つで簡単だったのに。
-------------------------------------------------

辞書やサーバーの配布が別なのは、それぞれアップデートされる頻度が異なるからです。毎回超特大のアーカイブを入手させられてもあなたは文句を言うでしょう。

また、APEL のおかげでそれだけ多くの Emacsen で動きます。APEL に感謝こそすれ、恨むのは筋違いでしょう。See Q.2-4 APEL って何ですか？.

Q.2-6 Emacs 20 に SKK 9.6 がインストールできません。
--------------------------------------

SKK 9.6 は Emacs 20 がリリースされる以前のバージョンで、Emacs 20 に対応していません。実際使えないことが確認されています。

     http://openlab.ring.gr.jp/skk/index-j.html

にて公開されている SKK は Emacs 20 に対応していますから、それをインストールしてください。

SKK の基本設定からお好みのカスタマイズまで
=======================

Q.3-1 インジケータをモード行の左端に置きたいのですが。
------------------------------

~/.skk に

     (setq skk-status-indicator 'left)

と書いてみてください。

Q.3-2 . で「．」、, で「，」 が入力できるようにカスタマイズしたいのですが。
-------------------------------------------

~/.skk に

     (setq skk-rom-kana-rule-list
           (append '(("." nil "．") ("," nil "，"))
     	      skk-rom-kana-rule-list))

と書きましょう。■モード (確定入力モード) での動作が変わったはずです。

Q.3-3 wi で、「ゐ」や「ヰ」 が入力できるようにカスタマイズしたいのですが。
------------------------------------------

一つ前の Q. の変形問題ですね。かな/カナモードでそれぞれ出力する文字を変えるやり方です。

~/.skk に

     (setq skk-rom-kana-rule-list
           (append '(("wi" nil ("ヰ" . "ゐ")))
     	      skk-rom-kana-rule-list))

と書いてみましょう。

一番内側の cons cell は car がカナモード、cdr がかなモードでの入力文字を表しています。

一つ前の Q. に対する答えのように、カナモード、かなモードともに入力する文字が変わらなければ、cons cell の代りに文字列を書くことができます。

Q.3-4 skk-input-vector と skk-roma-kana-a が見当たりませんが。
---------------------------------------------------

廃止されました (キッパリ)。

その昔、かな/カナモードの入力系統をカスタマイズする変数は沢山ありましたが、SKK 10.x 以降では skk-rom-kana-base-rule-list と skk-rom-kana-rule-list に統合されました。

前者は標準的なキー入力を定めています。後者は、好みに左右されるものを定義しています。いずれもユーザー変数ですが、後者はリスト操作を容易にするためにディフォルトの要素数を少なくしています。後者の設定は前者のものを上書きします。

Q.3-5 検索する辞書を増やしたいのですが。
-----------------------

skk-search-prog-list で設定をしましょう。

まず、現在の設定を確認しましょうね。*scratch* バッファに skk-search-prog-list と書いてそのシンボルの末尾にポイントを置いて C-j してみましょう。例えば次のように出力されます。

       ((skk-search-jisyo-file skk-jisyo 0 t)
        (skk-search-server skk-aux-large-jisyo 10000))

上記の例は 2 つの要素を持ったリストになっています。設定によりもっと多くの要素があるかもしれません。

各要素は検索する関数と辞書を指定したリストです。要素の順番に検索がなされます。上記の例だとまず最初に skk-jisyo (個人辞書) を skk-search-jisyo という関数を使ってリニアアーチ、次に skk-search-server という関数を使って skk-aux-large-jisyo をサーチします。

変換の際、SPC を押しますよね？  1 回 SPC を押すと、SKK は候補が見つかるまでの間、skk-search-prog-list の要素を前から読んでいって検索を行ない、見つかればそこで一旦検索を止めてユーザに候補を提示します。

ユーザが SPC を更に押してゆき最初の要素のプログラムが見つけた候補が尽きると、SKK は中断していた個所から再び skk-search-prog-list の次の要素を見つけ、ここで指定されている関数を使って検索する、で新しい候補が見つかればまた提示する、というシステムになっています。

では、サーバを使って検索した後に、JIS 第 2 水準の単漢字辞書、 SKK-JISYO.JIS2 を検索したい場合はどうすれば良いでしょう？  もう分かりますよね？  サーバを使った検索式の次に第 2 水準辞書の検索式を書いたリストを skk-search-prog-list に指定すれば良いのです。 ~/.skk に次のように書きましょう。

     (setq skk-search-prog-list
       '((skk-search-jisyo-file skk-jisyo 0 t)
         (skk-search-server skk-aux-large-jisyo 10000)
         (skk-search-jisyo-file "~/dic/SKK-JISYO.JIS2" 0))

skk-search-jisyo-file の第 2 引数、0 の数字はリニアサーチにて検索するよう指定しています。第 2 水準辞書はあまり大きくないので、リニアサーチで十分でしょう。大きな辞書を検索する場合などは、

     (skk-search-jisyo-file "~/dic/SKK-JISYO.L" 10000)

のようにすると良いでしょう。SKK は Emacs のバッファに読み込まれた ~/dic/SKK-JISYO.L の検索リージョンのポイント差が 10,000 未満になるまではバイナリサーチを行ない、その後リニアサーチを行ないます。大きな辞書ではバイナリサーチを行なう方がはるかに効率が良いです。嘘だと思うなら、 SKK-JISYO.L を読み込んでリニアサーチするような設定にして試してみて下さい。

ちなみに、SKK-JISYO.JIS2 は、最大でもリージョン間のポイント差が 8,500 程度です。

Q.3-6 左手の小指を SHIFT で酷使したくありません。
-------------------------------

SKK を標準の状態で使っている場合、変換のためにシフトキーを多用しますので小指への負担が大きくなります。 (このため、ある人々は SKK を小指キラーと呼びます。)

この苦しみを回避するためにここでは 3 つの方法を紹介します。

 1. 親指の近くにあるキーを利用してシフトキーの代用とする。

     日本語 106 キーボードのように無変換、変換などのキーがある場合は、これらをシフトキーの代用とすることが可能です。こうすると、例えば

          SHIFT を押しながら a を押す

     というキー操作は

          無変換 を押して、その後で a を押す

     という操作で置き換えることができるようになります。

     それでは具体的なやり方を説明しましょう。まず、使用中の Emacs が無変換キーを何という名前で認識しているか調べます。それには

          M-x describe-key

     というコマンドを実行し、続いて 無変換キーを押してみます。XFree86 上でなら、おそらく

          muhenkan is undefined

     という答えが返ってくるでしょう。次に、この名前を使って ~/.emacs に設定を書きこみます。以下は 無変換 = muhenkan の場合の例です。

          (if (keymapp key-translation-map)
              nil
            (setq key-translation-map (make-sparse-keymap)))

          (let ((i ?a))
            (while (<= i ?z)
              (define-key key-translation-map
                          (vector 'muhenkan i) (vector (- i 32)))
              (setq i (1+ i))))

     この設定を終えると、muhenkan-a で A が入力できるようになります。つづいて、SKK を起動してみましょう。muhenkan-a で ▽あ となります。送りの開始点も、もちろん同様の操作で指定できます。 (変数 key-translation-map の意味を調べてみてください。

     M-x describe-variable RET key-translation-map)

 2. xmodmap を使う。

     X 上では、xmodmap というプログラムを使ってキー配列を変更できます。例えば、無変換キーをシフトキーとして使いたければ

          % xmodmap -e 'add Shift = Muhenkan'

     とします。これで無変換キーは通常のシフトキーと同じような感じで使えるようになります。

 3. 親指シフト入力のエミュレーション機能を利用する。

     これは 1, 2 とはかなり違ったアプローチです。SKK 本来のローマ字的入力を捨てて、富士通のワープロ OASYS のような親指シフト入力を修得します。
      (親指シフト入力の詳細については、ここでは述べません。興味がある
     場合は、日本語入力コンソーシアムの Web サイト)

          http://nicola.sunicom.co.jp/

     を訪れてください。

     この機能は、SKK 10 では利用できません。Daredevil SKK 11.3 以降には、 NICOLA-DDSKK というプログラムが付属しており、これをインストールすると親指シフト入力が可能になります。インストール自体は簡単で、

          % cd experimental/nicola
          % make install

     とした後に、~/.skk に

          (setq skk-use-kana-keyboard t)
          (setq skk-kanagaki-keyboard-type 'omelet-jis)

     と書くだけです。詳しいことは、NICOLA-DDSKK 付属のドキュメントを参照してください。

     NICOLA 配列は、特別に日本語入力のために考えられた配列なので、慣れれば非常に効率的な日本語入力ができるようになると期待されます。一方で、ローマ字的入力方式に慣れてしまっている人にとっては、NICOLA 配列に慣れるまでかなり練習を要することは確かです。

Q.3-7 全く漢字が出てきません。
------------------

恐らく辞書の設定ができていないのでしょう。

SKK-JISYO.L というファイルがインストールされている場所を確認してください。普通は

     /usr/local/share/skk
     /usr/share/skk

といった場所にインストールされています。XEmacs のパッケージならば

     /usr/local/lib/xemacs/mule-packages/etc/skk

などを確認します。その後で ~/.skk に

     (setq skk-large-jisyo "/usr/local/share/skk/SKK-JISYO.L")

のように設定します。

なお、辞書サーバを使っている場合はこの設定は必要ありません。その場合は、辞書サーバの設定や、それがちゃんと起動しているかどうかを確認してください。

また、どこにも辞書がインストールされていない場合は

     http://openlab.ring.gr.jp/skk/dic/

から取得します。

Q.3-8 チュートリアルが起動できません。
----------------------

SKK.tut というファイルがインストールされている場所を確認してください。普通は

     /usr/local/share/skk
     /usr/share/skk

といった場所にインストールされています。XEmacs のパッケージならば

     /usr/local/lib/xemacs/mule-packages/etc/skk

などを確認します。その後で ~/.emacs に

     (setq skk-tut-file "/usr/local/share/skk/SKK.tut")

のように設定します。

Q.3-9 スペースを押しても変換できません。
-----------------------

以前のバージョンの SKK では、SKK を使う前に Canna の設定がされていると、スペースを押しても空白が挿入されるだけで変換できない、というバグがありました。これは SKK 10.62 以降では修正されています。

なお、このバグに対処するために

     (setq canna-use-space-key-as-henkan-region nil)

と設定していた場合は、もはやその必要はないので消して構いません。

SKK 辞書関連
========

Q.4-1 Wnn でも Canna でも郵便番号辞書が使えるけれど、SKK では使えないの？
-----------------------------------------------

CVS から辞書を取得した場合は、zipcode というディレクトリに入っています。WWW では、

     http://openlab.ring.gr.jp/skk/dic/

より入手できます。使用方法は、zipcode/README.ja を御覧下さい。

Q.4-2 SKK の辞書には、品詞情報がないんですね。
----------------------------

はい、そうです。品詞情報がなくとも効率の良い入力ができるシステムが SKK です。

Q.4-3 SKK には辞書をマージするプログラムは付いてないの？
---------------------------------

SKK 本体のパッケージには同封されていませんが、skk-tools という別パッケージがあり、

     http://openlab.ring.gr.jp/skk/tools-ja.html

から入手可能です。

Q.4-4 SKK 形式の英和辞書があると聞いたのですが。
-----------------------------

edict は和英辞書ですが、これを SKK 辞書形式の英和辞書に変換したものを

     http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.edict

として置いています。これは edict を単純に機械的に変換した後、バグの修正や、エントリ・候補の追加が SKK Openlab で独自に行なわれているものです。

edict を自分で加工して上記と同等のものを作成することもできます。edict は

     ftp://ftp.u-aizu.ac.jp:/pub/SciEng/nihongo/ftp.cc.monash.edu.au/

などから入手できます。

加工には日本語の通る gawk と SKK 添付の edict2skk.awk、 skk-tools の中のプログラムを使い、下記のように行ないます。

     % jgawk -f skk-10/lisp/look/edict2skk.awk edict > temp
     % skkdic-expr temp | skkdic-sort > SKK-JISYO.E2J
     % rm temp

できた SKK-JISYO.E2J の利用方法は色々ありますが、

     % skkdic-expr SKK-JISYO.E2J + /usr/local/share/skk/SKK-JISYO.L | \
       skkdic-sort > SKK-JISYO.L

などとして、SKK-JISYO.L とマージして使うのが手軽です。

なお、edict の配布条件は GPL ではありません。

     http://www.csse.monash.edu.au/groups/edrdg/newlic.html

をご覧下さい。SKK-JISYO.edict のヘッダー部分にもそのダイジェストが記載されています。

SKK の活用法その他
===========

Q.5-1 abbrev モードって何ですか？
-----------------------

       ▽is SPC
            ==> インクリメンタル・サーチ

などのように短い英語見出しから変換できると便利だとは思いませんか？

かな/カナモードで、/ キーを入力してみて下さい。▽が出てアスキー文字が入力できるようになるはずです。ここで英文字を入力して SPC を押せば変換できます。

もちろん対応するエントリが辞書にないと単語登録モードに入りますよ。

Q.5-2 abbrev モードでもっと英単語を利用した変換ができませんか？
--------------------------------------

UNIX look コマンドと skk-look.el を利用すると、色々できますよ。まず、 ~/.skk か ~/.emacs で skk-use-look を t にセットして Emacs/SKK を立ち上げ直して下さい。

さぁ、下記のような芸当が可能になりました。

 1. 英単語を補完ができます。

            ▽abstr(TAB) ==> ▽abstract

     通常の補完機能同様、. で次の補完候補、, でひとつ前の補完候補に移動できます。SKK 形式の英和辞書があれば、ここから SPC を押して英和変換ができますね。

 2. (2)英単語をあいまいに変換して取り出すことができます。

            ▽abstr* (SPC) ==> ▼abstract

     見出し語に * を入れるのをお忘れなく。

 3. あいまいに変換した後、更に再帰的な英和変換を行なうことができます。

     まず、skk-look-recursive-search の値を non-nil にセットして下さい。 Emacs/SKK を再起動する必要はありません。すると、例えば、

            ▽abstr* (SPC)
                 ==> ▼abstract (SPC)
                 ==> ▼アブストラクト (SPC)
                 ==> ▼抽象 (SPC)
                 ==> ▼abstraction (SPC)
                 ==> ▼アブストラクション

     このように英単語 + その英単語を見出し語にした候補の「セット」を変換結果として出力することができます。

     この際、skk-look-expanded-word-only の値が non-nil であれば、再帰検索に成功した英単語の「セット」だけを出力することができます (再帰検索で検出されなかった英単語は無視して出力しません) 。

     もちろん、SKK 辞書に

            abstract /アブストラクト/抽象/
            abstraction /アブストラクション/

     というエントリがあることを前提としています。edict を SKK 辞書形式に変換すると良いですね。

Q.5-3 SKK の検索で、市販の CD-ROM 辞書やネットワークの辞書サーバが利用できますか？
--------------------------------------------------

Lookup が扱える辞書はほとんど使えます。Lookup がインストールされている状態で SKK をインストールすると、SKK と Lookup のゲートウェイプログラム skk-lookup.el がインストールされます。

インストールで注意すべきは、make で呼び出される Emacs は -q -no-site-file フラグ付きで呼ばれるので、~/.emacs や site-start.el などは読み込まれないことです。ディフォルトで load-path の通っているディレクトリに lookup をインストールするか、 SKK-CFG の中で VERSION_SPECIFIC_LISPDIR などにディレクトリを明示することで解決できます。

さぁ、~/.emacs か ~/.skk で skk-search-prog-list の要素に (skk-lookup-search) を追加しましょう。他の検索エンジンよりも検索は比較的重いので、最後の方が良いと思います。

こんな感じです。

       (setq skk-search-prog-list
             '((skk-search-jisyo-file skk-jisyo 0 t)
               (skk-search-server skk-aux-large-jisyo 10000)
               (skk-lookup-search)))

Lookup については、

     http://openlab.ring.gr.jp/lookup/

をご参照下さい。ぼく (中島) は、ローカルマシンのハードディスクに広辞苑の第四版をコピーして利用していますが、速度的には十分満足しています。ちなみにコピーした辞書データのサイズは 45MB 弱です。

Q.5-4 SKK を使い始めてから、他の FEP を使用中にも SHIFT を押してしまいます。(T_T)
------------------------------------------------------

治すには SKK をやめるしかありません :-)

Emacs 上以外でも SKK みたいな操作性を実現するソフトウェアがあります。

     See SKK関連ソフトウェア.

をご覧になってください。

化石的質問集
======

Q.6-1 SKK は Nemacs で使えますか？
--------------------------

SKK 10.xx は使えません。

未確認情報ですが、Daredevil SKK 11.x では動いているという噂があります。開発者の中に最近 Back to the Future した者がいる可能性は否定できませんが、ただの Emacs オタクと考えたほうがいいでしょう。

Q.6-2 SKK は Demacs で使えますか？
--------------------------

SKK 10.xx は使えません。

最近、MS-DOS 7.1 上の Demacs 上で Daredevil SKK 11.x が動いているところが目撃され、スクープされたそうです。

ところが、DEMAgogiC Studio とかいうアプリケーションに付属のエディタも Demacs と呼ばれているらしく、本件はかの偉大な Demacs とは関係無いだろうとも言われています。