⌨️

日本語入力に SKK を使ってみる話

2024/01/13に公開

私がハンドルネームとして用いている文字列 KusaReMKN腐れ蜜柑 に由来します[1]。 するとある人が訊ねて言いました。 “K が大文字であることは受け入れられる。 しかし一体どうして R まで大文字であるのか” と。 私はそれに答えて言いました。 “SKK を用いて 腐れ と入力するとき、私の指は KusaRe と打鍵するからである” と。

実行環境

Ubuntu と FreeBSD で動作確認を行っています。

Ubuntu
$ uname -a
Linux iyokan.local.kusaremkn.com 6.2.0-39-generic #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
FreeBSD
% uname -a
FreeBSD manderin.local.kusaremkn.com 14.0-RELEASE-p3 FreeBSD 14.0-RELEASE-p3 #0: Mon Dec 11 04:56:01 UTC 2023     root@amd64-builder.daemonology.net:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
% cat /etc/os-release 
NAME=FreeBSD
VERSION="14.0-RELEASE-p4"
VERSION_ID="14.0"
ID=freebsd
ANSI_COLOR="0;31"
PRETTY_NAME="FreeBSD 14.0-RELEASE-p4"
CPE_NAME="cpe:/o:freebsd:freebsd:14.0"
HOME_URL="https://FreeBSD.org/"
BUG_REPORT_URL="https://bugs.FreeBSD.org/"

SKK のインストール

上のお話は全てフィクションです。 KusaRe腐れ の一致も偶然です。 何はともあれ、まずは SKK をインストールしましょう。

本来の SKK (Simple Kana to Kanji conversion program) は Nemacs 上で動作するかな漢字変換プログラムです。 オリジナルの SKK はもはや開発されていませんが、それを拡張し、現代の Emacs に対応した Daredevil SKK (ddskk) の開発が現在でも継続されています。 また、各種の入力メソッドシステムでも SKK の入力方式を利用できるようになっています。 Ubuntu をはじめとする Unix なデスクトップ環境の多くでは IBus や Fcitx などの SKK を利用できますし、Linux 上の FbTerm や FreeBSD 上の vt などのようにウィンドウシステムを持たないような環境では uim の SKK を利用できます。

ここでは uim の SKK をインストールする方法を紹介します。 Uim の SKK は Ubuntu で利用できる他の入力メソッドシステムの SKK に比べて、より ddskk の動作に近いように感じられます[2]。 また、他のアプリケーションとの相性も良く、カスタマイズ可能な項目が多いことも魅力のひとつです。

Ubuntu に uim-skk をインストールする

Ubuntu で uim の SKK を利用するには、パッケージ uim-skk をインストールします。 このパッケージをインストールすると、SKK 用の辞書 (パッケージ skkdic) も同時にインストールされます。

Ubuntu に uim-skk をインストールする
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install uim-skk

キーボード入力に使う IM システムを指定する

Ubuntu で用いられているデスクトップ環境でキーボード入力に使う IM システムを設定するためには、GNOME の 設定 から 地域と言語 にある インストールされている言語の管理 を開きます。

**設定** から **地域と言語** にある **インストールされている言語の管理** を開く
設定 から 地域と言語 にある インストールされている言語の管理 を開く

言語サポート と名付けられた小さなウィンドウが開くので、キーボード入力に使う IM システムuim に設定します。
**キーボード入力に使う IM システム** を **uim** に設定
キーボード入力に使う IM システムuim に設定

設定を適用するためには、システムを再起動する必要があります。

X 以外でも uim-skk を使う

FbTerm など X 以外の環境で日本語を入力する場合、uim-fep コマンドを実行することで uim の入力メソッドシステムを利用できます。 利用する入力方式は、後述する uim の設定で説明するように設定されている必要があります。

FreeBSD に uim-skk をインストールする

FreeBSD で uim の SKK を利用するためには、少なくともパッケージ uim をインストールします。 ウィンドウシステムを利用するような環境である場合には、パッケージ uim-gtkuim-qt5 のインストールも必要となるかもしれません。 SKK が利用する辞書はパッケージ ja-skk-jisyo としてインストール可能ですが、これは大変古い版 (2014 年 09 月) であることに注意が必要です。

