Unicode 対応版 romkan.pl

https://github.com/kaz-utashiro/romkan

 住所録は1980年代に書いた自分のスクリプトで管理していて、年賀状の宛先もこのリストから作る。一時期は Mac 用の年賀状ソフトを使っていたこともあり、スクリプトで生成した csv ファイルを流し込んで印刷した。裏面はどうせ自分で作るので、毎年新しくする必要はない。郵便番号が7桁になっても古いバージョンをなんとかして使い続けたが、Intel Mac になったらさすがに動かなくなった。新しいソフトを買おうかとも思ったが、必要ない気がして最近は Word の差し込み印刷機能を使っている。この場合、スクリプトで出した csv を Excel に入れて、Word で読み込む。

 独自形式の住所録には「読み」の欄はないが、大抵はローマ字表記も入れてある。その方が検索するときに便利だからだ。このローマ字表記から仮名の読みを作ると他のソフトで読み込んだ時に何かと便利なのでそうしていた。その時使っていたのが、やはり自作の romkan.pl という Perl ライブラリだ。

 住所録コマンドを遅ればせながら今年 Unicode 対応に変更してあった。年賀状の準備をするかと実行してみて、初めて読みが壊れていることに気がついた。さてどうしたものかと調べてみると、Dan Kogai 氏が似たようなライブラリを作ってくれている。

404 Blog Not Found:perl - Lingua::JA::Kana released!

 一旦はこのライブラリを使うようにスクリプトを変更もした。しかし、仕様が若干違うのと、やはり長年使い続けて来た自前のライブラリに愛着があるので、新しい環境で使えるように更新してみた。というわけで、10年ぶりに更新した Unicode 対応版 romkan.pl なのだ。

 記憶を辿ると、このコマンドは、そもそもローマ字で書かれたメールを読むために作ったような気がする。なので、単独で実行すると入力中の単語の中で全体を仮名に変換できるものだけを変換して、変換できないもの(英単語である場合が多い)はそのまま出力するようになっている。ローマ字の文章をこのコマンドに通すと、日本語らしき部分が仮名に変換されるので、ローマ字のままよりは格段に読みやすいのだ。Date みたいな英単語は「だて」に変換されてしまうが、それはご愛嬌。

 そういえば、コメントにはこんなサンプルプログラムが書いてある。

require('romkan.pl');
while (<>) {
    s/([\w\-\']+)/&romkan($1)||$1/ge unless 1 .. /^$/;
    print;
}

何をするためのスクリプトかおわかりだろうか。これは、メール形式データのヘッダ部分はそのまま出力し、本文部分の仮名に変換可能な文字列を変換して表示するためのスクリプトだ。文字端末型のメーラーやニュースリーダを使っていればパイプで流し込むだけでいいのだが、最近はそんな環境で使ってる人はいないね。

 このライブラリは単独のコマンドとしても実行できるようになっている。そのコマンドでライブラリ自身を変換してみたりしても面白い。やってみたら入力を utf8 にしないといけないことがわかったので、とりあえず実行時に -Cio オプションを追加してみた。スクリプト内で設定する方法が簡単にはわからなかったので、まあこれでいいかと。

% romkan.pl /usr/share/dict/words | grep -vi '[a-z]'

てな感じで、仮名に変換可能な英単語のリストができる。

 プログラムは効率悪そうに見えるが、処理系がオプティマイズしてくれるんじゃないかと期待している。どのように動作するかを見たければ romkan.pl -debug のように実行してみるといい。