どうしよう日本語入力システム (その2)

昔の話をするようになったら歳をとった証拠だ。が、いきがかり上、しばらく昔の話を書いてみよう。

日本語入力システム自分史

UNIX 期

Wnn を使い始めたのは学生だった 1991年頃だ。その前には NEC の PC98 で少しのあいだ ATOK を使っていた。確か「一太郎 Ver.3」だったから、いま調べてみると ATOK6 か ATOK7 だったことになる。

そこに Sun SPARCstation 2 というワークステーションが研究室にやってきて、X Window system で日本語を入力するのに Wnn を使い始めた。確か X11R4 や R5 だったので、これもいま調べてみると、それらに標準添付されていた Wnn 4.1 や Wnn 4.2 を使っていたことになる。その頃にあった別の日本語入力システムの Canna や Sj3 は使ったというより試してみた程度だった。

その後使った HP のワークステーションの HP-UX に VJE だか ATOK だかが付属していたと思うが、このワークステーションはほとんどリモートで使っていたので、日本語入力システムに触れることは滅多になかった (もう当時のバージョンがいくつだかも忘れてしまった)。

Wnn 4.2 の頃はいろいろと情報が出回っていて、辞書を追加したりパラメータを調整することで、標準の状態よりかなり変換精度を上げることができた。

世間で Windows 3.1 や Windows 95 が大流行している頃、私は Sun SPARCclassic を独占してデスクトップで使えるという環境にあったため、その時期を Windows と無縁で過ごした。その後ノート型を含め、いわゆる PC/AT 互換機も使うようになった頃には既に Linux が入手できたため、そこでも Windows を使わずにすんだ。そんな職場を離れたあとも今日に至るまで、トータルで 20 年以上もコンピュータを毎日使っていながら Windows も Mac も常用したことがないという、たぶんかなり珍しい部類の人となった。

Linux-Wnn 期

1997 年、Wnn 6 for Linux/BSD が発売されるとすぐに購入した。UNIX 版はその前に出ていたが普通に買える価格ではなかったし、その頃には Sun SPARCclassic は既にサーバーとして裏にまわり、Debian をインストールした PC をデスクトップで使っていた。

Wnn 6 は、それまでのバージョンがフリーソフトだったのに対し、商用ソフトであった。「Wnnについての基礎知識」のページの中ほど、「*Wnn6 で強化された機能とは」の項にあるように、20万語のシステム辞書、「フレキシブル・インテリジェンス(Flexible Intelligence)機能」により、変換精度は格段によくなった。

2001年、Wnn 7 for Linux/BSD が発売になり、これもすぐに購入した。

ATOK 期

2005年に Wnn 8 が発売になった際には、Wnn 7 で十分満足していたので購入を見送った。UTF-8 への対応というのが大きな変化だったが、その頃はまだ EUC-JP で使い続けていたので、その必要性も感じなかったのだ。その後 2009年に、別の会社から、その時点の ubuntu に対応したという Wnn8 for ubuntu というものが発売されたが、ほぼ1年で販売を止めてしまったようだ。

これらを購入しなかったことを後悔する時がやってきた。2010年頃には、(1) OS のライブラリが新しくなり、依存関係を改変しないとインストールもできなくなってきた。いつか本当に起動しなくなるかもしれない。(2) 最近は UTF-8 でしか動かないアプリケーションがいくつか出てきたが、Wnn 7 (xwnmo) は locale を EUC-JP にしなければならないため、日本語を入力できない。(3) 開発元の情報を見ても、この先、新しいバージョンが出る気配がない。という状況になってしまった。

OSS の Anthy を試してみたものの、あまりの使い勝手の悪さに 1週間ほどで嫌になってしまった。

そこで思い切って ATOK X3 を購入することにした。ATOK X3 は 2007年の製品で、既に時代遅れぎみだが、こちらも次がいつ出るのか(そもそも次はあるのか)見えないので、思い切ることにした。

ATOK X3 が悪いとは言わないが、何しろこちらが Wnn に慣れきっているため、不満に思ってしまう点はいくつかあった。

変換精度が思ったほど高くないと感じるのは、長いあいだ学習させてきた Wnn7 と比較しているからだろうか。それを割り引いても 2001年の製品である Wnn7 のほうが「賢い」ように感じられた。

それに、異体字(いわゆる旧字)を簡単に出せない。Windows 用の新しい ATOK には異体字変換があるようだが、Linux 版 の ATOK X3 にはその機能がない。Wnn7 には標準で「異形字変換辞書」を持っており、いったん仮名から漢字に変換したあと(たとえば「けいざい」→「経済」)、漢字から異形字(「経」→「經」、「済」→「濟」)に変換する、単漢字変換の一種ともいえる機能があった。とりあえず「正字正假名辭書」を追加してしのぐことにしたが、これは単語レベルの辞書なので、登録されていない単語(人名など)で旧字を出したいときにはやはり苦労する。

