このエントリーをはてなブックマークに追加

romaji

romajiとは

romajiは、日本語のメッセージを強引にローマ字にするコマンドです。

データーセンターのサーバールームの中で直接サーバーにキーボードとディスプレイを接続して作業をする事は稀ですが、サーバーの定期メンテナンス作業やサーバーの故障でリモート操作ができない場合は、やむなくサーバーに直接キーボードとディスプレイを接続して作業すると思います。

しかし、サーバーにX-Windowが入っている場合は稀で、大抵はコマンドラインを叩いて操作するだけですが、その際に日本語でインストールしてあると文字化けして表示が読めません。そこで、export LC_ALL=Cと入力して全てのメッセージを英語で出力させるわけですが、中には日本語の表示しか対応してないソフトもあります。(自分の作ったコマンドだけ??)

また、どうしても英語モードにしてしまうと英語が読めないという人もいるかもしれません。まあ、Linux関係の仕事をするのであれば、中学生程度の英語ぐらいは読めるようでないと話にならないのですが、という私もほとんど読めませんで、自分の作ったLinuxコマンドの表示は日本語の表示しかなかったりします。

さらに困った事に、サーバーとしてインストールした時は大抵はkonという日本語表示ツールを入れてないし、入っていてもディスプレイドライバが対応しておらず画面に何も表示されなくなったり、ディスプレイが対応してなかったりして八方ふさがりになったりします。

そこで、なんとか日本語のメッセージを強引にローマ字に変換してしまおうというコマンドを作りました。

コンパイル・インストール方法

まず、ソース一式をダウンします。
romaji-1.02.tar.gz
これを、適当なコンパイル用のディレクトリにアップします。

tar xvzf romaji-1.02.tar.gz
cd romaji-1.02
make
sudo make install

コンパイルが通れば、実行ファイルが/usr/local/binにコピーされます。外部ライブラリは使ってないので、configureスクリプトは入ってません。お使いの環境でコンパイルが通らない場合は、Makefileを書き換えてみてください。

このサイトで使っているサーバー(CentOS4.5)では正常にコンパイルする事ができましたが、全てのLinuxでコンパイルできるとは限りません。Linuxのディストリビューションによってはエラーが出てしまう事も考えられますが、その際は申し訳ありませんが、エラーの内容をチェックしてソースやMakefileの修正をお願いします。

書式

romaji -i 入力ファイル -o 出力ファイル [オプション]

cronで動作させる、外部プログラムから呼び出す、などの場合は -i で入力ファイル、-oで出力ファイルを指定してください。ただし、-iは指定しないと標準入力、-oは標準出力になるので、コマンドラインから叩く場合は、
cat 入力ファイル | romaji
みたいにパイプで処理した方がやりやすいと思います。

・オプション
-e 入力ファイルをEUCコードとみなします。
-s 入力ファイルをSJISコードとみなします。
-j 入力ファイルをJIS(ISO-2022-JP)とみなします。
-u 入力ファイルをUTF-8とみなします。

-e -s -j -uを指定しないと、文字コードを自動判別します。ただし、自動判別はあんまりアテにしないでください。SJISコードにしか存在しないコードがあればSJIS、2バイトコードのオン・オフのエスケープシーケンスがあればJIS(ISO-2022-JP)、それ以外ならEUCとして判別してますが、SJISとEUCは完全には判別できませんので。あと、UTF-8は自動では判断できないので、入力ファイルがUTF-8の時は必ず-uを指定してください。

--help
ヘルプメッセージを出します。もともと日本語を表示できない環境で使う事を前提としているため、英語の苦手な私の作ったコマンドにしては珍しくヘルプも英文字です。ただし、お世辞にも英語といえるものではありません。文法の間違い等は大目に見てください。