FreeBSD に uim をインストールする
# pkg update
# pkg upgrade
# pkg install uim		# 共通
# pkg install uim-gtk uim-qt5	# ウィンドウシステムを利用するとき
# pkg install ja-skk-jisyo	# 辞書をインストールするとき

X の上で uim-skk を使う

X の上で uim の入力メソッドシステムを使うには ~/.xinitrc に設定を記述する必要があります。 次のように実行することで、システムの xinitrc をもとに ~/.xinitrc を作成できます。

~/.xinitrc を作成
% ed ~/.xinitrc
r /usr/local/etc/X11/xinit/xinitrc
/twm/i
export XMODIFIERS='@im=uim'
export GTK_IM_MODULE='uim'
export QT_IM_MODULE='uim'
export XIM='uim'
export XIM_PROGRAM='uim'
uim-xim &
.
w
q

ここで、uim-xim が実行されるよりも前に起動したプログラム上では日本語入力を利用できないことに注意してください。 デフォルトの xinitrc では twm の他に三つの xterm と xeyes が起動します。 これらは uim-xim が実行されるよりも前に起動され、日本語入力を利用できない恐れがあります。 日本語入力を利用するためには、xinitrc を編集して起動順序を修正するか、新たにプログラムを起動してください。

X 以外でも uim-skk を使う

vt など X 以外の環境で日本語を入力する場合、uim-fep コマンドを実行することで uim の入力メソッドシステムを利用できます。 利用する入力方式は後述する uim の設定で説明するように設定されている必要があります。

新しい SKK 用の辞書を用意する

skk-dev による SKK 用の辞書を利用することで、古過ぎる辞書を置き換えることができます。 GitHub の skk-dev/dict にアクセスし、必要な辞書ファイルをダウンロードできます。 ディスクの容量に困っておらず、システム用の辞書として利用するならば SKK-JISYO.L がおすすめされています。

Ubuntu に新しい SKK の辞書をインストールする

Ubuntu で SKK-JISYO.L をシステムにインストールするには、次のように実行します。 この例では SKK-JISYO.L/usr/local/share/skk/ の配下にインストールし、それを alternative に登録することで /usr/share/skk/SKK-JISYO として利用できるようにしています。

Ubuntu に SKK-JISYO.L をインストールする
$ sudo mkdir -p /usr/local/share/skk/
$ curl https://raw.githubusercontent.com/skk-dev/dict/master/SKK-JISYO.L | sudo tee /usr/local/share/skk/SKK-JISYO.L >/dev/null
$ sudo update-alternatives --install /usr/share/skk/SKK-JISYO SKK-JISYO /usr/local/share/skk/SKK-JISYO.L 50
$ sudo update-alternatives --set SKK-JISYO /usr/local/share/skk/SKK-JISYO.L
手動でインストールした SKK-JISYO.L をアンインストールする

上の方法を用いて手動でインストールした SKK-JISYO.L をアンインストールするには、次のように実行します。

インストールした SKK-JISYO.L をアンインストールする
$ sudo update-alternatives --auto SKK-JISYO
$ sudo update-alternatives --remove SKK-JISYO /usr/local/share/skk/SKK-JISYO.L
$ sudo rm /usr/local/share/skk/SKK-JISYO.L 
$ sudo rmdir /usr/local/share/skk/

FreeBSD に新しい SKK の辞書をインストールする

FreeBSD で SKK-JISYO.L をシステムにインストールするには、次のように実行します。 この例では SKK-JISYO.L/usr/local/share/skk の配下にインストールします。 これはパッケージ ja-skk-jisyo でインストールされる SKK 辞書が配置されるディレクトリです。 このパッケージの辞書と区別できなくなることを恐れる場合は、SKK-JISYO.new.L などのようにファイル名を変更してください。

FreeBSD に SKK-JISYO.L をインストールする
# mkdir -p /usr/local/share/skk/
# fetch -o /usr/local/share/skk/SKK-JISYO.L https://raw.githubusercontent.com/skk-dev/dict/master/SKK-JISYO.L
手動でインストールした SKK-JISYO.L をアンインストールする

