« 2012年10月 | トップページ | 2012年12月 »

2012年11月

2012年11月29日 (木)

SKK(simple kana to kanji conversion)の紹介

SKK(simple kana to kanji conversion)の紹介

Time-stamp: "Wed Feb 22 11:13:49 JST 2012"

日本語入力としてSKKを使うようになったのはテキストエディターの meadow(emacs)を使い始めてからである。始めのうちはatokを使ったけれど 具合が悪い。そこでemacs向けに開発されたSKKに乗り換える。現在ではネッ トインストールでSKKもmeadow本体と同時に簡単に入れることができる。 meadowを使いだした頃は、たぶん後付けでSKKを使えるようにしたと思う。

SKKは、よっぽどの強い動機がなければ使い続けるものにならない。その理 由はシフトキー(小指)の多用にある。SKKには、慣れたら手放せないものに なる中毒性がある。とりあえずテキストエディターのmeadowだけでSKKを使 い始めたが、その他のソフトでもskkime1.5により日本語入力するように なった。指がSKK流儀で動いてしまいms-imeやatokで入力しにくのである。

windowsで使えるかな漢字変換としては、windows付属の ms-ime(microsoft-ime)とジャストシステムのatok、そして超マイナーな skkimeくらいしかない。skkimeの使用方法は他のものと違いすぎて誰でも使 えるものではない。それほどに変わった使い勝手である。

有料のatokに手が出ないがms-imeは嫌という人は、これらと使い勝手が似て いるgoogle-imeを使うしかないようである。他に動きそうな、かな漢字変換 がない。人柱覚悟で使うならある。以前使ったことがあるという人でなけれ ば止めたほうがよい。

ms-imeもatokもmeadowとは相性がよくなかったのでSKKに移行した私にとっ て、windows付属のms-imeに取って変われるSKKのwindows版skkimeがあるこ とはとても助かる。

SKKはローマ字入力で使うものだが、漢字の読みのローマ字入力において第 一文字目をローマ字の大文字で入力する必要がある。また、漢字に送り仮名 が付く場合は送り仮名のローマ字の第一文字目もローマ字の大文字で入力す る。つまり漢字に入るところと出るところの境目を大文字にする。

例えば「読書」は「Dokusyo」と入力し、「読む」は「YoMu」と入力する。 SKKでの日本語入力に慣れてしまうとms-imeやatokでローマ字入力するとき に漢字のローマ字入力の第一文字目と送り仮名の第一文字目を大文字で入力 する癖が出てしまう。

テキストエディターmeadowで使うSKKはmeadow専用であって、ブラウザとか 秀丸エディタとかでは使えない。すっぴんのwindowsならms-imeを使うしか ない。グーグル検索のキーワード入力くらいなら問題ないが、少し長めのも のになると困る。メールなどはmeadowで作ってからウェブメールの編集画面 にコピーアンドペーストしたりする。

SKK Openlab とは佐藤雅彦氏 (現京都大学教授) によって 1987 年に設計、 開発された Emacs 用の日本語入力プログラム SKK を GPL に基づき更に拡 張しようとするラボです。SKK は `Simple Kana to Kanji conversion program' の略であり、その名前に `Simple' が付いていることから、これ を拡張しようとする動きには批判が付いて回りますが、このラボではこうい う批判に捕われずに `Simple, but optionally expandable and still fast!' を目標に開発を行います。
skkime (Windows IME として動作する SKK)
skkime's page
http://homepage3.nifty.com/monjya/skkime.jis.html

SKKはシンプルかな漢字コンバージョンの頭字語になる。どのようにシンプ ルなのかはSKKの変換辞書を見るとよく分かる。例えば「Dokusyo」→「どく しょ」、「YoMu」→「よm」に対する変換辞書は次のようになっている。

(SKK-JISYO.Lから抜粋)
;; okuri-ari entries.
よm /読/詠;和歌を詠む/訓;字の訓み(=訓読み)/讀;「読」の旧字/
;; okuri-nasi entries.
どくしょ /読書/
(注)セミコロンの後にある文字列は注釈になる。注釈を表示する設定にする
と変換候補の表示に注釈が付くようになる。