urldecのヘルプメッセージを、日本語の表示に対応したターミナル(Poderosaなど)で表示させた場合
# urldec --help
使い方:
urldec [オプション] [--help]
オプション:
-i 入力ファイルを指定します。指定しない時は標準入力になります。
-o 出力ファイルを指定します。指定しない時は標準出力になります。
-c0 Googleのキャッシュからのアクセス記録の、cache:xxxx:URL 文字列を消去します。(デフォルト)
-c1 Googleのキャッシュからのアクセス記録であっても、そのまま残します。
-c2 Googleのキャッシュからのアクセス記録は削除します。
--help このヘルプを表示します。
これは普通に読めますね。しかし、サーバーに直接キーボードとディスプレイを接続して操作する場合、こんな風に日本語で表示はできないと思います。例えば、これを英語しか使えないコンソールで(XPのコマンドプロンプトなど)で表示させると、
# urldec --help
サネ、、ハ。ァ
urldec [・ェ・ラ・キ・逾 [--help]
・ェ・ラ・キ・逾ァ
-i ニホマ・ユ・。・、・・リト熙キ、゙、ケ。」サリト熙キ、ハ、、サ、マノクス猗ホマ、ヒ、ハ、熙゙、ケ。」
-o スミホマ・ユ・。・、・・リト熙キ、゙、ケ。」サリト熙キ、ハ、、サ、マノクス狄ミホマ、ヒ、ハ、熙゙、ケ。」
-c0 Google、ホ・ュ・罕テ・キ・螟ォ、鬢ホ・「・ッ・サ・ケオュマソ、ホ。「cache:xxxx:URL ハクサ昀テオ釥キ、゙、ケ。」。
ハ・ヌ・ユ・ゥ・・ネ。ヒ
-c1 Google、ホ・ュ・罕テ・キ・螟ォ、鬢ホ・「・ッ・サ・ケオュマソ、ヌ、「、テ、ニ、筍「、ス、ホ、゙、゙サト、キ、゙、ケ。」
-c2 Google、ホ・ュ・罕テ・キ・螟ォ、鬢ホ・「・ッ・サ・ケオュマソ、マコ・・キ、゙、ケ。」
--help 、ウ、ホ・リ・・ラ、スシィ、キ、゙、ケ。」
文字化けしてしまってまったく読めませんね。

しかし、これをromajiでパイプしてみると
# urldec --help | romaji
[si]i[hou]:
urldec [opusilyon] [--help]
opusilyon:
-i [niyuu][rilyoku]fulairuwo[si][tei]simasu.[si][tei]sinai[zi]ha[hilyou][ziyun][niyuu][rilyoku]ninarimasu.
-o [siyutu][rilyoku]fulairuwo[si][tei]simasu.[si][tei]sinai[zi]ha[hilyou][ziyun][siyutu][rilyoku]ninarimasu.
-c0 Googlenokilyaltusiyukaranoakusesu[ki][roku]no[?]cache:xxxx:URL 
[bun][zi][retu]wo[silyou][kilyo]simasu.(defuloruto)
-c1 Googlenokilyaltusiyukaranoakusesu[ki][roku]dealtutemo[?]sonomama[zan]simasu.
-c2 Googlenokilyaltusiyukaranoakusesu[ki][roku]ha[saku][zilyo]simasu.
--help konoherupuwo[hilyou][zi]simasu.
まあ、一応「文字化けしてまったく読めないよりはマシ」にはなりますが、決して読みやすいものではありません。このコマンドはもう完全に、他に手段がなくて一か八かの時に使ってください。

[ ]で囲まれている部分は漢字です。漢字を強引に音読みしています。なので、入力は「[niyuu][rilyoku]」となり、ある程度読めるのですが、「使い方」は「[si]i[hou]」となってしまうので、よっぽど想像力を働かせないと読めないと思います。

[?]は記号や第二水準漢字やEUCコードにない漢字などの登録されてない2バイト文字です。この場合、もうここに何らかの文字があるなーぐらいに思って読み飛ばしてください。

旧バージョン

現バージョンにコンパイルエラーが出てしまう場合は、旧バージョンも試してみてください。
romaji-1.00.tar.gz
romaji-1.01.tar.gz

これを作るにあたっては、さほど時間をかけておらずデバッグもほとんどしてないので、バグ等かなりあると思いますので、あんまし出力結果を鵜呑みにしないでくださいね。反響があれば改良してみようかと思いますが、まぁおそらく反響はないでしょう。ご意見・ご希望がありましたら、掲示板に書くか、上のツイートボタンを押してつぶやいておいてください。

ソースは、urldecコマンドの使いまわしですので、使ってない変数が宣言されてたり、必要がないのに配列でやたらとメモリーを湯水のように確保してたりと、非常に汚いです。お気に召さない方は、コピーライトの部分さえ改変しなければ改変してもかまいません。

ググってビックリ

「これはなかなかすばらしいアイデアだ」などと自負していたら、ググってビックリ。既にKAKASIという、より優れたものがフリーでとっくに世に出ていたのね。

っていうか作る前にググれよと・・・。
このページの先頭へ
  広告