上の方法を用いて手動でインストールした SKK-JISYO.L をインストールするには、次のように実行します。

インストールした SKK-JISYO.L をアンインストールする
# rm /usr/local/share/skk/SKK-JISYO.L
# rmdir /usr/local/share/skk/

uim の設定

Uim の入力メソッドシステムを快適に利用するために、いくつかの設定項目を修正する必要があります。 コマンド uim-pref-gtk もしくは uim-pref-qt を実行するか、uim のツールバーにあるスパナ 🔧 のアイコンをクリックして uim の設定ウィンドウを開きます。

全体設定 (Global settings)

左側のペインから 全体設定 (Global settings) を選択し、入力方式の利用準備 (Input method deplyment) から 標準の入力方式を指定 (Specify default IM) にチェックを入れます。 さらに、標準の入力方式 (Default input method) に SKK を選択し、使用可能にする入力方式 (Enabled input methods) の 編集… (Edit...) を選択し、SKK のみを有効にします。

**Specify default IM** にチェックを入れ、**Default input mtehod** に **SKK** を指定する
Specify default IM にチェックを入れ、Default input mtehodSKK を指定する

**Enabled input methods** を **SKK** のみにする
Enabled input methodsSKK のみにする

XIM

左側のペインから XIM を選択し、XIM の編集領域 (Preedit settings of XIM) ら 編集領域のフォントにアンチエイリアスをかける (Use anti-aliased fonts for Over-the-Spot/Root-Window preedit) にチェックを入れます。 編集領域で使用されるフォント名 (アンチエイリアス時) (Font name for preedit area (anti-aliased)) にはデフォルトで Sans が指定されていますが、このままで問題ありません (好みのフォントがある場合、ここで指定することができます)。

**Use anti-aliased fonts for Over-the-Spot/Root-Window preedit** にチェックを入れる
Use anti-aliased fonts for Over-the-Spot/Root-Window preedit にチェックを入れる

全体キー設定 (Global key settings)

左側のペインから 全体キー設定 1 (Global key settings 1) を選択し、[全体] オン ([Global] on) と [全体] オフ ([Global] off) から <Shift>space を取り除きます。 SKK では Shift キーを多用するため、この <Shift>space の組み合わせを意図せず押下することが多くあります。 このキーで日本語入力がオン/オフされるしまうとストレスの種になります。

**[Global] on** と **[Global] off** から **<Shift>space** を取り除く
[Global] on[Global] off から <Shift>space を取り除く

SKK 辞書 (SKK dictionary)

左側のペインから SKK 辞書 (SKK dictionary) を選択します。 辞書ファイル (Dictionary files) から システム辞書ファイル (System dictionary file) の設定を確認します。 デフォルトでは、Ubuntu で /usr/share/skk/SKK-JISYO が、FreeBSD で /usr/local/share/skk/SKK-JISYO.L が設定されています。 インストールしたファイルと異なるものが設定されている場合、選択… (Select...) から適切に設定しなおします。

**System dictionary file** を確認する
System dictionary file を確認する

SKK (高度) (SKK (Advanced))

左側のペインから SKK (高度) (SKK (Advanced)) を選択します。 特殊操作 (Special operation) から vi 協調モードを有効にする (Enable vi-cooperative mode) にチェックを入れます。 このモードを有効にすると Esc キーで日本語入力が無効化され、vi のコマンドモードへの移行がスムーズになります。

**Enable vi-cooperative mode** にチェックを入れる
Enable vi-cooperative mode にチェックを入れる

SKK キー設定 (SKK key bindings)

左側のペインから SKK キー設定 1 (SKK key bindings 1) を選択します。 モード遷移 (Mode transition) から [SKK] 漢字コード入力モード ([SKK] kanji code input mode) を選択し、\ (バックスラッシュ) を追加します[3]

**[SKK] kanji code input mode**
[SKK] kanji code input mode\ を追加する