発売直後から指摘されている不具合が未だ放置されているなど、開発元のやる気のなさも心配だったのだが、前の記事にも書いたように、たった1年ほどで終わりの時が近づいてきたようだ。


結局、20年ほどの日本語入力システム自分史を振り返ってみると、最近1年の ATOK X3 を除いて、なんと19年が Wnn (そのうち10年ほどが Wnn7) というものであった。

この項さらに続く(たぶん)。

どうしよう日本語入力システム (その1)

Debian sid (i386) で、libgtk2.0-0 を 2.24.5-4 にアップデートしたら日本語入力システム ATOK X3 が使えなくなってしまった。2.24.4-3 に戻せば使える。そのあいだのバージョンではどうだかわからないが、いずれにせよ、ほかのアプリケーションとの兼ね合いで libgtk をそのままにしておくわけにもいかないだろうから、ごまかしておけるのも時間の問題だ。

そもそも、それまでずっと使っていた日本語入力システム Wnn7 が、やはりライブラリ (や、日本語文字コード) の問題でうまく動かせなくなり、その代わりにしかたなく ATOK X3 を使い始めたのだった。今度もまた本質的ではないと思われるライブラリの問題で使えなくなるとは非常に残念である。このへんが頻繁にバージョンアップのあるオープンソースと、どうしても対応が緩慢 (この場合、緩慢どころかもう停止してるのだろう) になる商用ソフトの相性の悪いところだ。

選択肢がない

日本語を使う者にとって日本語入力システムは必要不可欠だ。ハードウェアがどうとか OS が何であるかよりもっと人間よりのところにあると言ってもいい。キーボードのHappy Hacking Keyboard のページに、

アメリカ西部のカウボーイたちは、馬が死ぬと馬はそこに残していくが、どんなに砂漠を歩こうとも、鞍は自分で担いで往く。馬は消耗品であり、鞍は自分の体に馴染んだインタフェースだからだ。

いまやパソコンは消耗品であり、キーボードは大切な、生涯使えるインタフェースであることを忘れてはいけない。

[東京大学 和田英一 名誉教授の談話]

という言葉が掲げられているが、この「キーボード」を「日本語入力システム」に置き換えても何ら違和感はない。

それにもかかわらず、Windows 環境下ですら現在では選択の幅がほとんどない。その原因は Windows にバンドルされている MS-IME の寡占につきると思う。しばらく前の Web ブラウザ Internet Explorer 寡占問題と同じだ。このときヨーロッパは 「WindowsとIEの抱き合わせは競争法違反」と異議声明を出した。日本でも MS-IME に対して異議を申し立てるべきだったのだ。それまで多くの日本語入力システムがあって切磋琢磨していたものが、ほとんど姿を消してしまった。

OS のシェアから考えて、Linux 版のみの商用日本語入力システムが開発されるわけもなく、Windows 市場で稼げなければ Linux 版は存在し得ない(もちろん MS-IME の Linux 版が出るわけもないし)。こうして Wnn も Linux 版の ATOK も消えていきつつあるのが現状だ。


長くなってきたので、この項つづく

GNOME でのシャットダウンの禁止—最近の流儀

検索で古い記事「gdm でのシャットダウンの禁止」にだどりつく方があるようなので、最近のやり方を書いておきます。

その記事にあるように、私にとってそもそもなぜこの設定をしたいのかというと、うっかりミスの防止です。ログイン後のメインメニューで、「ログアウト」と隣り合って「シャットダウン」の項目があり、単にログアウトするつもりがシャットダウンしてしまうことがあるのです。

最近の流儀では policykit で設定で行うようです。その方法はdebian-user メーリングリストにあるとおりです。要点を簡単に記すと、

  • /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy を書き換えるという回答もあるが、このファイルはそもそも設定ファイルではないし、バージョンアップによって書き換えられる(元に戻ってしまう)ので、よろしくない。
  • /etc/polkit-1/localauthority/50-local.d/ に適当な名前(ただし末尾を .pkla にする)のファイルを作り、その中に次のように書く。
    [consolekit]
    Identity=unix-user:*
    Action=org.freedesktop.consolekit.system.*
    ResultAny=no
    ResultInactive=no
    ResultActive=no
    [upower]
    Identity=unix-user:*
    Action=org.freedesktop.upower.*
    ResultAny=no
    ResultInactive=no
    ResultActive=no
    
これで GNOME のメニューから「シャットダウン」の項目が消えます。

インターネットラジオを FM ラジオで聴く

radiko や NHK のインターネット配信とちょうど逆の話。