ローマ字入力された「Dokusyo」を平仮名「どくしょ」に変換する規則はSKK が持っているローマ仮名テーブルによる。第一文字のdを大文字で入力する と下向きの中空な三角形▽の後にdが付いた「▽d_」が表示される。下向き 三角形は変換する漢字の読みの開始点を表している。また末尾のアンダース コア(_)はカーソルを表す。続けて小文字のoを打つとローマ仮名テーブルが 参照されて「▽ど_」になる。さらに続けてkusyoを打ち込むと「▽どく しょ_」になる。ここでスペースキーを押すと「どくしょ」の読みに対応す る「読書」が変換辞書から検索されて「▼読書_」になる。前置きの下向き の中空な三角形が塗り潰されたのは変換候補であることを意味する。もし候 補が幾つもあるときはスペースキーを押す毎に候補が順次入れ替わる。希望 の候補が出たときにエンターキーを押すかctrl+jで確定となる。

SKKの基本辞書(システム辞書)であるSKK-JISYO.Lの「どくしょ」に対応する 変換候補は「読書」しかないのでスペースキーを押すと「▼読書」になる。 そこでさらにスペースキーを押すとミニバッファに「どくしょ _」と表示さ れスペース区切りの後でカーソル(_で表している)が点滅する状態になる。 これは辞書登録モードに入ったことを表す。「Doku」と入力するとミニバッ ファは「どくしょ ▽どく_」になる。ここでスペースキーを押すと「どく しょ ▼毒_」のようになる。ここでエンターキーを押すとかctrl+jで確定す る。「どくしょ 毒_」の状態でさらに「Syo」と打つとミニバッファが「ど くしょ 毒▼書_」などに換わる。ここでエンターキーを打つとかctrll+jで 確定するなら本文上の「▼読書」が「毒書」に換わりユーザー辞書に読みが 「どくしょ」に対応する漢字として「毒書」が登録される。次回からは「読 書」の他に「毒書」が変換候補として現われるようになる。

SKKでは辞書登録という手順を呼び出すことなく通常の変換の自然な延長線 上でさりげなく辞書登録される。登録するという意識のないうちに登録が終 わってしまうところがよい。変換候補は先ずユーザー辞書から検索され、見 当たらなかったら基本辞書を検索する。どちらからも見つからなければユー ザー辞書への登録に移行する。ユーザー辞書から見つかりそれを確定した場 合はそれをユーザー辞書の第一候補にする。基本辞書から見つかり確定した ならユーザー辞書の第一候補にする。このことが辞書の学習機能に相当す る。直近に確定した候補が次回の第一候補になる。

今はどうだか知らないが、以前にms-imeを使っていたとき直前に確定したの にもかかわらず、次の変換でも同じ回数だけスペースキーを押して候補を出 さなければならない。直前に確定した候補を一番に出すことぐらいは何も設 定しないでもやってほしいと思った。どこかの設定をいじればよいのだろう が解決できなくて困った。

一人が使う言い回し(漢字)には癖があり変換確定するたびにSKKは、それを ユーザー辞書に書き込む。SKKをある程度使い込むと基本辞書を外しても日 常の変換には困らなくなる。日頃滅多に使わない変換で辞書に登録されてい る筈の漢字が出てこない。どうしてかと思ったら基本辞書を指定してなかっ たということがあった。私の場合は「まぐろ(鮪)」が変換できなくて基本辞 書の不在に気付いた。魚の名前は私の書き物に現われることがなかったので ある。

送り仮名がある場合は次のようである。「YoMu」を入力では第一文字目のy を大文字で入力するが本文上には「▽y」と表示する。次にoを打つと「▽よ_」 になる。送り仮名の最初としてmの大文字を打つと「▽よm_」になる。 さらにuと打った時点で変換辞書から「よm」に対応する候補が呼び出されて 「▼読む_」と表示される。これが希望する変換であればエンターキーか ctrl+jで確定する。もし「▽よm_」の次にiを入力するなら「▽読み_」にな る。

一般的なms-imeやatokなどのかな漢字変換ではローマ字入力や仮名入力のど ちらであっても未変換なかな文字列として編集画面に現われる。それに対し てSKKではローマ字を大文字で入力することがなければローマ仮名変換表に よりすぐに仮名文字列として確定する。

SKKの変換辞書は漢字の読みに対応する漢字を一行に並べたテキストファイ ルである。辞書は専用のツールを使うことなくテキストエディターで閲覧す ることができる。データをテキストファイルで保存するunixの流儀に従って いる。

