Ubuntu Weekly Recipe

第200回[連載200回記念特別企画]Ubuntuで究極の文字入力環境を模索する

連載200回達成!

今回でUbuntu Weekly Recipeもついに連載200回を達成することができました。リーダーの小林さんに「200回記念特別企画でうつぶせになってよ」とお願いしたのですが、多忙を理由に断わられてしまいました。楽しみにしていた読者の皆様には大変申し訳ありませんが、今回は水野が担当させていただきます。ひとつお付き合いいただければ幸いです。

究極の日本語入力方式を考える

ほとんどのUbuntuユーザーの皆さんは、AnthyまたはMozc、あるいはATOKを使って日本語を入力していると思います。しかしこれらの日本語変換エンジンには「形態素解析ミス」という共通の弱点があり、本連載175回では形態素解析を行なわない変換エンジンとしてSKKを紹介しました。SKKは素晴しい日本語変換エンジンですが、やはり万能ではありません。たとえばSKKは文脈をいっさい読まず、品詞の区別をしないため、変換候補に同音異義語が大量にある場合には変換効率が極端に落ちてしまうという弱点があります[1]⁠。

さて、IMを経由しないと母国語を入力できない我々日本人は、この「変換候補を選ぶ」という無駄な作業から逃れることはできないのでしょうか? いいえ、我々にはまだ希望が残されています。それが「漢字直接入力⁠⁠、略して漢直です。

キーボードから漢字を入力しよう

一般的な日本語入力では、ひらがなを入力した後に、変換エンジンを用いて漢字に変換します。それに対し漢直は、キーボードから直接漢字を入力します。つまり「変換」ではなく、あくまで日本語「入力」となります。ひとくちに漢直と言ってもいくつかの種類があり、その中でも有名なものがT-CodeやTUT-Codeと呼ばれる方式です。

T-Codeはホームポジションに置いた左右の手で、それぞれ4段x5列(人差し指が2列ぶん担当)の計40個のキーを使って入力を行ないます。この40個のキーのうちふたつを打鍵する操作にひとつの文字が割り当てられています。つまりふたつのキーの組み合わせで、40x40=1600文字を、キーボードから直接入力することが可能なわけです[2]⁠。ここにアサインされていない文字を直接入力することはできないことになりますが、日常的に使用する文字の95%以上はカバーされていると言われています。T-Codeにはストローク表という、⁠ふたつのキーをどの順番で押したら何の文字が入力されるか」を表わした表があり、当然ですがT-Codeで文字を入力するためには、この表を覚える必要があります[3]⁠。

TUT-CodeはT-Codeをベースにした入力方式です。T-Codeとの一番の違いは、ひらがなのアサインに規則性があることと、2ストロークで入力できない文字のために3ストロークの組み合わせが用意されたことです。規則性があるため、ひらがな入力だけに限れば非常に早く習得することが可能です。

これらの入力方式は漢字を直接入力するのがメインですが、入力したひらがなを漢字に変換することもできます。つまりひらがなさえ入力できるようになれば、一般的なかな漢字変換と同じように変換を行ない、ストロークを覚えている漢字のみ直接入力する、といった運用ができます。ひらがな入力が覚えやすいTUT-Codeは、T-Codeよりも敷居は低いと言えるでしょう。

UbuntuでTUT-Codeを使う

それではUbuntuでTUT-Codeを使って日本語入力をしてみましょう。Ubuntu 11.10の標準インプットメソッドはIBusですが、現在IBusでTUT-Codeを利用することはできません[4]⁠。そこでインプットメソッドにuimを使います。パッケージ名はuim-tcodeですが、T-Code/TUT-Code/Try-Code/SKKでの入力に対応しています。

uimとuim-tcodeのインストール
$ sudo apt-get install uim uim-tcode

uimをインストールしたら、⁠システム設定⁠⁠→⁠言語サポート⁠⁠→⁠キーボード入力に使うIMシステム」「uim-toolbar」に設定します。一度ログアウトしてログインしなおして、デスクトップにuimのツールバーが表示されていれば設定は完了です。

