2013.09.19
ST

JavaScriptでWindowsのGUIアプリ (xulrunner)

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



今回のおまけ情報
——-
UTF8 のcsvファイルをエクセルで読み込ませる
Shift_jisコードに変換して読み込ませるのが今までの私の常識でした
BOMコードを目的のcsvファイルの頭にBOMコードを入れておけば、excel
で開いた時にutf-8と認識して表示できるとうことです

あいう,えお,12
かきく,けこ,34

といったutf8で書いたtest.csvを作ってexcelで開くと


縺ゅ>縺・縺医♀ 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()部分を出力の頭へ埋め込んでしまえば良いだけです。



ST

一覧に戻る