仕事中に音楽を聴きたい。しかし目の前にある PC にはスピーカーが付いていない。どうしても必要なときのために簡単なヘッドホンを付けてあるのだが音楽を聴くのには向いていない。1時間に数回は席を立つので紐付きになってしまうのは非常にうっとうしい。

FM トランスミッター

FM ラジオで聴くことにした。と言っても普通の放送局では好みの音楽をやっていない。そこで、音楽サーバーを置いて電波を出すことにした。

目の前の PC のほかに、いわゆる自宅サーバーとして電源を入れっぱなしの PC がある。これに FM トランスミッターを付けた。しばらく前に買ったもののすぐに使わなくなっていた オーディオテクニカの AT-FMT6だ。もともと電池式だが、無理矢理ケーブルを付けて USB から電源をとるようにした。

XMMS2

Debian で動いているこの自宅サーバーには、これまでサウンド関係のソフトは入っていないので、まず alsa-base パッケージをインストールする(必要なものが芋づる式にインストールされる)。音楽プレーヤーは、軽そうな XMMS2 にした。xmms2 パッケージをインストールするとこれも必要なものが芋づる式にインストールされる。そのほかに必要となりそうなプラグイン、xmms2-plugin-curl, xmms2-plugin-pls などもインストールした。

XMMS2 はプレーヤー本体と操作パネルを分離できるので、今回のような場合にはもってこいである。サーバー側には上記のものを入れ、目の前にある PC にクライアントの gxmms2 を入れる。X や libgtk はこちらにだけあればよい。

サーバー側で

xmms2 config core.ipcsocket tcp://192.168.1.101:9667
のように、接続しにくるクライアントを指定しておき、いっぽうのクライアント側では環境変数 XMMS_PATHtcp://192.168.1.2:9667 のようにサーバーを指定する。

そしてサーバー側で xmms2-launcher として、デーモンを動かしておき、目の前の PC で gxmms2 を立ち上げる。

プレイリスト

あとの操作は gxmms2 で……と思ったものの、gxmms2 でのプレイリストの作成手順がよく分からないので、これはサーバー側に付いている CUI の nyxmms2 で行うことにした。

まず適当な名前で playlist を作成する(以下の例では gourd)。リストを切り換えて、聴きたいストリームの pls を加える。

nyxmms2 playlist create gourd
nyxmms2 playlist switch gourd
nyxmms2 addpls http://stream-19.streamsolutions.co.uk:9052/listen.pls

複数の接続先を設定したければこれを繰り返して行う。聴くときにはクライアントの gxmms2 でリストの切り換えができる。


サーバーは家のほぼ真ん中の階段下に置いてあるので、仕事場だけでなく台所や寝室のラジオでも聴けるようになった。トランスミッターのアンテナがもう少しよければ、庭仕事のときにも聴けるのだが。

GNOME の「最近開いたドキュメント」

evince などを起動しようとすると、数分ものあいだ固まったようになってしまうことがごくたまにある。そのときは、GNOME の「最近開いたドキュメント」が記録されている ~/.local/share/recently-used.xbel の内容を消去すると直る。

原因は、そのファイルに NFS の向こうにあるファイル名が記録されているからだった。「ごくたまに」というのは、目の前の PC を使っているときに NFS 先のもうひとつの PC が動いていないことはめったにないから。で、いま evince で見たいのは手元のファイルという場合だと、NFS 先の PC の電源が入っていないことはわかっていても、起動がおかしくなる原因がそれとはすぐに思いつかない。起動時に勝手に(?)「最近開いたドキュメント」を読み込もうとして、そこで引っかかっている。

それで、手っ取り早い解決策がそのファイルの中身を消去すること。

数年前にもこれで首を捻ったことがあるのだけれど、ずいぶん長いこと同じ目に遭わなかったのですっかり忘れていて、またもや首を捻ってしまった。そういう訳で、たぶんほかの人の役には立たないけれど、自分のためにここにメモしておく。

Debian の psql で日本語を入力できない

Debian の PostgreSQL のフロントエンド psql で日本語が入力できなくなっていることに気づいた。いろいろ検索してみてわかったことをざっと記すと、まず、以前の psql では問題なかったのが最近おかしくなったのは

#603599
これまでの psql は libreadline (GPL v2+) と libssl (BSD-like であり GPL とは非互換) の両方にリンクしており、ライセンス的にバイナリの再配布は不可能。そこで、libreadline をやめて BSDライセンスの libedit にする

という事情らしい。

#607109
psql でマルチバイト文字が使えない

で指摘されているように、-n オプションを使えば回避できることから、libedit のバグのようだ。

同じ libedit を使っている gnuplot

#596870
非アスキー文字が使えない

で、実際に試してみたらそのとおりだ。