ツールバーの左端にあるボタンをクリックすると、使用する入力方式をT-Code/TUT-Code/Try-Code/SKKから選択することができます。今回はTUT-Codeを選択しましょう。スパナのアイコンの設定ボタンをクリックすると設定画面であるuim-pref-gtkが起動しますので、ここで「標準の入力方式を指定」にチェックを入れてTUT-Codeを選択しておけば、毎回選択しなおす必要がなくなるので便利です。

図1 言語サポートでIMシステムをuim-toolbarに設定する
図1 言語サポートでIMシステムをuim-toolbarに設定する
図2 デスクトップ上に表示されるuimのツールバー
図2 デスクトップ上に表示されるuimのツールバー

IBusではCtrl+Spaceで日本語入力を開始しますが、uimはShift+Spaceで開始します。Shift+Spaceを押してツールバーの「_A」「あ」に変化したら、TUT-Codeでの入力が可能になります。TUT-Codeのストローク表を参考に、文字をタイプしてみましょう。余談ですが、ある文字を入力する際にどのようなストロークが必要かを調べるには、KANSAKUも便利です。入力方式を「TUT-Code⁠⁠、スタイルを「英字」にすれば、キーボードのどのキーをどの順番で押せばよいかが簡単にわかります。

交ぜ書き変換で変換精度を上げる

冒頭の説明で、SKKは同音異義語の変換に弱いと書きました。例えば「きしゃ」を変換しようとすると「貴社」⁠記者」⁠汽車」⁠帰社」といった候補があがります。しかしこれは「きしゃ」という読みから漢字を求めようとするから起こる問題であり、たとえば「き者」のように、一部分だけでも漢字を確定した状態から変換を行なえれば、候補を一気に絞りこむことが可能になります。これを実現するのが交ぜ書き変換です。

