Part2 変換エンジンの紹介

Part2では変換エンジン単体の紹介を行うので、実際の日本語入力システムの設定方法や使用方法などに関してはPart3以降を参照してほしい。

また、今回の特集ではOSに依存する部分ではDebian SidもしくはFedoraCore1を仮定する。ハードウェアに関しては、x86系のCPUを仮定する。

Anthy

公式サイトはhttp://anthy.sourceforge.jp/である。

特徴

Anthyは田畑悠介氏をはじめとするKMC(京大マイコンクラブ)のメンバーにより2000年に開発が開始され、現在も田畑氏によりメンテナンスされている連文節変換方式の日本語入力システムである。

Anthyの特徴はセキュリティに対して配慮している事、継続的にメンテナンスされている事である。Anthyはユーザ権限で動作し、他人に個人辞書や学習履歴を勝手に盗み見られる事はない。連文節変換で学習履歴の保護に気を使っている変換エンジンは、現在のところAnthyだけである。(暗号化されているわけではないので、相手がroot権限を持っている場合には見られてしまうのだが。)また、フリーな連文節変換エンジンで変換アルゴリズムの改良が現在でも継続的に続けられているのはAnthyだけである。こんな変換ができない、と報告したら直してもらえる(かもしれない)というのは、ユーザにとってはそれなりに大きなメリットである。

Anthyの原稿執筆時点における最新の安定版は、2004年3月にリリースされたAnthy-5100bである。

インストール

Debianの場合は

#apt-get install anthy

でおしまいである。

Fedoraの場合は、Anthyの公式サイトでRPMが配布されているので、http://sourceforge.jp/projects/anthy/files/?release_id=8610#8610から一番新しいものをダウンロードしてきて、ダウンロードしてきたディレクトリで

#rpm -Uvh anthy*.i386.rpm

を実行すれば良い。

Anthyの辞書

Anthyはすぎもとまさお氏によりメンテナンスされているcannadicをかな漢字変換用の辞書として使用している。Anthyのtarballにはcannadic自体が含まれているので、Anthyをインストールする際にcannadicをどこかからわざわざ持ってくる必要はない。

組み合わせられるインプットメソッド

Anthyを使用するための方法は2つある。uimを介して使う方法と、anthy.elを介して使う方法である。uimを介する方法では全てのXアプリケーションに入力できる。(GNU screenを使っている場合にはコンソールアプリケーションにも入力可能である。)anthy.elを介する方法では、Emacsに対して入力可能である。今回は両方とも後で紹介する。

実はこれらの他にもjmodeというXIMサーバを介して使うなどの使用法も存在したのだが、uimの開発が進んだため、現在はjmodeの使用は推奨されていない。

お勧めのユーザ

定量的に計測したわけではないが、Anthyは現在使えるフリーな連文節変換エンジンの中では一番変換効率が良いと思われる。ここでは試しに、AnthyとCannaでいくつかの文を変換してみた。

例文AnthyCanna
このはなしは、これでおしまい。この話は、これでおしまい。此花氏は、これでおしまい。

かんじょうせんをそのままほくじょうしてください環状線をそのまま北上してください完乗船をそのまま北上してください
みとめたくないものだな。じぶんじしんのわかさゆえのあやまちというものは。認めたくないものだな。自分自身の若さ故の過ちというものは。認めたくないも野だな。自分自身の若桜ゆえの過ちと言うも野は。

ここではCannaでは変換できずにAnthyでは変換できる例文ばかり集めてきてある事をさっぴいて考えないといけないが、とにかくCannaよりは変換効率は良さそうである。Distribution標準でなくてもいいから、変換効率が良いものを使いたいという人におすすめできると言える。

PRIME

公式サイトはhttp://www.taiyaki.org/prime/である。

特徴

PRIMEは小松弘幸氏によって開発されている予測入力用ソフトウェアである。PRIMEの特徴は予測入力を行う事、Rubyで書かれている事、セキュリティに配慮している事である。予測入力とは、入力履歴などから入力されそうな単語を入力時に表示し、ユーザに選択させる入力方式である。例えば、今「悪戦苦闘」と入力したいとしよう。「あ」と入力した時点で、「あ、悪魔、ありがとう、...」という感じで「あ」から始まる候補が予測される。入力したい文字列が候補にないので、さらに入力を進めてゆくと、「あくせんく」あたりまで入力した時点で候補に「悪戦苦闘」が表示されるので、あとはそれを確定すれば良い。この例では「とう」の二文字分しかタイプ量を節約できていないが、場合によっては「スリジャヤワルダナプラコッテ」を「す」だけで入力できたりして、タイプ量を劇的に節約できる。