ms-imeやatokを使っていた頃にそれらの変換辞書の内容を見たことはない。 ms-imeの辞書と思われるファイル(たいてい拡張子が.dicになっている)をテ キストエディターから開いてみても内容は読めない(バイナリファイルのよう である)。かな漢字変換の変換辞書にはシステム辞書とユーザー辞書がある。 システム辞書は読み出し専用でユーザー辞書はユーザーが辞書登録したもの になる。ユーザー辞書にはテキスト形式で書き出す手段が用意されているら しい。システム辞書の内容を閲覧することができるのかどうかは分からな い。それが出来るとしてもバイナリなファイルは専用のツールを使うことに なる。

SKKを使う以前には、かな漢字変換に単語登録をしたことはない。どうやれ ばよいのか分からない。品詞を登録せよと言われると引いてしまう。登録を 諦めて、ひたすらスペースキーを押して候補が現われるのを待つ。いよいよ 駄目なら漢字一文字ずつで変換してつなげる。

SKKの辞書は、(漢字の)読みとそれに相当する漢字を一行に並べただけとい うまことにシンプルなものである。これを使って何をやろうとしているの か、何が出来るのかは説明するまでもない。品詞などという文法用語の登録 は要らない。単純に漢字の読みとそれに該当する漢字そのもののリストが変 換辞書になっている。

例えば「Honwoyomu」と入力すると「▽ほんをよむ_」と表示される。ここで 変換してもSKKの辞書にそのようなエントリはないのですぐに辞書登録モー ドになってしまう。「HonWoYoMu」のように入力するなら「HonWo」と入力し た時点で画面は「▼本を_」になる(このときはスペースキーを押さなくても 変換候補が出る。二番目の大文字Wで漢字の読みの終点が判定されるからで ある)。続けて「YoMu」を入力すると「本を▼読む_」になる。ここで確定す ればよい。

一般のかな漢字変換に比べるとSKKはとても面倒に感じられる。手書きで 「本を読む」と書こうとするとき、先ず全文をひらがなで「ほんをよむ」と 書き下してから、消しゴムを使って「ほん」を「本」に、そして「よ」を 「読」に書き換えるようなことはしない。文案の段階で既に漢字の「本」と 「読」を使うと決めているはずである。消しゴムを使うという面倒な作業を 機械に任せているから、そのまわりくどい作業を不審に思わない。

SKKは手書きと同じように漢字にしたい読みの始点と終点(送り仮名の最初や 助詞(テニオハ)で指定する)を機械に人間が指示する。そのため機械は漢字 の読みと実際の漢字のリスト(変換辞書)を用意するだけでよい。文法解析な どの面倒なことは要求しない。書き手が漢字表記を望まないのに勝手に漢字 に置き換えるようなことはしない。

「本を読む」くらいの短文なら、かな漢字変換が間違えることはないだろ う。しかし混み入った長い文章を全文ひらがなで与えて、それを一気にかな 漢字変換させるというのは機械にとって難題にすぎる。分かち書きしない、 ひらがなばかりで書かれた文章を読み下すのは人間にとっても難しい。短か い電報文でさえ判読に手間取るものである。

かな漢字変換という仕組みを考えた最初の人が大風呂敷を広げすぎたのがた たっている。滅多にパソコンを使わない人向けにつくってしまった。日常業 務で使う人向けには不親切な仕様でよかった。全部を仮名で入力してから必 要な部分を機械が自動的に漢字で置き換えようとするから難しい。どだい無 理な要求を機械に突き付けている。人は頭に浮かんだことを書き記すとき、 どこを漢字にするかをすでに決めている。思い付いた時点で直ぐに漢字にし たほうがよい。いったん仮名で書いてから漢字変換させ上手くいったかなと 行きつ戻りつするのはジャマくさい。その場でリアルタイムに漢字確定した ほうが気持ちよい。

かな漢字変換が使いにくいと感じたら長い文章を一気変換するのを諦めて細 切れで変換するようになる。この手法しか取らないのがSKKといえる。

