Ubuntu Weekly Recipe

第175回 SKKで快適な日本語入力を体験しよう

この記事を読むのに必要な時間:およそ 3 分

Ubuntuの日本語入力には,インプットメソッドにIBus,かな漢字変換にAnthyが採用されています。また最近人気のMozcもUniverseリポジトリから簡単にインストールできるようになっていますので,利用されているユーザも多いのではないでしょうか。

しかし今週のレシピはそんな時流に逆らって,Emacs上で快適な日本語入力を実現するSKKを紹介します。

SKKとは

SKKはSimple Kana to Kanji conversion programの略で,Emacs上で動作する日本語インプットメソッドです。Elispによって実装されているためEmacsが動くなら,UbuntuでもWindowsでもMacでも,はたまた他のOSであっても同じ日本語入力環境を構築することができます。

SKKの最大の特徴であり,他のインプットメソッドと大きく異なる部分が,プログラムによる形態素解析を行なわないところです。一般的なインプットメソッドでは,入力された文章を自動で形態素解析し,品詞を特定し,部分ごとに変換を行ないます。しかしどんなにプログラムの精度を上げても「解析ミス」をゼロにすることはできません。これは有名な例文「ここではきものをぬいでください」を,入力者の意図通りに変換することが不可能なことからも解ります。そこでSKKは「漢字と送り仮名の区切りをユーザが手動で指定する」という方法で,解析ミスを無くしています。プログラムの解析ミスがそもそもあり得ないため,変換時に文節区切りを指定しなおすなどという二度手間とは無縁です。仮にミスしたとしてもそれは入力した自分の責任ですので,⁠他人のせいにできないので)イライラが軽減されるというメリットもあるかもしれません。

また入力中にシームレスな辞書登録や登録削除が行なえるため,辞書にない単語をその場で登録し,その直後から変換可能にできるのも便利な特徴です。これはSKKは品詞を区別しないため,単語と読みの対応のみで辞書を形成でき,辞書登録のコストを低く抑えられるからこそできる特徴です※1)⁠

※1
つまり,SKK辞書は非常に単純な構造をとっています。そんなわけで,はてなキーワードから自動で辞書を生成するスクリプトのような,辞書生成プログラムも存在します

EmacsでSKKを使う

ddskkのインストール

本家のSKKは既に開発が終了しており,現在はSKK Openlabが開発しているDaredevil SKK(ddskk)を使用するのが一般的でしょう。Ubuntuでのパッケージ名はddskkです。ssdkkをインストールすると依存関係により,後述する辞書サーバであるdbskkd-cdb※2や,cdbフォーマットのSKK辞書であるskkdic-cdbパッケージも同時にインストールされます。

Emacsとddskkのインストール

$ sudo apt-get install emacs ddskk
※2
後述のyaskkservを同時にインストールした場合は,dbskkd-cdgはインストールされません。

ddskkで日本語入力

Ubuntuのパッケージからインストールした場合は,特に設定を行なわなくてもddskkを使いはじめることができます。Emacsを起動したらC-x C-jと入力してください。モードラインに「かな」と表示され,SKKによる日本語入力が可能になります。

SKKでは入力を行なうと,ひらがなが確定された状態で入力されます。Anthyなどとは異なり,ひらがな確定入力の状態でスペースキーを押しても漢字変換は行なわれません。漢字や送り仮名の始点では,ローマ字入力字にSHIFTキーを押す必要があります。SHIFTキーを押すことで,ひらがな確定入力モードから漢字変換モードに遷移します。

例えば前述の例文を「ここでは着物を脱いでください」と変換したい場合は,⁠kokodeha Kimono wo NuI dekudasai」と入力します。

カタカナを入力したい場合は,かなモードで'q'キーを押します。モードラインの表記が'かな'->'カナ'に変化し,カタカナを入力することが可能になります。ひらがなに戻す際にはもう一度qを押してください。あるいは,SHIFTを押して漢字変換モードで入力を行ない,変換時にスペースキーではなく'q'キーを押すことでも,カタカナに変換することも可能です。

同様にASCII文字を入力したい場合はかなモードで'l'キーを押します。モードラインの表記は'SKK'となり,キーボードの印字通りの文字を入力することが可能になります。また'L'を押すことで全角英数モードに遷移します。この場合,モードラインの表記は'全英'となります。ASCIIモードや全英モードからかなモードに戻るには,C-jを押してください。

M-x skk-tutorialを実行すれば,ddskkのチュートリアルを行なうことができます。SKKは入力方法が独特ですので,SKKが初めてという場合は一度通して実行しておくと,基本操作を身につける助けになるでしょう。

図1 ddskkを使ってEmacsで日本語入力

図1 ddskkを使ってEmacsで日本語入力

単語登録と削除

変換しようとした単語が辞書になかった場合,または変換候補を最後まで辿っても希望する候補が出てこなかった場合,再帰的単語登録モードに遷移します。ミニバッファに登録対象となる読み仮名が表示されますので,その後に半角スペースを空けて登録したい漢字を入力してください。

また,単語を変換候補に出した状態で'X'キーを押すと,登録した単語を削除することができます。

図2 変換できない単語は,その場で登録ができる

図2 変換できない単語は,その場で登録ができる

dired-xを使う場合の問題

本連載第131回でEmacs上で動くファイラ,diredを紹介しました。diredの拡張版であるdired-xには,⁠カレントバッファのファイルが保存されているディレクトリをdiredで開く」dired-jumpという機能が実装されています。これは非常に便利な機能なのですが,デフォルトでSKKの起動キーであるC-x C-jにバインドされているため,dired-xをロードしているとSKKを起動させることができなくなってしまいます。

そんな場合には,C-x C-jにskk-modeをバインドしなおすか,skk-modeの起動を別のキーにバインドしてしまうとよいでしょう。筆者はddskkに乗り換える前にanthy-elを使用していたことから,anthy-elと同じC-\でSKKを起動できるように設定をしています。

dired-xをロードした場合,C-x C-jにskk-modeをバインドしなおす

(when (require 'dired-x nil t)
  (global-set-key "\C-x\C-j" 'skk-mode))

筆者の設定例。C-\にskk-modeをバインドする

(when (require 'skk nil t)
  (global-set-key "\C-\\" 'skk-mode))

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

  • 標準的な設定

    SKK の記事たいへん興味深く拝見いたしました。

    dired-x.el には dired-bind-jump というユーザ変数が定義されており、これを nil に設定することで ddskk とのキー定義の重複を回避するのが自然です。また、dired-x.el のコメントに従い dired-load-hook から dired-x を load するのが適切です。

    もう一点、C-\ を直接 skk-mode に定義することは推奨されません。これは Emacs 標準の LEIM のキー定義を潰してしまうからです。

    (setq default-input-method "japanese-skk")

    のようにするのが正解です。

    失礼しました。

    Commented : #1  塚本 徹雄 (2011/06/09, 05:50)

コメントの記入