タイトルは「Linuxの「かな漢字変換」」です。ひらがなの文字列を普通の漢字かな混じり文にするソフトウェアの話です。
はじめに
この記事ではLinuxの日本語入力を歴史の中で特にかな漢字変換の部分の歴史についての概要です。その時代に広く使われていたと筆者が独断で思う物のみに触れます(触れてない物の中には筆者の友人知人の作品も含まれていて心苦しい点もありますが…)。
Linux以前 - 国産ワークステーションの時代
80年代後半から90年代前半にかけて国内の複数の会社がワークステーションを製造販売していました。各社ではそれぞれのアーキテクチャにUnix系OSを移植し、何社かはそこに搭載する日本語入力のシステムを自社で開発し、さらに素晴らしい事にほぼオープンソースな条件でソースコードを公開していました(NECのCanna, オムロンのWnn, SONYのSj3)。
その中ではCannaやWnnといったソフトウェアがLinuxで使われるようになっていきました。
しかしながら、国産ワークステーションの市場が縮小したため、ソースコードを公開しての開発は90年代中盤に終了してしまいました。
その後も有志によって細々と開発は続けられましたが、ほとんどが処理系の変化への追随やパラメーターの更新といった内容で、変換アルゴリズムを改善して精度を向上させるような努力は行われませんでした。かな漢字のコア部分のような複雑なコードは本業としての深いコミット無しに改善できるような楽な物ではないのが理由であると考えてます。
Linuxデスクトップへの期待
この記事を最初に書いた2018年においてLinuxと言えばサーバーを動かすOSもしくはAndroidのカーネルといった認識が強いですが、1990年代後半にかけてLinuxの利用者や開発者が増えていった際にはPCへのデスクトップでの発展が期待されていました。
1996年にKDE、1999年にGNOMEが登場して改善が進むといった動きの中でWindowsのシェアを侵食していく可能性が真剣に議論されていました。オープンソースへの楽観的な期待が膨らみ、コミュニティの力で大企業が真剣に取り組んでいるものに対抗できると考えるのは非常に楽しいものでした(その頃、筆者は学生だったので現実のビジネスへの理解は薄かったです)。
デスクトップ環境がそのように勢いを感じさせる状況の中でも日本語入力のためのソフトウェアは前節で述べたようなワークステーション用のものが使われ続けていました。
そういう状況を解決すべき(と考えてたかは忘れましたが…拙作の)Anthyが登場し、2004年頃からいくつかのディストリビューションに標準搭載されました。
この頃はかな漢字変換だけでなく、GUIの改善や国際化といった点でも多くの成果がありました。
その後、Linuxデスクトップのブームの退潮に伴うように開発は停滞していきました。Anthyも開発は2007年頃には開発が終了しました(作者自身もコードを書く時以外はWindowsを使うようになっていったと記憶してます)。
オープンソースのもの以外にも商用のソフトウェアがいくつか発売されましたが、この市場の成長が期待外れで売り上げにならなかったせいかビジネスとしては終了しています(とある製品の売り上げを聞いたことがあるのですが、絶望的な金額でした…)。
少し前の状況
そんな中Google日本語入力のオープンソース版であるMozcが2010年に公開され、性能の高さもあって広く使われるようになりました。Mozc公開時のリリース文には「今回のオープンソース化は、まずは Chromium OS への対応を目的としたものですが、同時に、より多くの開発者に日本語入力やインプットメソッドに興味を持っていただくことも強く期待しています。」とあり、まずは開発者のためという意図があったようでした。
2013年にはRedHat社の技術者によってlibkkcというかな漢字変換が公開されています。Mozcがパッチを受け入れないといったことが開発の理由として挙げられていたようですが、libkkcがパッチを受け入れながら開発できているのかは不明です。(Vala言語という言語で開発されてます…ご存知?)
どちらのソフトウェアもgithub上で見る限り開発は停滞している様子です(社内用ブランチにフォーカスが移った可能性もあります)。
まとめ
この分野のソフトウェアがコミュニティを取り巻く状況によって活発になったり停滞したりといったことが繰り返される様子をまとめてみました。近い内に何かが発生するとは思いませんが(何年も間を開けた方が周辺の技術が進歩して、色々と楽になってると考えられますし)、次はどんな変化が起きるのか楽しみです。
…ということでSKKを使いましょう(筆者もLinuxでコードを書いてコメントを日本語で書くときに使ってます)。コミュニティの力でメンテナンスできるシンプルさは素晴らしいですよね(かな漢字変換の議論をしている時に自分はSKKを使ってるとだけ主張しにくる人がいて迷惑ですが…)。
蛇足
昨今は機械学習等の知識の普及により、かな漢字変換への理解が深まっているのを感じます。例えば、大量のマイナーな語彙を手動で追加してみると普段使いの性能が低下するというのは一部の人が何となく認識していたことではありますが、最近では開発者を含む専門家がTweetや論文などで言及したため多くの人々が理解するようになりました。(古のネットニュースのfj辺りに書いてあったいい加減な解説を真に受けた人も見かけなくなりました)
以前、国内の業界団体による「OSS貢献者賞」という表彰が10年程行われ、その間に日本語入力や文字入力に関わっていた多くの人々が推薦を受けたのですが、誰も受賞しませんでした(年に数人から10数人、OSSの別の様々な分野の人々が受賞していました)。筆者個人としてはキーパーソンの誰かは受賞してしかるべきだったと考えていますが(日本人だったら日本語を扱う技術を大事にすべき!とか内輪の飲み会で主張してたりしますが…酔ってない時には言いません)、現実的にはそれが業界もしくはコミュニティの評価の代表例のように思えます。
この分野はオープンソースだから通りすがりの誰かが改良に参加するっていう楽観論が辛くなる領域のようです。また、ディストリビューションを通してユーザーに届けるってのは結構めんどくさかったので、そのうち改善されると良いなと思うなど…
Unixワークステーション時代のソフトウェアはサーバークライアント方式を取っていたのですが、複数ユーザーで使う時にユーザー名を名乗る仕組みはあっても、パスワード等で認証を行う仕組みを持っていませんでした。筆者の感覚的には80年代だとOK、90年代だとヤバい、今世紀の基準では許されないという感じです。歯ブラシを共有する状況に例えたりします。
2004年辺りのとあるLinux distributionのデフォルトのサーバーとクライアントの設定は次の画像のような感じでした。ウソがつけるだけでなく、正しい情報を伝える方法が無い場合があったりと、今の基準ではダメですよね。