SKK(エスケイケイ、Simple Kana to Kanji conversion program)とは、オープンソースで開発されている日本語入力システム(日本語入力メソッド)である。
概要
東北大学教授の佐藤雅彦氏によって開発されたシステムであり、現在はSKK Openlabによってメンテナンスされている(同ラボからリリースされるSKKはDaredevil SKKと呼ばれている)。Emacs上で動くもの(Emacs Lispで実装されたもの)がオリジナルのSKKであるが、現在様々なプラットフォームで動くように有志によって移植されており、WindowsからMac、SCIMなどのフレームワークでサポートするLinuxは勿論のこと、最果てにはAndroidで動くものまで存在する。凄い、凄いぞ、SKK。
また、シフトキーを多用するため、小指を酷使し、最悪腱鞘炎になる可能性もあるが、SandSなどSKKユーザーにとっては当たり前だが、傍から見た一般人にとってはあんまりな、変態的なアプローチによって対処できる。
非常に独特な変換方法であるがため、一旦慣れてしまうとSKK以外の日本語入力システムは使えない、って人もなかなか多い。
その非常に独特な変換方法について
最初に言っとくけど、SKKの変換方法はガチで非常に独特である。
SKKの最大の特徴は、形態素解析(簡単に言うと、ひらがなで構成された文章を解析し、単語に分けた後、品詞を判別すること。Wikipedia見れ)を一切行わず、文章の成分の解析(文章中で、どれが「かな」どれが「漢字」か)を全てユーザーが行うことである。
詳しく解説しよう。MS-IMEやATOKは、スペースキーを押され変換を命令されたら、どこの単語を変換すればよいか文章を解析し、最適な漢字へ変換する。この動作は全て日本語入力システムが行う。しかし、SKKは形態素解析のプログラムを持たない。ということは、SKKはどれが漢字に変換すればいいかどころか、文字列のどれが単語で何の品詞かさえも分からないのである。そのためユーザーは、シフトキーをかっちゃかっちゃと押しながら、漢字変換する単語を一語一語ずつこちらから指定するのである。通常、SKK使用時は入力してもひらがな(モードによる)が確定の状態で打ち出され、こちらから変換を指定しない(シフトキーを押さない)限りは漢字変換は開始されない。また、文章を解析する能力を持たないので、SKKの変換候補は辞書を検索してヒットした順に並べられている。滅多に使わない字だと、変換候補とにらめっこが続くのはSKKユーザーが誰しも経験することである(一応、ユーザー辞書というものが存在し、今まで変換された文字はプールされ、次に変換する際は優先に変換候補に出される。なのである程度は最適化されるが、ま、その辺はMS-IMEやATOKの方が有利である)。
よく分からんだろうから変換方法を実例してやるわ
じゃあ「へんかん」って文字列を「変換」と変換してみる。べ、別に洒落じゃないんだからね///
へんかん
あれ、文字が全部ひらがなになって、確定の状態で出てくるね。これじゃ変換できねえよksg。
なぜならば、SKKは変換したい時は指定しないといけない。要は、漢字を変換したい時にだけSKKの変換を開始するトリガーとしてシフトキーを押す、ということである。シフトキーが押されるタイミングは、
である。
変換のプロセスが開始されると、
▽へんかん
と頭に白抜きの逆三角(▽)が付く。この状態で入力された文字列は「見出し語」と呼ばれ、変換の対象になる(また、この状態を「▽モード」と呼ぶ)。
ここからスペースキーを押すことで変換が開始されるのは、他の日本語入力システムと同じである。安心だね。じゃあ早速スペースキーを押してみようか。
▼変換
▽が▼になり、なんとか漢字が変換されたね。この状態は「▼モード」と呼ばれ、見出し語を辞書に従って変換するモードである。もし、他の単語に変換したかったらスペースキーを押すと別の候補が表示される。
じゃあ、文章を変換してみようか。
「家の裏でマンボウが死んでる」
この文章をローマ字で再現すると以下のようになる(変換の候補が全てトップに出てきたと仮定する)。
Ie noUra deMannbouqgaSiNnderu
スペースキーを押したところは半角空白に、シフトキーを押したところ(と "q"を押したところ)は大文字になっている。見難いと思うけど、ちょっとは配慮してやったぞ。喜べ愚民。
(マンボウ(mannbou)の後に"q"がタイプされているが、これによって「まんぼう」を「マンボウ」とカタカナにしている。詳細は後述)
とにかく、このようにキーボードをタイプすることで上記のような文章に変換することができる。先程も書いた通り、ひらがなはすべて確定の状態で打ち出されるのでエンターキーを押す必要が少なくなるというのはSKKの利点の一つである。また、変換する文字が候補一覧のウインドウ(Emacsだとバッファ)を出さずに出たら、そのまま入力を続行すれば確定されるため(「暗黙の確定」と呼ばれる)、エンターキーを押さずに済む。エンターキーをできる限り迫害できる日本語入力システム、それがSKKなのです。
送り仮名を指定した瞬間に、動詞は変換がされるので、欲しい変換候補が一番に出てきたら、スペースも押さずそのまま次の文字を入力できる。ただし誤変換には注意。
また、候補一覧から文字を選択する方法も独特である。MS-IMEやATOKならば、候補ウインドウから矢印キーを使って選択するが、SKKの場合は、変換候補の単語に英字が一つずつ割り当てられ、変換したい候補の英字をタイプすることで選択され確定する。
変換候補はこんな感じに表示される。「き」で変換した。
A:気 S:期 D:機 F:木 G:樹 H:基 J:器 K:奇 L:黄 [残り 129]
この中に変換したい漢字がなければスペースキーを押すことで、次の候補が表示される。QWERTY配列の真ん中の列の順に英字が割り振られているのも、魅力の一つである。ナイスだね!
また、ここまでの解説で分かったと思うけど、SKKは一度に一語しか変換できない(決して欠点なんかじゃないぜ)。他の日本語入力システムは多文節の変換が可能であるが、SKKは単文節のみの変換を行うことで、シンプルかつ流れるような変換(後述)が可能になっているのである。
カタカナについて
変換モードになっている際、キーボードの"q"を押すと、文字列はカタカナになる(カタカナモードで同様の動作を行うと、ひらがなになる)。とってもとっても便利。
▽どびんす
の状態で"q"を押すと、
ドビンス
と確定の状態でカタカナになる。
もっと変換例
Kyou noTenki haHaRedesu.
Wagahai haTakoqdearu.Riyuu haMaDaNaI.
Daijoubu ?Kekkonn suru?
Sakusha woByouinn niShuxuxuxu-xtuq!!
Chou !Ekisaithinnxtuq!
anoKoro mitainiRanndebu-q
uma
anoKoro mitainiRanndebu-q
simauma
anoKoro mitainiRanndebu-q
uma
sositeAto deUragiRou
SKKを使うことの利点
こんなん使えねえよ(゚Д゚)ゴルァ!って思う人も多々いるだろうが、SKKを使用することには以下のような利点がある。
文章を頭から流れるように書くことができる
MS-IMEやATOKといった日本語入力システムで文章を書くときは、ひらがなで書いてから、それを一気に文字に変換して、(文章を遡って)誤変換を順々に直していく。しかし、普通人間が紙とペンの手書きで文章を書くとしたら、文章を上から下へ流れるように書くのが普通である。一度全部ひらながで書いてから、必要な単語だけ消しゴムで消して漢字に書き直す、なんてそんな馬鹿な文章の書き方をする人はいないはずである(多分)。そういった意味では、SKKは必要時に適宜漢字変換を行い、また一度に一語しか変換できないため、SKKで文章を書くということは人間本来の文章の書き方に非常に良く似ている。
上から下へ流れるように文章を書く。それがSKKは可能であり、人間的な動作で、コンピュータ上に文章をアウトプットできるのである。やれ一般人にゃ慣れない変換方法だの、やれとっつき難いだの、やれ変態だの、色々と言われているが、文章を書く日本人としては最も理に叶った変換方法であるのだ。
エンターキーを押す回数が減る
SKKは変換を指定しない限り、変換は開始されない。そのため、エンターキーを押す回数は減る。また、「暗黙の確定」のお陰もあり、やはりエンターキーを押す回数は減らすことができる。本気出せば、改行以外の全ての文章をエンターキー押さずに書くことも可能である。
あんな遠いキーを押す回数が減るなんて、なんて素晴しい日本語入力システムなんでしょう!
もう一度言いましょう。エンターキーをできる限り迫害できる日本語入力システム、それがSKKなのです。
変換はユーザーが全て決める = 誤変換が減る
SKKは賢い辞書を持っているわけではない。純然とプールされた漢字の辞書ファイルから、ユーザーは漢字を探すだけ。加えて、変換の箇所もユーザーが指定する。
しかし、その動作によって、文章の解析は必然的に(文章を書いている)ユーザーが行うことになり、ユーザーの意図通りに文章は変換されるのである。そのため、誤変換というものが他の日本語入力システムと比べて少なくなり、また、話し言葉や方言などで変換結果が左右されにくくなる。また、変換できなかった場合の対応も大変よろしい。一般的な日本語入力システムは、辞書にない文字もなんとかして変換しようとし、それが誤変換に繋ってしまうことがしばしばある。しかし、SKK は辞書になければ「変換できない」と潔くユーザーに通達し、送り仮名の位置が違っていたり、単語自体が存在しないのでは、とユーザーに警告し、そして「その単語は、今後どのように変換すればいいのか」と辞書登録を促すのである。
誤変換を減らす以外にも、SKKの流れるような変換方法も相俟って、ユーザーのストレスも減らすことができる。
そこそこ高速
SKK自体は他の日本語入力システムと比較した場合、シンプルなシステムであると言えよう。そのため、殆どのSKKアプリケーションは高速に動作する。また、慣れれば素早くタイピングすることができる。
非常に素敵なキーバインド
SKKのキーバインドはやはり独特である。SKKは入力モードを切り替える場面が非常に多いが、"q"キーを押せば「カタカナモード」になり、"l"を押せば「アスキーモード」と、ホームポジションを崩さず、そして装飾キーを使わずに単一のキーで操作することができる。慣れると非常に便利で、合理的だと理解できるはず。
フリーである
殆どのSKKのアプリケーションはフリーかつオープンソースで公開されている。また辞書ファイルもフリーでダウンロード可能であり、導入におけるコストはかからない。
弱点・欠点
でも気合でなんとかしましょう。
文章に沿った最適な変換候補を出せない
最大の特徴でもある「形態素解析を持たない」ということで、SKKは文脈を解析し、最適な単語を変換候補にすることができない。例えばATOKやMS-IMEは、「雨が降る」の「降る」という変換を、「雨」という単語に反応して「降る」という変換候補にするであろう。それはSKKにはできない。「振る」や「経る」といった単語がトップの変換候補になる可能性もある。そのため、時々スムーズさに欠けると感じる人もいるだろう。
しかし、よく訓練されたSKKユーザーはそんなこと気にしない。
辞書と語彙
SKKは辞書もフリーで用意されており、通常使用であれば「SKK-JISYO.L」があれば大抵事足りるだろうし、人名や著名人、鉄道関係の辞書なども用意されているが、やはり語彙量で市販のATOKやGoogle 日本語入力などと比べると、見劣りするのは事実であろう。しかし、Social IMEを使用することができる「PySocialSKKServ」などを利用することで補完することができる。これによって、インターネットスラング(ニコニコ語とか)や、ゲームやアニメの固有名詞にも対応することができると思われ。
とっつきにくい、そして慣れたら最後
上記の通り変換方法が特殊なので、別の日本語入力システムに慣れているのであれば、SKKのマスターは苦労する。勿論、その間もユーザーはコンピュータを使って文章を書く機会は沢山あるだろうし、結局「もう慣れてる方で……」と挫折した人も多いはず。しかし、慣れたら慣れたでとても使いやすいと思うので、それまで何とか頑張って使って欲しい。
そして慣れたら最後、他の日本語入力システムが微妙に感じるようになり、SKKが入っていなければ文章を打つのが鬱になってくるのである。なんとも罪深い。
SKKの仕組み
その他、色々と簡単な解説。
入力モードについて
SKKは基本的に以下の入力モードによって動く。普通の日本語入力システムであれば、入力モードは殆ど意識されない(っていうか、いつの間にか勝手に変わってイラっとする時があるよね)が、SKKは非常に重要である。
- ひらがなモード
- 入力される文字は基本的に全て「ひらがな」であるモード。
- カタカナモード
- 入力される文字は基本的に全て「カタカナ」であるモード。"q"で切り替わる。この状態で漢字変換は可能。
- 全英モード
- 入力される文字は基本的に全て「全角英数」のモード。"L" (シフトキー+"l")で切り替わる。ひらがなモードに戻るには、Ctrlキー+"j"。この状態で漢字変換はできない。
- アスキーモード
- 入力される文字は基本的に全て「半角英数」のモード。英文を書くときなんかに使う。"l" で切り替わる。
- 半角カナモード
- 入力される文字は基本的に全て「半角英数」のモード。ctrl+"q"で切り替わる。
辞書登録について
辞書にない単語を変換しようとした場合、SKKは以下のようにミニバッファ(SKKIMEやAquaSKKの場合、専用のウインドウ)でユーザーからの命令を待つ。
以下、「ひないちご」を「雛苺」と変換したかったが、辞書に無かった例。
[辞書登録] ひないちご
おいこらなんでうちの娘が辞書にないんだ、うにゅー口に詰めっぞ、と怒るのは後にしておいて、この状態のミニバッファに変換後の文字を入れることで、単語が登録される。
[辞書登録] ひないちご 雛苺
このように、SKKの辞書登録は非常にスムーズである。MS-IMEのように品詞の登録も必要なく、必要なのは変換前と変換後だけ。形態素解析を行わない恩恵がここにも表れている。また、クリップボード内の文章もCtrl+Yでミニバッファに貼り付ける事ができるので、顔文字だろうが複雑な文章も辞書登録が容易である。送り仮名の必要な用言も辞書登録は可能なのだ。
キーバインドについて
大体これだけ覚えておけば大丈夫だよ!
キー | 動作 |
---|---|
シフトキー | 変換の開始のトリガー(「▽モード」の移行)として使用する。 |
Enterキー | 確定。 |
Ctrlキー+"j" | 全英モードやアスキーモードからひらがなモードに切り替え。 |
Ctrlキー+"g" | キャンセル。 |
l | アスキーモードへ切り替え。 |
L (シフトキー+"l") | 全英モードへ切り替え。 |
q | カタカナモードへ切り替え。カタカナモードの状態で押すと、ひらがなモードになる。 |
スペースキー | 変換開始([▼モード」へ)。または次の変換候補を表示する。 |
x | 前の変換候補を表示。 |
X(シフトキー+"x") | 変換候補を辞書から削除。 |
Ctrlキー+"y" | 単語登録時、ペーストする。 |
Tabキー | 「▽モード」のとき、見出し語の補完。 |
記号入力
SKKはキー入力に任意の文字を割り当てることができ、標準でもいくつかの記号がzと組み合せる形で設定されている。これらの一部はGoogle日本語入力などでも標準で利用可能。
キー | zh | zj | zk | zl | z, | z- | z. | z/ | z[ | z] |
---|---|---|---|---|---|---|---|---|---|---|
記号 | ← | ↓ | ↑ | → | ‥ | 〜 | … | ・ | 『 | 』 |
SKK日本語入力FEP
SKK日本語入力FEPは、他のSKK実装と比べても多数の記号入力設定が登録されている。これらの一部はAquaSKK(codefirst版)にもオプション設定として同梱されている。この設定のおかげで、「ひだまりスケッチ×☆☆☆」といった記号も軽快に入力することが可能。まあ辞書登録した方が早いんだけど
キー | z1 | z2 | z3 | z4 | z5 | z6 | z7 | z8 | z9 | z0 | z^ | z\ | z@ | z; | z: | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
記号 | ○ | ▽ | △ | □ | ◇ | ☆ | ◎ | 〔 | 〕 | ∞ | ※ | ¥ | 〃 | ゛ | ゜ | ||||
キー | z! | z" | z# | z$ | z% | z& | z' | z( | z) | z= | z~ | z| | z` | z+ | z* | z< | z> | z? | z_ |
記号 | ● | ▼ | ▲ | ■ | ◆ | ★ | ♪ | 【 | 】 | ≒ | ≠ | 〒 | “ | ± | × | ≦ | ≧ | ÷ | ― |
AquaSKKではWikipediaで言及されている全角ダッシュのマッピング問題により、―
(U+2015 HORIZONTAL BAR)ではなく—
(U+2014 EM DASH)が入力される。
SKKとサーバと辞書
SKKは漢字変換の際に、SKKサーバに命令して必要な単語を送ってもらっている。SKKIMEやAquaSKKは自前で辞書サーバを持っているが、オリジナルのSKKや、また辞書を別マシンで共有しているときなど、サーバアプリケーションが必要となる場合がある。
その「SKKサーバ」は辞書ファイルを管理し、命令に応じて単語を送るのが一般的な機能であるが、動作速度や実装されたプログラミング言語や機能の違いなど、様々な種類がある。また、ネットワークで辞書を共有することも可能なので、複数のコンピュータを使っている人には便利かもしれない(ただしユーザー辞書は同期できない)。
辞書は通常は「SKK辞書」が使われ、SKK辞書はフリーでダウンロードできる。辞書にも種類があり、専門用語の辞書ファイルなど、必要に応じてインストールするといいだろう(大抵、「SKK-JISYO.L」があれば間に合う)。
また、変換された単語は「ユーザー辞書」にプールされ、次回変換時はそこから優先的に単語が変換候補に上がる。なので、ある程度はユーザーごとに変換候補が最適化されるが、まあ、その辺は、まあ、そういうことだ。SKKは文章を解析する能力はないので、変換候補に不満が出ることも少なくはない。
色々なSKK
SKK
Emacsで動くEmacs Lispで書かれたオリジナルのSKK。現在はSKK Openlabによってメンテナンスされており、「Daredevil SKK」と呼ばれている。xyzzyに移植もされた(xyzzy Lisp)。
SKKIME
Windowsで動作するSKKのIME。Windows 2000移行で動作するように作られており、64bit版もリリースされている。作者の方は、「Google 日本語入力」にも携わっている人。
AquaSKK
- AquaSKK - 日本語を快適に
- http://aquaskk.sourceforge.jp/
- codefirst/aquaskk · GitHub
- https://github.com/codefirst/aquaskk
MacOSXで動作するIM。MacOSXの美しい外観にしっかりと溶け込むインターフェイスが大変魅力的。見出し語のダイナミック補完や、入力モードをフローティングでアイコン表示してくれる機能など、ユニークな機能がある。
本家AquaSKKは開発終了したので、Mac OS X Yosemite (10.10) 以降ではcodefirst版のAquaSKKを利用する必要がある。また、codefirst版には後述する「SKK日本語入力FEP/Egg互換」の記号入力設定が同梱されてるので、豊富な記号入力が可能である。
FlickSKK
- iTunes の App Store で配信中の iPhone、iPod touch、iPad 用 FlickSKK
- https://itunes.apple.com/jp/app/flickskk/id944678753?mt=8
- codefirst/FlickSKK · GitHub
- https://github.com/codefirst/FlickSKK
皆さんも待ってたはずです。One more thing...、スティーブがその手に握るiPhoneにSKKを入れたことを。願いが叶ったのなら、彼はきっと「Developers! Developers!」と狂喜乱舞しながら、「I LOVE THIS COMPANY!! YEAHHHHHHH!!」と叫んでいたでしょう。
願い叶わずジョブスは他界し、こっちのスティーブはMicrosoftを去りましたが、それはさておきiPhone for iOSにもやってきたSKKがこれ、FlickSKKです。
QWERTYキーボードではなくフリック入力でSKKを実現しているため、独特の操作感に慣れは必要となるが、使っていくうちにまさしく薫ってくる確かなSKKの強いフレーバー。ハンカク カナ モ、モチロン イケルヨ! ヤッタネ! ヤッタネ!!
CorvusSKK
Windowsで動くSKK(風)のIME。最新の Windows にも対応しており、シンプルながら配色やキー変換表をユーザーの好みに変えられるなど、カスタマイズできる箇所も豊富。
SKK日本語入力FEP
WindowsのIMEに本当に必要だったのは、SKKやない!ソフトウェア作者のノリの良さや!!
それはさておき、Windows用のSKKのIMEである。内部の機能として、SandS入力、Google日本語入力APIを使用したりできる拡張スクリプト、「www」などの従来のSKKではできなかった連打機能を実装しており、SKKIMEやCorvusSKKと違い多機能を目指している模様。あと笑えるほどバイナリがちいちゃい。SKKの72である(配布されてるzipは、もうちょいデカい)。
Linuxで動くSKK
skk.vim
vimでのSKKの実装。現在、複数の有志によって、sticky-shiftやカーソルをモード別に色付けできるようにした「skk.vim 狙え版」や、skk.vimオリジナルの作者の方の了解を得て、スクラッチからコードを書き直している「eskk.vim」(旧名skk7.vim)などが公開されている(なお、開発段階の真っ最中で、2010年の5月に漢字変換ができるようになったばかり)。後者は、複数のコーダーの方のメンテが可能なようにGitHubで開発が進められている。
Android SKK
- android-apps-by-minghai - Project Hosting on Google Code
- http://code.google.com/p/android-apps-by-minghai/
Androidで動くSKK。ただただ「すげえや」としか言いようがない。
SKKをもっと使いこなす
SKKをより便利にするためのTips。
SandSを使う
シフトキーを多用するのがSKKであるが、小指でシフトキーを押すのはどうにも辛いし、痛い。なので、親指でシフトキーを押せないか、というアプローチが「SandS」である。これは、スペースキーを押しながら他のキーを押すと、スペースキーはシフトキーの役割に変わり、単一でスペースキーを押すと、通常通りスペースキーの動作になるというものである。
Windowsであれば「窓使いの憂鬱」や「のどか」といったソフトウェア、MacOSXでは「KeyRemap4MacBook」などを使うことによって使用できる。
また、無変換キーや変換キーをシフトキーにリマップするというのも乙でありますな。
ルールを変更してもっと簡単に文字入力
デフォルトでは、"zh"と入力することで「←」の文字が入力できるようになったり、"zj"では「↓」と便利なルールが搭載されている。また、「ひらがなモード」であっても半角のハイフン("-")を入力したい時には、"z-"とすれば入力されるなど、とても便利。
また、ユーザーがルールを書き換えることで、ユーザーの思い通りに入力ができる。
例えば
wq
を
w
とすることで、「全英モード」にせずに全角の"w"を入力できたり、zやxなど、使われないキーを活用することによって、定型文の入力なんかにも使うことができる。
zg
ごきげんよう、私です
よく使う顔文字も。
z^
(^ω^)
など、自由自在である。自分の好きなようにルールを変えてしまおう。
PySocialSKKServでSocial IMEの語彙力を使う
語彙力にちょっと自信のないSKKでも、Social IMEを利用することによって、かなり語彙力が強くなる。特に、ゲームやアニメの語彙力は禍々しいほど凄まじくなる。
PySocialSKKServは、そんなSocial IMEをSKKの辞書サーバとして利用できるためのソフトウェアである。Pythonで実装されているが、Windowsですぐに使用できるようにパッケージされている。
さて、肝心の語彙力はというと、であるが。例として「まりさ」と変換してみた(例として分かりやすいように、改変している)。
A:霧雨 魔理沙 S:魔理沙 D:魔法を使う程度の能力 F:霧雨の魔法使い G:普通の黒魔法少女 H:魔符「マジカルR360」 J:流光「シューティングエコー」 K:星符「エキセントリックアステロイド」 L:魔廃「ディープエコロジカルボム」 [残り 57]
レスポンスも大変良く、一般的なブロードバンド回線であれば、ストレスなく変換ができるだろう。
残念なことに、こちらからSocial IMEのサーバーに単語登録できないが、オープンソースで有志の方々が日々尽力されているので、何かしらで支援したいところである(オープンソースの文化だね!)。
関連動画
外部リンク
- SKK Openlab
- SKK 辞書wiki
- skkime's page
- SKK日本語入力FEP
- AquaSKK - 日本語を快適に
- Android向けにSKKを作ってみた - minghaiの日記
- 窓使いの憂鬱
- 汎用キーバインディング変更ソフト「のどか」
- KeyRemap4MacBook
関連項目
- 32
- 0pt