魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

wxJavaScript

wxJavaScript の第1回は、まずはとにかく、取り急ぎ紹介したいと思う。

【 wxJavaScript - http://www.wxjavascript.net/

f:id:fxrobot:20131117022740p:plain

ローカル Windows で動作する JavaScript はこれだけではないけど、なんてったって wxWidgets だから GUI がリッチで使いやすい。

それが、Windows 7 で使えちゃうわけだから、これ、ちゃんと開発してくれたら、ありがたいんだけどね。

前回も書いたけど、wxJavaScript のプロジェクトは GLUEscript(http://gluescript.sourceforge.net/)なるものに切り替わってしまったようだ。

JavaScript の商標はオラクルが押さえているので、それを配慮してのことかもしれないね。個人(1人だけ)のプロジェクトなので苦労をしたことだろう。

しかし、どうなろうと wxJavaScript というカテゴリーは不滅だと思うので、ぼく的には、この魅力的なプログラミング言語環境を追いかけていきたいと思う。

というわけで、さてさて、興味がわいた人は使ってみればよい。GLUEscript に挑戦してみたい人は、そちらでもよいと思うが、急がずにまずは wxJavaScript をやってみるのがよいと思う。

【 wxJavaScript ダウンロードページ - http://sourceforge.net/projects/wxjs/files/wxjs/f:id:fxrobot:20131117024816j:plain

普通は最新版をダウンロードするだろうが、ぼくは 0.9.73 を選んだ。最新版の 0.9.75 でもよいはずだが、ぼくの Windows 7 ではハングが多い。原因はまだわかっていない。更新リストを見ると 0.9.73 から 0.9.75 へずいぶんモジュールが増えているので、いつか困ることになりそうだけど、まずは Windows 7 で安定しているように見える 0.9.73 を選んだ次第だ。WindowsXP の人などは 0.9.75(最新版)がよいのかもしれない。申し訳ないがこの辺りはわからない。

まずは、最新版を選んだ場合で説明しよう。

上の画像にある「wxJavaScript 0.9.75」をクリックすると次の画面が表示される。そのなかにある「wxjs_win.0.9.75.zip」を選んでクリックする。すると次の画面 が表示されるがなにもせず、5秒くらい待つとダイアログが出るので「ファイルを保存する」を選んで「OK」を押す。

これで、ぼくの場合なら デスクトップに wxjs_win.0.9.75.zip が現れる。それを解凍すると「wxjs」という名前のフォルダが現れるので、それを Cドライブのルートに放り込もう。(置く場所はどこでもいいよ) あと、「C:\wxjs\bin」にパスを通しておくと便利。

wxJavaScript の日本語の情報は現在ほとんどないが、唯一ともいえる CodeZine の記事が参考になると思う。http://codezine.jp/article/detail/3815

f:id:fxrobot:20131117032900j:plain

 そのなかに上の記述がある。
 でもこれって、

wxjs.modules.gui = new Module("../modules/wxjs_gui.dll");
wxjs.modules.gui.load();

の間違いじゃないだろうか。ぼくは上の2行を C:\wxjs\bin フォルダのなかにある modules.js に追加した。それにしても、最もキモとなるはずの GUI モジュールをデフォルトで読み込まない設定になっているとはどういうことか。腑に落ちない。

ちなみに 0.9.73 では modules.js ではなく modules.xml になっていて、その内容は以下のとおり。

<?xml version="1.0" ?>
<modules>
<module name="gui" load="Y">../modules/wxJS_gui.dll</module>
<module name="io">../modules/wxJS_io.dll</module>
<module name="expat">../modules/wxJS_expat.dll</module>
<module name="db">../modules/wxJS_db.dll</module>
<module name="tpl">../modules/wxJS_tpl.dll</module>
<module name="sqlite">../modules/wxJS_sqlite.dll</module>
<module name="mysql">../modules/wxJS_mysql.dll</module>
<module name="memcache">../modules/wxJS_memcache.dll</module>
<module name="curl">../modules/wxJS_curl.dll</module>
<module name="gd">../modules/wxJS_gd.dll</module>
</modules>

ちゃんと GUI モジュールも読み込んでいる。というわけで、仕事じゃないので解決策を探すことを避けて安易にとりあえず動くほうを使っている次第だ。きっと、Windows 7 だから不安定というよりぼくの何かが間違っているのだろう。

で、ぼくの場合は、wxJavaScript の 0.9.75 と 0.9.73 と GLUEscript 0.2.00 の3つを C ドライブに入れている。

f:id:fxrobot:20131117034511j:plain

_wxjs5 は、C:\wxjs5 フォルダへのショートカットで wxjs5 には wxJavaScript 0.9.75 が入っている。wxJavaScript を使いながら GLUEscript が Windows 7 で安定するのを待とうと考えているのだ。

f:id:fxrobot:20131117034945j:plain

で、コマンドプロンプトで、こんな感じで実行できる。

「/s」はサイレントの s で、DOSプロンプト画面を出さないで、GUI アプリを実行する。その他のパラメーターは以下のとおり。

f:id:fxrobot:20131117035032j:plain

 GLUEscript では glue.exe に加えて gluew.exe(ウインドウズ版だね)を提供している。

 さぁ、で、動くのか?

f:id:fxrobot:20131117035825j:plain

こんなコードを用意した。(プログラムファイルは UTF-8 で保存すること)

 で、これを実行すると、予想どおり..

f:id:fxrobot:20131117035951j:plain

こうなる。

ぼくの場合は今のところ、wxJavaScript の実行ファイル(wxjs.exe)のショートカットをあちこちに置いてプログラムをドロップして実行させている。

f:id:fxrobot:20131117040125j:plain

でもこういうのは、テキストエディタでマクロを設定すれば簡単になるよね。

さて、wxWidgets はとてもよいソフトウェアだと思う。

とにかく wxWidgets を覚えたい、使いたいという人にとっての問題は、どのプログラミング言語wxWidgets を学ぶのに適しているだろうかということだ。もちろん、Python を使っている人なら、なにも迷わず wxPython を使えばいいだろう。

ぼくの場合、本当をいえば、wxBasic がちゃんとしていれば、それで wxWidgets を使いながら覚えるのが一番だ。wxJavaScript も今のところ、こんな状態だからね。

個人的なプロジェクトじゃない、チームプロジェクトで進めているのがいいよね。どちらにしてもこういう共通 GUI ライブラリが完成してきたというのは本当にありがたいと思う。

ぼくは、プログラミング言語愛好家だけど、数ある言語のなかで、実際にある程度使ったことのある言語というのは多くはない。ウェブをやっていて避けられない JavaScriptPHP はある程度は経験を持つことができた。あとは、アセンブラ、C、Basic だね。大した経歴はないんだ。

今回、wxWidgets と出会ったことで、やはり、経験上、馴染みのある JavaScriptPHP で遊んでみたいという魂胆なのだ。PHP については、バージョン 3 の頃の経験で、もう 15年くらい接していないと思う。PHP は個人でウェブのアプリを書くのなら最良の選択だと思う。

もちろん、企業のプロジェクトならばもっとよい選択があるだろう。個人だと PerlPHP が選択すべき言語であることは確信できる。みんなレンタルサーバーを使うだろ。そりゃ、自前でサーバー立てる人は自由にやればよい。

話が脱線し始めたのでなにがよいか話はもう終わりとしよう。

というわけで、次は、wxPHP を使ってみたいと思っている。PHP は発展したとはいえ、やはり言語仕様自体は小さい(よね)。ガラパゴスBASIC のようだった PHP 3。それが今ではオブジェクト指向となって PHP 5 だ。この機会にちゃんと学んでしまおうという気になった。例によってぼくは PHP 3 さえほとんど覚えちゃいない。