全ての項目を設定し終えたら、適用(A) (Apply) を押下し、OK(O) を押下します。 設定を適用するには、ログインしなおすか、あるいはコンピュータを再起動します。

GUI を用いずに設定する

GUI を用いずにこれらの項目をカスタマイズする場合、Scheme で記述される設定ファイルを ~/.uim.d/customs/ の配下に配置します。 GitHub Gist にこれらの関連するファイルを公開してあるので、参考にしてください。

https://gist.github.com/KusaReMKN/a77a613f14dd8fba325112e038e0227a

SKK の基本操作

SKK の操作方法は他の日本語入力プログラムに比べて特殊に感じられるかもしれません。 しかし、この洗練された操作に慣れてしまえば、たちまち SKK の虜になるでしょう。

ひらがなを入力する

まずは日本語の基本であるひらがなを入力してみましょう。 <Control>j を押下するとひらがな入力モード (かなモード) に移ります。 Japanese の j と憶えましょう。 このモードでは、小文字で入力されたローマ字がひらがなに変換されます。 例えば、ababamaru と入力すれば あばばまる に変換されるはずです。 小書き文字を入力するためには x を使います。 例えば xaxtsu のように入力します。 axtuあっ になります。

直接入力に戻る・全角英数字を入力する

ひらがなの入力方法を心得たので、直接入力モード (アスキーモード) に戻ってみましょう。 ひらがな入力モードで l (小文字のエル) を押下すると直接入力モードに移ります。 Latin の l と憶えましょう。 ひらがな入力モードで ababalmaru と入力すれば あばばmaru のようになります。

全角英数字を入力することもできます[4]。 全角英数字入力モード (全英モード) に移るためには、ひらがな入力モードで L (大文字のエル) を押下します。

カタカナを入力する・半角カナを入力する

続いて、カタカナを入力するモードを紹介します。 まずはひらがな入力モードに移行し、その状態で q (キュー) を押下するとカタカナ入力モード (カナモード) に移ります。 ひらがな入力モードでは入力されたローマ字がひらがなに変換されましたが、このモードではカタカナに変換されます。 もう一度 q を押下するとひらがな入力モードに移ります。 例えば、ひらがな入力モードで abaqbamaqru と入力すれば あばバマる に変換されます。

半角カナを入力することもできます[5]。 半角カタカナ入力モードに移るには <Control>q を押下します。 半角カタカナ入力モードからひらがな入力モードに移るには q を押下します。

文字コードで入力する

あまり多くの人が使う機能ではないかもしれませんが、文字コードを利用して文字を入力できます。 ひらがな入力モードで \ (バックスラッシュ) を押下し、JIS 漢字コードを十六進数で入力して <Enter> を押下することで対応する文字を入力できます。 また、\ に続けて u を押下し、Unicode の符号位置を十六進数で入力して <Enter> を押下することでも文字を入力できます。 例えば、\4c24<Enter>\u681e<Enter> と入力すれば 未栞 に変換されます。

漢字を入力する

SKK で漢字を入力する操作は、他の日本語入力プログラムと比べて最も奇妙な部分のひとつでしょう。

現在よく普及している日本語入力プログラムの多くは、変換操作の際に自動的に形態素解析を行います。 つまり、入力された文や語句を自動的に品詞分解しています。 コンピュータはこの処理の過程において、時折ミスをします。 例えば、くるまでまつ車で待つ とも 来るまで待つ とも解釈でき、時にコンピュータの解析結果は意図しない結果になります。 SKK はこの形態素解析の機能を有していません。 そのため、漢字に変換される範囲は人間によって指定される必要があります。 これは短所のようにも思われますが、方言や専門用語が多く登場する文章など、一般的な形態素解析が通用しないような文章を入力する場合にもコンピュータによる解析ミスが起こらないことを意味しています。