なお、PRIMEは単文節変換方式だと思われがちだが、実は最近では連文節変換にも対応している。

構造

PRIMEはRubyで書かれたプログラムであり、クライアントからPRIMEの機能を利用するためには、以下の3つの手段が用意されている。

TCP/IPを使用する事は、セキュリティ上の理由により推奨されていない。Rubyクラスとして利用する場合にはクライアントプログラムにlibrubyをリンクする必要があり、これも少々使いにくい。というわけで、一般的にはPRIMEを利用する場合にはprimeというプログラムを起動し、標準入出力を介して通信する事になる。Part3で紹介するEmacsクライアントもPart4で紹介するuimも標準入出力を利用するタイプだ。

また、PRIMEはsuikyo(これも小松氏作だ)という文字列変換ライブラリを用いてローマ字からかな文字列への変換を行う。ほとんどの場合かな文字列の生成はインプットメソッドが行うのだが、PRIMEの場合はPRIME側で行うようになっている。

★「図 PRIMEにおけるかな生成の分担」kana.png

インストール

Debianの場合は

#apt-get install prime

でインストールできる。

Fedoraの場合はMasaki Yatsu氏によりRPMが製作されているので、http://www.digital-genes.com/~yatsu/prime/FedoraCore1/から必要なパッケージをダウンロードしてこよう。新しくディレクトリを作ってそこにダウンロードしてくると、rpmコマンドでインストールする際にやりやすい。必要なパッケージは以下の通り。

prime-0.7.a.1-1.i386.rpm
prime-dict-0.6.8.1-1.noarch.rpm
ruby-progressbar-0.8-1.noarch.rpm
ruby-sary-0.0.0-0.20031102.2.i386.rpm
sary-1.1.0-0.20031102.1.i386.rpm
suikyo-1.3.2-1.noarch.rpm
suikyo-ruby-1.3.2-1.noarch.rpm

もちろんバージョンは原稿執筆時点でのものなので、変わっている可能性もある。PRIMEはrubyに依存しているので、ダウンロードしてきたRPMをインストールする前に、yumか何かを使ってrubyもインストールしておこう。yumの場合は

#yum install ruby

でRubyがインストールできる。Rubyをインストールしてから、RPMをダウンロードしてきたディレクトリで

#rpm -Uvh *.rpm

を実行すれば良い。prime-0.7.a.1は開発版であるが、使用してみたところ、不具合は特に見られない。安定版の0.6.7からはかなり改良が加えられているので、この特集では0.7.a.1について扱う。

組み合わせられるインプットメソッド

PRIMEを使用するための方法も、Anthyと同じく2つある。uimを介して使う方法と、Emacsクライアントを介して使う方法である。入力対象となるアプリケーションもAnthyと同じである。

PRIMEの設定法

PRIMEの設定は、~/.prime/Custom_prime.rbで行う。~/.prime/Custom_prime.rbは一度primeを起動すると自動で作成される。入力時に用いる方式の選択や、句読点の選択などを行う事ができる。入力方式はローマ字入力、かな入力、T-code入力の3つから選択できる。

#   PRIME_ENV['typing_method']   = 'romaji'
#   PRIME_ENV['typing_method']   = 'kana'
#   PRIME_ENV['typing_method']   = 'tcode'

このような行があるので、かな入力がしたい場合は'kana'の行の、T-code入力がしたい場合は'tcode'の行のコメントを外せば良い。Emacsクライアントにはprimeと通信して勝手に入力方式などに応じて設定を変える機能がついていたりするが、uimの方には残念ながらまだそのような機能は存在していない。

お勧めのユーザ

携帯電話での予測入力に慣れていて、パソコンでも予測入力がしたいという人、キーボードにまだ不慣れでタイピングのスピードが出ない人などにはPRIMEがおすすめだ。また、Linux Zaurus上でも最近はPRIMEを動かす事ができるそうだ。(興味のある方はIMKit-uimで検索してみて欲しい。IMKit-0.4.0での正式対応はしないそうだが、ある程度は動くらしい。)PDAの小さなキーボードで入力する場合にも、PRIMEによる予測入力は有効だろう。

SKK

公式サイトはhttp://openlab.jp/skk/である。

特徴

SKKは佐藤雅彦氏によって開発されたEmacs用の日本語入力プログラムである。現在はSKK Openlabにてメンテナンスされている。文法知識を用いず、変換開始はユーザが明示的に指示する事で開始するなど、いくつかの変わった特徴を持っている。