uim-tcodeでキーを「alj」とタイプすると、交ぜ書き変換モードに入ります(上向きの三角形が表示されます⁠⁠。この状態で「eieo」とキーをタイプして「き者」と入力したら[5]⁠、Spaceキーを押してみましょう。変換候補の表示すらされず、即座に「記者」が確定されるはずです。読みが「き」ではじまり、かつ二文字目が「者」の単語は「記者」しか辞書上に存在しないため、その時点で候補を一意に絞ることができるのです。このように交ぜ書き変換を使えば、一部の漢字を直接入力することによって、変換効率と精度を飛躍的に上げることができます。これは変換前の状態で漢字を入力できる漢直ならではの機能です。

部首合成変換で読めない漢字を入力する

かな漢字変換では、その漢字の読み仮名を知っていなければそもそも変換ができません。たとえば手書きの文字を清書するようなシチュエーションで、読めない漢字に遭遇すると困ってしまいます。そんな時に役立つのが部首合成変換です。

ご存知の通り、漢字は「へん」「つくり」といったパーツに分解することができます。この「漢字を構成するパーツ」を個別に入力し、合成して文字を作るのが部首合成変換です。たとえば「渚」という字を入力したいのだけれど、⁠なぎさ」という読みがわからなかった場合を考えてみます。この文字は「さんずい」「者」に分解することができます。さんずいはカタカナの「シ」で表すので「シ+者」になります。これを部首合成で変換してみましょう。

まずuim-tcodeでキーを「ala」とタイプすると、部首合成変換モードに入ります(下向きの矢印が表示されます⁠⁠。次に「'(シングルクオート⁠⁠」を押してカタカナ入力に切り替えてから、⁠sieo」とタイプしましょう[6]⁠。これでふたつの文字が合成されて「渚」が確定されました。このように部首合成変換を使えば、読み仮名がわからない漢字や、ストローク表に存在しない文字を入力することが可能です。部首合成変換の辞書は /usr/share/t-code/bushu.rev にありますので、参考にしてください。

究極の英文入力環境を考える

キーボードの配列にこだわってみる

日本語入力方式として漢直の素晴しさがわかったところで、今度は入力デバイスに目を向けてみましょう。現在市販されているPCやキーボードのほとんどが、キーがQWERTYの順に並んでいる「QWERTYキーボード」です。しかしこの配列は19世紀に考案されたもので、いささか時代遅れなのは間違いありません。そこで入力効率を上げるため、さまざまな新しいキー配列が考案されてきました。

Dvorak配列を使う

QWERTY以外の配列と言えば、まず最初に出てくるのがDvorak配列です。Ubuntuではキーボードレイアウトを変更することで、簡単に手持ちのキーボードでDvorak配列を体験することが可能です。⁠システム設定⁠⁠→⁠キーボードレイアウト」を開くと、現在システムに登録されているキーボードレイアウトの一覧が表示されます。だいたいはインストール時に選択したレイアウト(日本語か英語)がひとつだけ登録されていると思います。ここで下にある「+」ボタンをクリックして、別のレイアウトを追加しましょう。Dvorak配列を追加する場合は「英語(Dvorak)」を選択してください。

図3 ⁠英語(Dvorak)」のレイアウトを追加する
図3 「英語(Dvorak)」のレイアウトを追加する
図4 デフォルトでDvorakを使うなら、追加したDvorak配列を一番上に移動させておく
図4 デフォルトでDvorakを使うなら、追加したDvorak配列を一番上に移動させておく
図5 プレビューでキーボードのレイアウトを確認できる。この状態でキーを押すと、画面上で押したキーの色が変化する
図5 プレビューでキーボードのレイアウトを確認できる。この状態でキーを押すと、画面上で押したキーの色が変化する

ここで勘のよい人は「QWERTYからDvorakに配列を変更したら、TUT-Codeのストロークが変わってしまうのではないか?」と思うかもしれません。いいえ、大丈夫です。ローマ字入力であれば、当然キー配列の影響を受けます。しかしT-CodeやTUT-Codeは押されたキーのコードではなく、キーの物理的な位置をもとに文字を入力する方式なので、キーボードの配列の影響を受けません。具体的にはuim-pref-gtkのTUT-Codeの項目に「Dvorakキーボードを使用する」というチェックがあります。ここにチェックを入れることで、QWERTYとDvorakの配列の違いをuimが吸収しています。これで「英文入力はDvorakで、日本語入力はTUT-Codeで」というハイブリッドな入力が可能になります。

ただしDvorakでuim-tcodeを使う場合は、キーのアサインを変更する必要があります。前述のように、ひらがな/カタカナの切り替えには「'」キーが割り当てられています。QWERTY配列の「'」キーはTUT-Codeの文字入力には使わない位置のキーなので問題ないのですが、Dvorak配列の「'」キーはQWERTYでいう「Q」キーの位置になっています。デフォルトの設定のままではこのキーがuimに取られてしまうため、例えばQWERTY配列で「qp」のストロークを持つ「配」の字などが入力できなくなってしまうのです。そのためuim-pref-gtkの「TUT-Codeキー設定1」で、⁠ひらがな/カタカナ入力モードを反転」を、QWERTYでの「'」の位置にあたる「-(マイナス)」キーに変更しましょう。同様に部首合成変換や交ぜ書き変換の開始キーも変更しておくとよいかもしれません。

ハードウェアDvorakキーボードを使う

このように設定ひとつで手軽にDvorak配列を体験することができますが、これでは不便な場合もあります。たとえば次のような問題です。

  • キーボードレイアウトの設定はX上でのみ有効なため、仮想端末で困る
  • マシンごとに設定を行なわなければならず、面倒
  • 複数のキーボードを繋いでいると、全部がDvorakになってしまう

特に3番目が問題です。練習用にDvorak配列を使いたいけど、それだと仕事に支障が出るためQWERTYも繋いでおきたい、というような要求を満たすことができません。そのような時はハードウェアレベルでDvorak配列を実装しているキーボードを使ってみましょう。といっても、そんなマニアックなキーボードをわざわざ買うのは大変ですし、そもそもなかなか売っていません。そこでおすすめしたいのが、手持ちのQWERTYキーボードをDvorakに変身させるUSBアダプタ、QIDOです[7]⁠。

これは大きめのUSBメモリサイズで、USBケーブルの中継器のような構造をしているデバイスです。QIDOをUSBキーボードとPCの間にかませることで、入力されたQWERTYキーボードのキーコードを、対応するDvorakのキーコードに変換して出力するという機能を持っています。このアダプタ自体は単に信号の変換しかしないため、デバイスの認識には影響を与えません。ですのでUbuntuで使えるキーボードであれば、問題なくそのままDvorak化が可能です。ハードウェア的にDvorakとなるため、OS側での設定が不要になるのが最大のメリットです。Ubuntuではもちろん、Androidタブレットにキーボードを繋いで、ATOKでDvorakを使いたい、というようなニーズにも最適でしょう[8]⁠。

ただデバイスの仕様上(当然といえば当然ですが⁠⁠、複数のUSBデバイスを繋げることができないようです。たとえばUSBハブ内蔵のキーボードではうまく動作しません。筆者が確認した範囲では、Happy Hacking Keyboard Pro2では動作させることができませんでした[9]⁠。

図6 QIDOを経由してLenovo ThinkPad Keyboardを接続してみた。デバイスの認識には全く影響していないが、キー配列はDvorakになっている
図6 QIDOを経由してLenovo ThinkPad Keyboardを接続してみた。デバイスの認識には全く影響していないが、キー配列はDvorakになっている

より先進的なColemak配列を体験する

キーボードマニアの人は「Dvorak配列も既にレガシーだ」と言うかもしれません。また皆さんも、lsコマンドを打つ際にlもsも右手の小指にアサインされていることに気づいてしまった時、Dvorak配列とUNIX文化の親和性はそれほど高くないのではないかという疑惑を感じることでしょう。さらには慣れ親しんだQWERTYとの乖離がありすぎて、敷居が高すぎるという問題もあります。そのような中、21世紀になってから新たに登場したのがColemak配列です。

Colemak配列はQWERTY配列を元に作られた配列で、Z、X、C、V、Bなどをはじめ、多くのキーの位置がQWERTYと同一になっています。このためコピーやペーストといったショートカットに影響を与えず、QWERTYからの乗り換えも比較的簡単だと言われています。UbuntuではColemak配列もDvorak同様に、キーボードレイアウトの設定から追加することが可能です。

図7 ⁠英語(Colemak)」配列を追加する
図7 「英語(Colemak)」配列を追加する
図8 Colemak配列のプレビュー。QWERTYとよく似ているのがわかる
図8 Colemak配列のプレビュー。QWERTYとよく似ているのがわかる
図9 複数のキーボードレイアウトを登録している場合は、インジケーターから切り替えることができる
図9 複数のキーボードレイアウトを登録している場合は、インジケーターから切り替えることができる

最強のキーボード KINESISを使う

TUT-Codeのストローク表をぱっと見て、どのキーを押すのか一目で直感的に理解できる人はなかなかいないのではないかと思います。ストローク表が5x4の直交する表なのに対し、キーボードは段ごとにキーの位置が微妙にずれた形状をしているのが、直感的ではない原因のひとつではないでしょうか。キーボードの形状はタイプライターがその構造上、同軸上に複数のキーを配置できなかったという歴史的な出自によるもので、現在では全く意味がありません。そこでキーを格子状に配列したキーボードというものがいくつか存在します。その中でも一部マニアから絶大な評価を受けているのが、最強のキーボードとも言うべき「KINESIS」です。

図10 知人からいただいた、筆者のKINESIS Professional。操作には多少の慣れが必要
図10 知人からいただいた、筆者のKINESIS Professional。操作には多少の慣れが必要

KINESISは以下のような特徴を持ったキーボードです。

  • 人間工学を追求した、お椀型に湾曲した形状
  • 格子状のキー配列
  • QWERTYとDvorakをハードウェア側で変更可能
  • 任意のキーのリマッピング機能
  • CtrlやAltなど、両親指に12個のキーを配置して小指の健康をがっちりガード

QWERTYとDvorakの両配列に対応しているのはもちろん、⁠Aの左隣をCtrlにする」といったキーのリマップをハードウェアレベルで行なえます。この設定はキーボードレイアウトのオプションで行なっている人が多いと思いますが、KINESISならばマシンごとに設定を行なう必要もありません。まさにキーボードの理想形と言えるのではないでしょうか。

Dvorak配列のKINESISでTUT-Code入力。これはUbuntuにおける文字入力環境のひとつの到達点と言えるのではないでしょうか。もちろん、これがはたして人類に使いこなせるシステムなのかという点については、筆者はまだ判断を保留させていただいております。

図11 現在の筆者の机上のようす。使いこなせれば最高の環境ではないかと思うのですが……使いこなせれば
図11 現在の筆者の机上のようす。使いこなせれば最高の環境ではないかと思うのですが……使いこなせれば

おすすめ記事

記事・ニュース一覧