さて、SKK で漢字に変換するためには、ひらがな入力モードで漢字に変換する最初の文字を大文字で入力します (あるいは、漢字に変換する最初の文字の前に Q を押下します)。 そして、漢字に変換する最後の文字の後にスペースを押下します。 入力の最中には ▽かんじ のように表示され (▽モード)、スペースを押下することで ▼漢字 のように表示されます (▼モード)。 変換を確定するために Enter を押下する必要はありません。 そのまま入力を続行することで変換された漢字が確定されます。 例えば、Kanji woNyuuryoku suru と入力すれば 漢字を入力する に変換されます。 送り仮名を伴う漢字変換を行う場合、送り仮名の先頭の文字も大文字で入力します。 例えば、AkaKuSoMaru と入力すれば 赤く染まる に変換されます。 いづれも場合も、意図した漢字に変換されない場合にはスペースを押下して次の候補に変換できます。 前の候補に変換するには x (小文字のエックス) を押下します。 変換を中断するには <Esc> を押下します。

実は、カタカナに変換する操作も漢字変換と同様に行えます。 カタカナに変換する最初の文字を大文字で入力し、カタカナに変換する最後の文字の後に q を押下すると、その範囲はカタカナに変換されます。 例えば、KatakanaqniHenkan saremasuカタカナに変換されます

辞書に登録する

漢字に変換する操作の中で、辞書に登録されていない語に遭遇すると ▼きららざか【】 のように隅付き括弧表示されます。 このモードでは単語を辞書に登録することができます (登録しない場合は <Esc> を押下してキャンセルできます)。 このモードで入力された文字は、隅付き括弧の中に表示されます。 隅付き括弧の内部に表示されている文字列が変換先の文字列として登録されます。 雲母坂きららざか の読みで登録するには ▼きららざか【雲母坂】 の表示になるように入力して <Enter> を押下します。

登録されている語を削除するためには、▼モードで削除する語が表示されている状態で X を押下します。 ▼雲母坂【Really purge? (yes/no) 】 のように表示され、正気であることを確認されるので yes と入力して <Enter> を押下すると語を削除できます。

もっと使ってみる

もっともっと使ってみてください。 沼はすぐそこです!

Unicode に対応する

絵文字や多言語文字を扱う際には Unicode が便利です。 しかし、uim-skk はその内部コードが EUC-JP (EUC-JIS-2004) で表現されているため、JIS X 0213 にない文字を扱うことができません。

この問題に対処するために、阿波々野 三太夫氏のブログで公開されているパッチ、及び κeen 氏が修正を加えたものが公開されています。 Ubuntu にインストールされた uim-skk に κeen 氏によるパッチをあてることで uim-skk を Unicode 対応させることができます[6]

しかし、この方法を用いて uim-skk を Unicode 対応させた場合、uim-skk を構成しているファイルに不整合が生じる恐れがあります。 また、そのような状況に陥った場合、各種プログラムを正常に動作させられなくなる恐れがあります[7]。 この場合、uim-skk をインストールしなおすことで復元できる場合があります。

Windows でも使いたい

Windows でも SKK を利用することができます。 例えば、SKK日本語入力FEPCorvusSKK があります。 インストール方法など詳細な紹介は割愛します。 各種配布ページなどを参照してください。

おわりに

おわりです。

当然、この記事に含まれる漢字かな交じり文は全て SKK を用いて入力されました。


参考リンク

脚注
  1. みかんちゃん と呼ばれると大変喜びます! ↩︎

  2. ddskk では Shift キーが間に合わずに KusarE のように打鍵しても 腐れ に変換してくれますが、uim の SKK はこの動作を忠実に再現しています。 ↩︎

  3. 筆者は US 配列のキーボードを利用しているので \ を追加しました。 日本語キーボードでは yen で入力できるのでしょうか。 あるいは yen\ が区別されるのでしょうか。 ↩︎

  4. 使わないほうが良いという思想もあります。 ↩︎

  5. やはり、使わないほうが良いという思想もあります。 ↩︎

  6. この方法は FreeBSD で検証していません。 FreeBSD にインストールされる uim のバージョンは 1.9.0 であり、この方法が利用できるのか定かではないからです。 ↩︎

  7. 例えば、アプリケーションプログラムを起動しようとするとウィンドウが一瞬表示されて異常終了するなどといった不具合が発生します。 ↩︎

Discussion