SKKは操作に多少癖があるものの、慣れると割に快適に日本語入力が可能である。文節の区切り間違いがないので、普通の連文節変換方式よりもSKK方式の日本語入力を好む人も多い。

本来SKKとはEmacs Lispで実装されたこのEmacs用のインプットメソッド(ここでのインプットメソッドは広い意味でのインプットメソッドである)の事のみをさす言葉であるが、他にもSKK風の変換を行うソフトウェアは数多く存在し、それらもいっしょくたにしてSKKと呼ぶことも多い。この特集では本家SKKと、亜流の中の、skkfepとskkinputとuim-skkを取りあげる。

インストール

インストールに関しては本家とそれぞれの亜流によって違うので、Part3以降のそれぞれの解説を参照して欲しい。

組み合わせられるインプットメソッド

SKKはアルゴリズムが比較的単純であるために、インプットメソッドと変換エンジンが一体化している場合が多い。というか、知る限りでは一体化していないものはない。

お勧めのユーザ

人とはちょっと違った入力方法で他人と差を付けたいと言う人、いつ変換するのかぐらいは自分で決めたいという人などにおすすめ。他に、SKKはとても軽いので、軽いインプットメソッドが欲しい場合にもSKKはおすすめである。

Canna

公式サイトはhttp://canna.sourceforge.jp/である。

特徴

CannaはNECで開発された連文節変換方式の日本語入力システムである。現在はNECの手を離れ、相田氏ら有志によりメンテナンスされている。Cannaはマルチユーザのサーバで、TCP/IPかUnixドメインソケットを使用して、クライアントと通信する。TCP/IPを使う事はセキュリティ上好ましくないので、この連載ではUnixドメインソケットでの通信のみを扱う。

2004年1月にリリースされたCanna3.7p1が原稿執筆時点での最新安定版である。

インストール

Debianの場合は

#apt-get install canna canna-utils

でインストールできる。Debianのcannaは、デフォルトの設定がUnixドメインソケットでの通信のみになっている。また、Fedoraの場合はCannaは最初からインストールされている。

起動しているかの確認

Cannaの変換用プログラムはサーバ・プロセスとして動作している。サーバが起動しているかどうかは

$ps ax|grep canna

を実行する事で確認できる。

20262 ?        SN     0:00 /usr/sbin/cannaserver -u canna

のような結果が返ってくれば、Cannaサーバは起動している。結果がなにも返ってこない場合はCannaサーバは起動していない。Fedoraの場合は

#/sbin/service canna status

を実行する事で、サーバが動作しているかどうかを確認する事もできる。

カスタマイズ

Cannaのカスタマイズは~/.cannaにLispのコードを書く事で行う。自分で1から書くのは大変なので、まずは/etc/canna/default.cannaの内容を~/.cannaにコピーしてきてからいじると良い。設定項目は多いが、日本語で詳細なコメントがついているので、困ることはないだろう。default.cannaの位置は環境によって違うので、/etc/canna/にない場合はlocateで探す。

また、ATOK風の設定にしたい場合や、VJE風の設定にしたい場合は、自分で1から設定をいじらずとも、/usr/share/canna/に既にそのような設定にしてあるファイルが存在する。例えば、just.cannaというのはATOK風の設定になっているファイルなので、~/.cannaに

(load "/usr/share/canna/just.canna")

と書けば、ATOK風の設定になる。他にも/usr/share/canna/には色々なカスタマイズ用のファイルがあるので、興味のある方は一度チェックしてみると良いだろう。

使う辞書を増やす

Debianではデフォルトでは使用する辞書の設定は以下のようになっている。

(use-dictionary
 "iroha"
 "fuzokugo"
 "hojomwd"
 "hojoswd"
 :bushu "bushu"
 :user  "user"
 )

ここで重要なのは :user がついている行である。:userは、うしろに続く辞書名がユーザ辞書である事を示している。use-dictionaryという名前からわかる通り、これは使用する辞書に関する設定なので、新しくユーザ辞書を作ったらここに追加しておく必要がある。例えば、user2という辞書を新しく増やした場合には、設定は以下のようになる。

(use-dictionary
 "iroha"
 "fuzokugo"
 "hojomwd"
 "hojoswd"
 :bushu "bushu"
 :user  "user"
 :user  "user2"		←この行が増えた
 )

新しいユーザ辞書を実際に作るのは、Part5で紹介するKannaDicで行うと良いだろう。

組み合わせられるインプットメソッド

