かな漢字変換プログラム SKK の紹介

Author: tkita
Published: 2020-09-10
Last Modified: 2020-10-02
GitHub Source: md

はじめに

Emacs でかなや漢字を入力する方法は、標準で同梱されている LEIM や、Google 日本語入力のオープンソース版である Mozc など複数の方法があります。Windows で Emacs 27.1 以降 をお使いであれば tr-emacs-ime-module を導入することで普段から使い慣れている MS-IME を利用することができます。

いろいろ試して好みのものを選択するのが良いと思いますが、選択肢のひとつとして SKK というソフトウェアもあります。

このページでは、これから SKK を試してみようと考えている方を対象に、SKK を使った日本語入力とはどのようなものなのかといった基本的な操作方法を紹介してみようと思います。

SKK とは

SKK は、1987 年に佐藤雅彦氏が開発した Emacs で動く日本語入力システムです。フリー・ソフトウェアであり、GPL のもと公開・配布されています (1)。一部の拡張機能は外部コマンドを使う必要がありますが、標準機能は Emacs Lisp だけで作られています。

このページも筆者が SKK を使って書いたものです。

このページの注意事項

  • SKK のインストール方法は解説しません (2)

  • かな入力の方法は、ローマ字かな変換に限って記載しています (3)

  • 一般的な IME と SKK との相違点が分りやすいように両者の操作を併記してみました。どちらかに偏ることのないよう公平性に注意しながら書きましたが、筆者の認識違いが含まれている可能性もあります。

ローマ字かな変換方式によるかな入力

まず、どのようにかな文字を入力するのかを紹介します。

一般的な IME

一般的な IME では、ローマ字の打鍵に伴って、ローマ字かな変換ルールに沿ってかな文字が生成されて画面に表示されます。このときのかな文字は 未確定状態 であり、アンダーライン表示などで明示されます。

k o n n n i t i h a --> こんにちは
                        ^^^^^^^^^

未確定状態のかな文字列は ENTER キーを押すことで確定され、ESC キーではキャンセル(全部取消し)されます。

こんにちは --> [ENTER] --> こんにちは
^^^^^^^^^

SKK

SKK もローマ字かな変換によってかな文字を入力しますが、ローマ字入力によってかな一文字が求まる単位に確定されていきます。

k o n n n i t i h a --> こんにちは

ENTER キーや ESC キーは、それぞれ本来の機能が作動します。

かな漢字変換

一般的な IME

未確定状態のかな文字列があるときに SPACE キーを押すことで、IME はその未確定文字列を解析して漢字の候補を表示します。

こんにちは --> [SPACE] --> 今日は
^^^^^^^^^                  ^^^^^

候補として表示される漢字は、やはり未確定状態です。欲しい候補が表示されるまで繰り返し SPACE キーを押して、欲しい候補が表示されたなら ENTER キーで確定します。

今日は --> [ENTER] --> 今日は
^^^^^

SKK

前述したとおり、SKK ではローマ字かな変換ではその都度かな文字が確定していますので、SPACE キーを押しても単に空白が挿入されます。

漢字を得るために未確定状態を作るには、いまから入力し始めるかな文字がかな漢字変換の検索キー(4)であることを SKK へ伝えるべく、ローマ字かな変換の最初の打鍵を大文字ローマ字で入力します。

K o n n n i t i h a --> ▽こんにちは

最初の K は大文字であり、SHIFT + k です。また、画面には自動的に逆三角形(▽)が表示されます。これは、かな文字即時確定モード から 見出し語入力モード に移ったことを意味する表示です。のちほど自動的に消えますのであまり気にしないでください。

この状態で SPACE キーを押すと、▽マークから SPACE キーを押した位置までの間の文字列(見出し語と言います)を検索キーとして辞書検索を行い、漢字の候補を表示します。

▽こんにちは [SPACE] --> ▼今日は

逆三角形が白抜きから黒塗りへと変化して 漢字変換モード に移ったことが示されます。求めている候補が表示されるまで繰り返し SPACE キーを押して、求めている候補が表示されたタイミングで CTRL + j キーで確定します。黒塗りの逆三角形が消えて、最初の かな文字即時確定モード に戻ります。

▼今日は --> [C-j] --> 今日は

ここまでいかがでしょうか。

かな入力が即時確定であったり、かな漢字変換の検索キーを作るのに SHIFT キーを必要とするなど、一般的な IME とは操作体系が少し異なることが分かったと思います。

連文節かな漢字変換

最初に言うと、SKK は単漢字変換を基本としており、連文節変換は未サポートです。

一般的な IME

思い描いた文章について、その読みを一気に入力して、適当な(好みの)長さの箇所で SPACE キーで漢字変換するのが通常の使い方であると思われます。

きょうはいしゃにいった --> [SPACE] --> 今日は 医者に 言った  ※分かりやすいように空白を挿入しています

さて、思い描いた文章は「言った」ではなく「行った」ですので、カーソルキーを操作して対象を変更して、 SPACE キーを押して「行った」が表示されたタイミングで ENTER キーを押して確定します。

--> [SPACE] --> 今日は 医者に 行った --> [ENTER] --> 今日は医者に行った

SKK