SKKは「そんなゴチャゴチャとややこしいことを考えんでも、ようするに漢 字が出てくりゃエージャナイカ」とアッサリ片付けてしまうのである。一般 のかな漢字変換がこだわるモヤモヤの一切合財を一気に迂回(ショートカッ ト)してしまう。手書きなら漢字を忘れたらどうにもならないが、機械なら 漢字になりそうに思えるところを駄目元で変換してみる。そのため不必要に 難しい漢字を使ってしまうことがある。SKKもそのようになるけれど珍妙な 誤変換は起こらない。

SKKを使うにあたって一番面倒なことは漢字部分の始点と終点のローマ字を 大文字で入力することである。左手指でローマ字の大文字を打とうとすると きはシフトキーを右手小指で押す。逆に右手指で大文字を打つには左手小指 でシフトキーを押す。片方の手でローマ字キーとシフトキーを同時に押そう とするとホームポジションを見失いやすい。左右のシフトキーを使い分ける には頭の中で振り分ける。それを思い浮かべる一瞬で打ち込みがぎこちない ものになる。慣れるまではまどろっこしい思いをする。これに慣れるまで我 慢できるかどうかがSKKを使い続けられるかどうかの分かれ目になる。

シフトキー(小指)を多用するSKKの難点はSandSと呼ばれるキーカスタマイズ で解消することができる。スペースキーにシフトキーの機能を持たせるのが SandS (shift and space, space and shift)である。日本語入力においてス ペースキーの出番は殆どない。英語のように単語間をスペースで区切ること がないからである。せいぜい二・三画で丸みの多い平仮名と画数が多く角 ばった漢字の見た目の違いで単語区切りがなくても切れ目を認識できる。仮 名ばかりだと適当にスペース区切りを入れないとまことに読みにくい(未変 換仮名文字列にスペースを入れると機械は変換開始と判断してしまう)。そ れを機械に押し付けているのが一般のかな漢字変換である。

日本語入力ではスペースを使わないことに着目したのがかな漢字変換におい て変換(開始)キーとしてスペースを使うアイデアである。英語ではスペース が多用されるから親指をスペース専用にしている。日本語ではスペースの出 番がないから変換キーとして使う。SandSではスペースキーを変換キーとし て使う他にシフトキーとしても機能するようにする。スペースキーを押しな がら文字キーを押したならスペースキーをシフトキーが押されたとみなす。 SandSでの不便はスペースキーを押し続けたときにスペースの連続入力(リ ピート入力)にならないことである。

SandSにおいても左手指で文字キーを押すときシフト相当のスペースは右手 親指で押すようにしている。逆に右手指で文字キーなら左手親指でシフトになる スペースを押す。小指でシフトキーを押すに比べて格段に楽になる。親指 は、他の四指がホームポジションにあれば押し間違えることはない。左右親指の使い分けも 厳密でなくてよい。

「ここで提案する『SandS』キーは、スペースキーにシフトキーの機能も持 たせたものです。親指でスペースキーを押しながら、アルファベットキー を押すと大文字が入力できます。単にそれだけですが、使って見ると意外に 使いやすいです。最近は日本語の文章でもアルファベットが多く混じるよう になりました。特にNHK、IBM、SONYなど、アルファベットの大文字が続くよ うなケースが多いようです。SandSはこのような場合に威力を発揮します。 『SandS』はSpace and Shift の略です。これが本当の親指シフトですよ ね。」
SKKは独特な日本語入力方法ですが,Emacsが動作するあらゆる環境で利用す ることができます。さらにMac上で動作するAquaSKKや,Windows用のSKKIME といった実装も存在するため,最近ではEmacsの外でも問題なくSKKを利用す ることができます。バックエンドに辞書サーバを持つことで,より強力で柔 軟な変換能力を持たせることもできるSKKを,ぜひ体験してみてはいかがで しょうか。
上記の通り変換方法が特殊なので、別の日本語入力システムに慣れているの であれば、SKKのマスターは苦労する。勿論、その間もユーザーはコン ピュータを使って文章を書く機会は沢山あるだろうし、結局「もう慣れてる 方で……」と挫折した人も多いはず。しかし、慣れたら慣れたでとても使い やすいと思うので、それまで何とか頑張って使って欲しい。そして慣れたら 最後、他の日本語入力システムが微妙に感じるようになり、SKKが入ってい なければ文章を打つのが鬱になってくるのである。なんとも罪深い。

| | コメント (0) | トラックバック (0)

« 2012年10月 | トップページ | 2012年12月 »