高度なトピック

本章では、skkIMにまつわるより高度な話題を取り扱います。 この章のトピックを押さえておけばskkIMに関してほぼ 取りこぼしは無いと言えるでしょう。

アスキー文字を見出し語とした変換

SKK abbrev modeでは、アスキー文字を見出し語とした変換を行なうこと ができます。

まず、かなモードで`/'を入力することで、見出し語入力の間一時的にこ のモードに入ります。続けて入力する文字は、アスキー文字としてバッファ に挿入されます。見出し語となるアスキー文字を入力し終った時点でSPC を押せば、その見出し語についての変換が得られます。仮に、

is /インクリメンタル・サーチ/

というようなエントリが辞書にあるとして、

/
is
▽is
SPC
▼インクリメンタル・サーチ
C-j
インクリメンタル・サーチ

のように変換が行なわれます。

入力したアスキー文字をそのまま全角アルファベットに変換したい場合について は、全英文字の一時的入力を参照してください。

入力モードの一時変更

日常の入力では、一般的に、かなモードを使用することが圧倒的に多いと考えら れますが、ひらがなの中にカタカナ、全角アルファベットをちりばめて入力したい、 という要求も多いと考えられます。カタカナの入力にはカナモードを、全角アルファ ベットの入力には全英モードを用いることは前述の通りですが、一時的 にカナ文字、全英文字を入力して、また、かなモードに戻ることができます。

ひらがな/カタカナの一時的入力

かなモードもしくはカナモードで、`/'キー以外で一旦▽モードにして文 字列を挿入し、その文字列の末尾で`q'をタイプすることで `▽'マークから`q'をタイプしたポイントまでの 文字列が変換され確定されます。変換は、`▽'とポイント間の 文字列の種類をキーとして下記の規則に基づき行なわれます。

一例を挙げます。

K a t a k a n a
▽かたかな
q
カタカナ

このトグル変換を上手く利用することにより、かなモードのまま一時的にカタカ ナを入力したり、またその逆が可能となるので、一々`q'キーに より入力モードを2度切り換える必要がなく、ひらがな/カタカナ混じり文を書く ときには非常に便利です。

全英文字の一時的入力

`/'をタイプした後、全角アルファベットとして入力したい 文字列を挿入し、その文字列の末尾でC-qをタイプすることで、 `▽'マークからC-qをタイプしたポイントま での文字列が全角アルファベットに変換され確定されます。

/ f i l e
▽file
C-q
file

なお、この変換を行なうために、

file /file/

のような辞書エントリを持つ必要はありません。辞書を参照せず、アスキー 文字を1文字づつ全英文字に変換しているためです。

辞書関連

個人辞書中の単語の削除

誤まって個人辞書に登録した単語の削除は、削除したい単語を変換により求め、 その単語が得られた時点で`X'を入力することで行います。 削除を確認するパレットが表示されるので、それに対しyと タイプしたとき個人辞書の対応するエントリが削除され、削除のために 一旦変換した単語も削除されます。

さいきてき /再起的/

というエントリを誤って登録したという仮定で、その誤登録を削除する場合を例 にとって説明します。

S a i k i t e k i SPC
▼再起的
X
▼再起的
  Really purge ``さいきてき /再起的/''?(y/n)
y
 

辞書の形式

辞書の種別は大きく分けて「共有辞書」「個人辞書」の2つが あります。

共有辞書
付属の`SKK-JISYO.L'(「L辞書」) などがあり、通常、個人辞書より もサイズが大きく、ユーザーの変換により内容の変更は行なわれません。 デフルトでは /boot/home/config/settings/skkim_settings/SKK-JISYO.Lに インストールされています。
個人辞書
skkIMを一番最初に使い始めたときに /boot/home/config/settings/skkim_settings/.skk-jisyoとして 自動的に作られ、その後の使用により日々刻々とエントリーが追加され、 更新されてゆく辞書です。

これらの辞書はすべて、メモリ上に読み込んでから検索が行なわれます。

個人辞書の一例を挙げます。