当の libedit には

#579729
utf8 に対応した新しいバージョンをパッケージしてほしい

という要望が出されているものの、動きはなし。

上流は NetBSD libedit なのだけれど、「libedit I18N化への道」(イントロ)を見ると、utf8 対応といっても問題が多く、ことの成り行きはこの方にかかっているらしい (つづきが(その1)(その2)(その3)(その4)(その5)。そしてこの時点での最新の「めもがき」によると、たいへんお忙しいらしい)。

さし当たりこの問題を回避するには、libreadline / libedit の機能をあきらめて psql -n として使うか、libedit を libreadline に差し替えてパッケージを作り直すか。根本的解決は、能力のない者としてはただじっと待つより為す術がない。

AT5IONT-I で組む PC に Debian をインストール

AT5IONT-I で PC を組む

PC の1台のファンがうるさくてしかたがなくなった。それだけ交換してもいいのだけれど、7年ほども使ってきた Pentium4 の PC で、ほかの箇所にガタがきてもおかしくないので、すっかり新しくすることにした。

この暑い夏、非常にうるさかったので、今回は静穏性を最重視して、CPU が Atom D525 のファンレスのマザーボード AT5IONT-I、ACアダプター電源、2.5インチHDD、光学ドライブはこの際なし(旧機のものを流用したくても ATAPI で、接続できない)とした。

「24pin対応」の電源を注文したのに届いた付属ケーブルが 20pin で ((20pin でも当面は困らないが、注文したものと違うままというのも嫌なので。))、販売店に連絡したら「メーカーが入れ間違えたもの」とのことで、正しいケーブルが届くまで時間がかかったりしたが、ようやく準備は整った。

Debian のインストール

接続できる光学ドライブがなく、しかも手元に USB メモリもなかったので、まずは旧機に新HDDを接続して、Debian lenny ネットワークインストール用 CD で起動してインストール開始。順調に進んで、ネットごしに最低限の Debian ができたところで、HDD を AT5IONT-I に接続する。

ネットワークコントローラチップドライバ

新機を起動すると順調に立ち上がって、いやー簡単簡単……と思ったのも束の間、追加のアプリを apt-get しようと思ったらネットにつながっていないことに気づく。しばらくケーブルやら設定やら見直してもなかなか解決できない。別の PC で検索して調べているうちに、ようやく原因にたどり着いた。

AT5IONT-I に搭載されているネットワークコントローラチップは RealTek 8112L というものらしい。Debian はドライバモジュール r8169.ko を読み込むがこれが動いていないようだ。検索して調べてみると、RealTek のサイトから RTL8111/8168B を持ってきて組み込めばいいらしい (参考: Script to Fix R8168 and R8111 in Debian/Ubuntu GNU/Linux)。

再び HDD を旧 PC に接続し、linux-headers-2.6.x などビルド環境を apt-get。Realtek のサイトから r8168-8.019.00.tar.bz2 をダウンロード。

rmmod r8169

で誤ったモジュールをはずし、持ってきたものを展開して、

make clean
make modules
make install

でインストール。インストールした先で

mv r8169.ko r8169.ko.BAK
echo "blacklist r8169" >> /etc/modprobe.d/blacklist
depmod -a
insmod r8168.ko

でモジュールを組み込む。

update-initramfs -u

initramfs を更新しておく。

ここまでできたら HDD を AT5IONT-I に戻し、起動してネットに正しく接続できた。

あとはネットごしに apt-get で必要なものをインストール。AT5IONT-I 搭載の ION2 のために nvidia-glx などもインストールした。

ATOK X3

上記のドライバの組み込みの作業は、カーネルが変わるたびにやらなければならならず面倒くさいので、この際と思い、その作業の前に lenny から unstable に上げてしまっていた。このときに dpkg も新しいものになった。

日本語変換は ATOK X3 にすることにした。別の PC (こちらも Debian の unstable)でも既に ATOK X3 を導入していたのだが、数ヶ月前から ATOK X3 に含まれる iiimf-* が「不正なバージョン番号」との警告が出るようになっていた。新機では、何と同じ警告のためにインストールそのものができない。これまた検索して調べてみると、「_」が含まれているのが原因。

dpkg -x, dpkg -e で展開して DEBIAN/control のバージョン番号を書き換えて dpkg-deb -b で再パッケージ。付属のインストールのためのスクリプトもそれに合わせて書き換えて、無事インストール完了。

ファン

完全ファンレスにしようかと思ったが、CPU温度が60度くらいになる。それでもいいのかもしれないが、旧機の電源部の大きなファンはそれほどうるさくないので(うるさくなっていたのはCPUファンだった)、これを取り出して、 AT5IONT-I のフィンの上に乗せた。CPU温度は30度程度になった。