Cannaを使えるインプットメソッドは、たくさん存在する。筆者の知るXIMサーバだけでも、kinput2にim-jaにDearuにKimeraと、4つも存在する。uimやIIIMFもXIMサーバに入れると6つである。これだけたくさんあると、まだ他にもあるんじゃないかと疑念が湧いてくるぐらいだ。今回はPart3ではYCやcanfepとの組み合わせを、Part4ではkinput2との組み合わせを紹介する。

お勧めのユーザ

現在の主要なLinux Distributionでは、かなりの割合でデフォルトの日本語入力用エンジンとしてCannaが採用されている。FedoraCoreもVineもCannaだ。というわけで、まわりのみんなと一緒のものを使いたいという人や、デフォルトから変えるのなんてめんどくさいという人にはCannaがオススメである。また、後で紹介するが、KannaDicという出来の良い辞書管理ツールが存在するので、KannaDicを活用したい人にもCannaはオススメできる。

FreeWnn

公式サイトはhttp://www.freewnn.org/である。

特徴

FreeWnnはWnn4.2をベースとしてFreeWnn Projectにより開発されている連文節方式のかな漢字変換ソフトウェアである。(公式サイトは2002年7月から更新されておらず、残念ながら開発はほぼ停止状態のようであるが。)Wnn4.2以降、しばらくの空白期間の間に出たたくさんのパッチがマージされ、必殺パラメータも採用されるなど、多くの改善が加えられている。

原稿執筆時点における最新の安定版は1999年7月にリリースされたFreeWnn-1.1.0である。

インストール

Debianの場合は

#apt-get install freewnn-jserver

でインストールできる。Fedoraの場合は最初からインストールされている。

起動しているかどうかの確認

FreeWnnも変換エンジンはマルチユーザ・サーバとして動作している。サーバが起動しているかどうかは

$ps ax|grep jserver

を実行する事で確認できる。

 1428 ?        S      0:00 /usr/bin/Wnn4/jserver

のような結果が返ってきた場合、サーバは動作している。

組み合わせられるインプットメソッド

FreeWnnを使用できるXIMサーバとしてはkinput2、Xwnmo、im-jaといくつかあるが、本特集では一番有名なkinput2との組み合わせについて解説する。Emacs用の日本語入力ライブラリeggもFreeWnnに対応している。

お勧めのユーザ

逆変換をサポートしているのはフリーなかな漢字変換エンジンではFreeWnnだけなので、逆変換を使いたい人はFreeWnnを使うのがおすすめである。

Wnn7

公式サイトはhttp://www.omronsoft.co.jp/である。

特徴

Wnn7は、Wnn4.2をベースとしてオムロンにより開発されたかな漢字変換ソフトウェアであり、今回紹介する中では唯一商用のソフトウェアである。Wnn7もそれまでのWnnと同じくマルチユーザのサーバとして動作し、そこにXIMサーバなどから接続する形をとる。商用ということで変換アルゴリズムも改良され、辞書も語彙数を大幅に増やしている。

Xwnmoとの組み合わせで、Gtk+で構築された変換候補ウィンドウを使用できたり、GUIで設定を変更できたりと、商用だけあって細かいところへの配慮はFreeWnn + kinput2の組み合わせよりも行き届いていると感じるのだが、Gnome2やKDE3が一般的になってきた現在、Gtk+1.2で構築されたGUIはデスクトップで浮いて見えてしまう事があるのも事実である。Wnn7の発売から3年弱も経過しているし、そろそろWnn8の発売をユーザは望んでいるのではないかと思う。

組み合わせられるインプットメソッド

Wnn7にはXwnmoというXIMサーバが付属している。kinput2もWnn7に対応しているが、普通はXwnmoから使用するだろう。Emacs用の日本語入力ライブラリeggもWnn7に対応している。

お勧めのユーザ

お金を払ってでも語数の多い辞書をゲットして高い変換効率を得たいという人、充実したGUI設定ツールが欲しい人におすすめ。

まとめ

セキュリティを気にするかどうかで、選択肢の広さは変わってくる。セキュリティの問題がない(デフォルトで個人辞書が保護されている)のはAnthy,SKK,PRIMEの三者である。他は認証なしで他人の個人辞書を勝手に読みだせてしまう。セキュリティを気にしてなおかつ普通の連文節変換が使いたいという場合はAnthyしか選択肢はない。

他人に辞書とか見られても問題ない、という人には広い選択肢がある。お金があるならWnn7を使えば良いし、今はちょっとお金がないという人やソース読んでナンボなんだよという人はCannaやFreeWnnを使えば良い。