;; okuri-ari entries.
うごk /動/[く/動/]/[か/動/]/[け/動/]/[き/動/]/[こ/動/]/
たすk /助/[け/助/]/
たとe /例/[え/例/]/
ふくm /含/[め/含/]/[む/含/]/[ま/含/]/[み/含/]/[も/含/]/
もt /持/[つ/持/]/[って/持/]/[た/持/]/[て/持/]/[ち/持/]/[と/持/]/
...
;; okuri-nasi entries.
いち /位置/一/壱/
ぐん /群/郡/
こうほ /候補/
さくじょ /削除/
じゅんじょ /順序/
てん /点/・/天/
ひつよう /必要/
へんこう /変更/
...

`てん /点/・/天/'を例に取ると、`てん'が 見出し語で、その候補が、`点'`・'`天'です。候補はそれぞれ、`/'に よって区切られています。skkIMでは、見出し語と候補群を合わせた `てん /点/・ /天/'の一行を「エントリ」と呼びます。

辞書はプレーンなテキストファイルで、最低限下記の2つの行を持ちます。

;; okuri-ari entries.
;; okuri-nasi entries.

この2つの行は、それぞれ送り仮名あり、送り仮名なしのエントリの開始地点を 示すマークです。`;; okuri-ari entries.'までの行で`;' を行頭に持つ行はコメント行として無視されます。 `;; okuri-ari entries.'以降にコメント行を含むことは できないので、注意しましょう。

`;; okuri-ari entries.'`;; okuri-nasi entries.'の 間に囲まれた上半分の部分が送り仮名ありのエントリです。これを「送り ありエントリ」と呼びます。`;; okuri-nasi entries.'以下の 下半分部分が送り仮名なしのエントリである。これを「送りなしエントリ」 と呼びます。また送りありエントリを検索する変換を「送りあり変換」、 送りなしエントリを検索する変換を「送りなし変換」と呼びます。 skkIMでは送り仮名の有無が変換方法の1つの種別となっているので、基本的には、 送り仮名がある変換では送りありエントリのみが検索され、送り仮名がない変換 では送りなしエントリのみが検索されます。

1つの見出し語についてのエントリは1行内に書かれます(2行以上にまたがることは できません)。改行を含む候補については、(concat "改\n行")のように、 評価すると改行を該当個所に挿入するようなLispプログラムに候補を変換して 辞書に収めています。

送りありエントリは、基本的には`もt /持/'のようになっており、 送り仮名部分は、送り仮名をローマ字表現したときの1文字目(あるかな文字を ローマ字表現したときの1文字目を「ローマ字プレフィックス」と呼び ます)で表現されています。この1エントリで`持た'`持ち'`持つ'`持て'`持と'の5つの候補に対応しています。その5つの候補の 送り仮名をローマ字プレフィックスで表現すれば、いずれも`t' になります。

さて、個人辞書の送りありエントリには`['`]'に 囲まれたブロックがありますが、これは、そのブロックの先頭にある平仮名を 送り仮名に取る候補群です。上記の例で見ると、見出し語`たとe' の場合は`え'を送り仮名とする1つのブロックから構成されており、 見出し語`ふくm'の場合は、`ま'`み'`む'`め'`も'を送り仮名とする5ブロックに分けられています。

この送り仮名毎のブロック部分は、検索の際、優先的に検索する語を 指定するために使用されます。

おおk /大/多/[く/多/]/[き/大/]/

というエントリがあれば、同じ見出し語`おおk'であっても 送り仮名が`く'であれば、候補は`多'`大'より優先されます。

共有辞書では、送りありエントリは`;; okuri-ari entries.'から順 に下方向に、見出し語をキーとして降順に配置されています。送りなしエントリは、 `;; okuri-nasi entries.'から順に下方向に、見出し語をキーとして 昇順に配置されています。降順、昇順に配置されているのは、辞書サイズが大きい ことに配慮してバイナリサーチを行なうためです。なお、ソートする際には、 見出し語をunsigned-charと見なしています。

個人辞書は、上記で見たように、 `;; okuri-ari entries.', `;; okuri-nasi entries.'を基点として、 それぞれ昇順に保存されています。 個人辞書で見つけられなかった候補については共有辞書から検索され、 そこで見つかり確定された場合はその候補が個人辞書に取り込まれ、 次に同じ見出し語の検索を行なった場合に同候補を最初に出力すべく、 それぞれのミニマムポイントに挿入されます。