XulrunnerはFireFoxと同じコードベースで作成されており、Geckoレンダリング
エンジンを利用でき、ちょっとしたWebアプリだけでなく、WindowsのGUIアプリ
として使うことができます。
自分だけで使う、ステータスなど無関係ならCUI利用のActivePerlやPowerShell
強いてはバッチファイルでも十分なケースは多々ありますが、やはり見栄えや
繰り返し使っているうちに上物が欲しくなります。
さらにこのXulrunner自身で作成する場合JavaScriptを記述する格好になるので
Webアプリを作る練習にもなります。
Xulrunner の用意
Xulrunnerは
https://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/24.0/runtimes/
で配布されています
現在のバージョンは 24.0でFireFoxの23.0.1よりも新しくなっているようで、さらに25.0
に向けたベータ版もすでに開発されているようです。
zipを展開するとこれで実行環境は揃います。
と書いているうちにFireFoxも24.0が9/18 つまり1週遅れでリリースされました。
面倒なのは このxulrunnerに対応したアプリを作る場合にディレクトリ規則がある点でしょうか。
あと当然のことながらファイル名・ディレクトリ名のスペルミスで動作しないこともあるので注意が
必要です。
特に表示はされないがxulrunnerだけプロセスとして動いてしまっていることもあるのでお気を
つけください。
作成アプリmyappのディレクトリ
C:\apptest
| application.ini
| chrome.manifest
| mytest.bat
|
|--- \chorome
| |--- \content
| | | main.js
| | | main.xul
|
|--- \defaults
| |--- \preferences
| | | prefs.js
*日本語を扱う場合は基本はutf-8になるので、utf-8文字コードで保存できるエディタ
が必要になります。
今回作成した中に mytest.bat があり C:\apptest\mytest.bat と指定してますので
C:\ 直下にapptestディレクトリとして展開してください
何はともあれ実際に動かしてみましょう
xulrunnerの実行ファイルを指定して、このアプリディレクトリのapplication.ini
を引数として実行するだけです
下の方の「テキスト表示(トグル)」を押すと
その下に「表示 表示」と表示されます。もう一度押すと隠れます。
次に「バッチ実行」を押すと、mytest.batが実行されます。
なお、このアプリを動かすと Windows7の場合はユーザディレクトリのAppDataの下にプロファイル
が作成されます。
プロファイルの作成に使われるのはapplication.ini の
vendor= (今回はmyapp)とName=(今回はapptest)です
ユーザ\AppData\myapp\apptest\Profiles\ランダムな文字列.default\
にできています。前述の”C:\ 直下にapptestディレクトリとして”はこのプロファイル
ディレクトリが関係してます…
まだ単純な操作だけですが、このXulrunnerを使ってちょっとしたアクセサリ・アプリを作ってみるのも
良いのではないでしょうか、もちろん本格的なアプリもできますし、応用すればFirefoxやThunderbird
のアドインにもなります。
Xulrunnerの最新 24.0ランタイムは xulrunner-24.0.en-US.win32.zipです。
今回作成したサンプルファイル:apptest.zip
あいう,えお,12
かきく,けこ,34
縺ゅ>縺・縺医♀ 12
縺九″縺・縺代% 34
といった文字化けになります。
そこでBOMコードの登場です
#!/usr/bin/perl
open(OUT, ">","bom.dat");
binmode(OUT);
print OUT pack("H*","EFBBBF");
close(OUT);
上記perl実行で bom.dat ができますので
cat bom.dat test.csv > test1.csv
これでtest1.csvをexcelで開けば文字化けなしで表示できるようになります。
あいう えお 12
かきく けこ 34
PHPやperlなどLinux上でcsvファイルを扱う場合は上記を考慮すると
幸せになれるかもしれません。
ちなみにphp で同等のものは下記のような感じです。
#!/usr/bin/php
どちらもファイルbom.datに出力してますが、直接csvファイルを出力するスクリプトなら
pack()部分を出力の頭へ埋め込んでしまえば良いだけです。