次のように打鍵して SPACE キーを押しても、見出し語「きょうはいしゃにいった」は辞書には(おそらく)登録されていないことでしょう、漢字変換は行われず辞書登録モード(後述)に移ります。

K y o u h a i s h a n i i t t a --> きょうはいしゃにいった --> [SPACE] --> 辞書に登録されていないので辞書登録モードに移る

そこで、SKK では、次のように操作します。

K y o u --> ▽きょう

  [SPACE] --> ▼今日

h a --> 今日は

I s h a --> 今日は▽いしゃ

  [SPACE] --> 今日は▼医者

n i  --> 今日は医者に

I T t a --> 今日は医者に▼行った

  [C-j] --> 今日は医者に行った

「▼今日」の箇所で C-j で確定するのもよいですが、C-j を省略して通常のローマ字入力を継続すれば、直前の漢字変換は自動的に確定されます。「行った」といった 送り仮名のある漢字変換 は次項で説明します。

ここまでいかがでしょうか。

一般的な IME では、思い描いた文章の読みを一気に入力して、IME による解析・漢字変換が自分の思いどおりであるか点検して、もし違う箇所があれば修正していく、こんな感じでしょうか。

機械学習などによって IME も進化していますので、例示したような誤変換はあまり発生しないかもしれません。しかし、欲しい漢字と違う箇所が多数発生してしまったときは、その修正作業に集中する必要があるために思考が一時中断してしまうようにも感じられます。

SKK は、思い描いた文章について、1ワードずつ選びながら組み立てていく、そんな感じです。 文章を左から右に思考するように画面上のかな文字・漢字も組みあがっていきますので、思考と進行方向が常に一致しているようにも感じられます (5)。

送り仮名を伴うかな漢字変換

一般的な IME

普通に読みを入力して SPACE キーで変換します。送り仮名は IME が解析してくれますので、特別な操作は不要です。

o k u r i --> おくり --> [SPACE] --> 送り --> [ENTER]

SKK

一般的な IME と比べて、SKK は送り仮名の解析は 行いません ので、ユーザが指示する必要があります。

まず、いまから入力するかな文字列が見出し語であることを SKK に伝えるために O を大文字で入力します。そのあと、送り仮名の開始位置を SKK に伝えるために R を大文字で入力します。送り仮名の R を打鍵した時点で SPCAE を打鍵することなく▼モードに入って漢字変換が行われます。

O k u R i --> ▼送り --> [C-j] --> 送り

大文字 R の入力と同時に、画面に * が表示されて 送り仮名の開始時点 を明示します。自動的に消えますので気になさらないでください。

辞書登録

一般的な IME

かな漢字変換の操作をしていて欲しい漢字や単語が候補として表示されなかった場合(6)、文章を書く作業を一時中断し、特定のキー操作で辞書ツールを起動し、辞書ツールの中で読みや漢字を登録することと思われます。

SKK

同じく、欲しい漢字や単語が候補として表示されなかった場合、自動的に 辞書登録モード に移ります。

ミニバッファの中で単漢字変換などを駆使して欲しかった漢字や単語を作りあげて CTRL + j で確定すると、辞書登録モードを抜けます。もとのバッファにはたったいま登録した漢字・単語が挿入されます。

いま、辞書登録モードに居ることは認識する必要がありますが(ミニバッファですので自明ですが)、通常の SKK 操作体系のまま辞書登録が可能であり、確定すると同時にシームレスに文書を書く作業に復帰できます。

まとめ

いかがだったでしょうか。

Emacs の上で日本語の文章を作成するときに必要となる基本的な操作について、SKK を使うならどのような操作であるかが雰囲気だけでもお分かりいただけたと思います。

少しでも SKK に興味を持っていただけたなら、ぜひとも DDSKK パッケージをインストールして試してみてください。当ページではあえて紹介しませんが、以下のような機能や特徴があります。

  • マイナーモードとして作られており、Emacs の操作体系をジャマすることなくかな漢字変換が可能

  • 直近のかな漢字変換結果を一番最初に表示(個人辞書は、自分がよく使う単語ほど最初に表示されるように育ちます)

  • TAB キーで、見出し語を補完(キー操作の省力化)

  • M-SPACE で、見出し語を補完しつつ漢字変換と確定まで行う(さきほどかな漢字変換したばかりの単語は最小限のキー操作で再現可能)

  • Emacs Lisp の評価結果を候補として表示することが可能

  • $ キーで、カーソル位置にある文字の各種文字コードを表示

  • 設定ファイルや個人辞書は単なるテキストファイルであるため、ファイル共有サービス等を活用することで異なるマシン間でも同じ設定・同じ学習結果を容易に再現できる

  • Emacs が動くなら、OS に関わらずに同じ操作で日本語文章書きが可能

  • ソースコードが公開されており、自分で自由に機能拡張ができる(便利機能を作った際には Pull Request お願いします)

脚注

  1. https://github.com/skk-dev/ddskk

  2. MELPA で DDSKK パッケージが登録されています。

  3. AZIK などローマ字かな変換以外のかな入力も利用できます。

  4. SKK では見出し語と呼びます。

  5. もちろん、一般的な IME でも短いワード単位で確定していく操作も可能です。

  6. 先頭に戻るので「もしかしてスルーしちゃったのか?」と感じて2週目に突入する、ここでも「作業の中断」が発生するかと思われます。