なでしこでJavascriptを動かす。伊藤清徳の垂直落下式ムーンサルトプレス伊藤清徳の垂直落下式ムーンサルトプレスPerlとかPHPとかMySQLとか...がんばっても8割だ。ME利用規約なでしこでJavascriptを動かす。便利度がアップしました。Luaがなでしこで使えるようになったおかげで、なでしこで、windowsのCOMライブラリが使えるようになりました。前々から、なでしこでCOMつかえたらなぁと思ってたんですが、それは、ほとんどのWindowsに搭載されている「scriptControl」という機能を使いたかったためです。自前のアプリケーションにスクリプトエンジンを組み込むことができるのです。何の意味があるかというと、なでしこで作ったアプリケーションに、VBSやJSを利用するユーザースクリプトのような機能を実現できるというわけですね。作りこみは必要で、組込みにはそれ相応の知識が必要です。多くの人に使ってもらおうと思うと、JScriptのほうがよく知られた言語ですから、JScriptでユーザースクリプトを実現したいわけです。(たしか、JScriptは、javascript1.5と互換だったと記憶しています)で、さらに突っ込むならば、なでしこの中にLuaを書いて、Luaの中にJSを書かなければならないので、いたってめんどくさい(^-^;余談。簡単になでしこJSが使えるんでしょうけどね・・・。ひまなときにでもつくろうかな。簡単なコードでやってみましょう。以下なでしこのコードです。js:test(test)』をLUAする。LUA値(「val」)という。『』の中はなでしこに内包されたLua言語です。1行目は、LuaでCOMを扱うためのライブラリをロードします。2行目で、ScriptControlオブジェクトを作成、scに代入します。3行目で、使用する言語の名前を指定します。標準状態なら「VBScript」か「JScript」を選択します。適切な言語環境がインストールされているなら「PerlScript」なんかも使えますが、汎用的なアプリケーションを作るなら「VBScript」か「JScript」のほうがいいでしょう。4行目で、3行目に指定した言語にユーザー定義のソースを加えます。例示では、「test」というユーザー定義関数を作っています。この「test」関数では、引数に与えられた値に1を足して返すというだけの関数です。5行目では、スクリプトエンジンそのものを、Luaの変数「js」に代入しています。これにより、変数「js」はJScriptの関数をまるでLuaの関数であるかのように利用できるようになるのです。※1後述7行目で、自作の「test」関数を実行し「val」へ代入しています。以上をなでしこで「LUAする」します。Luaの中の変数「val」にはtest関数を実行した内容が保持されるはずですので、この値をなでしこで取得して利用するわけですね。上記の例では単純に表示だけしていて、「3」と表示されるはずです。※1ユーザー定義関数だけじゃなくて、JSで搭載されている関数なんかもそのまま利用できます。js:escape('!"#$%&()*+,-./')↑このようにすると、JS標準の「escape」関数をそのまま利用して結果を「val」に代入するなんてことができちゃうわけです。【追記】あら、http://nadesi.com/man/page/LUA%E3%81%99%E3%82%8B↑こちらによると「nako_set」という命令を使うと、なでしこの変数にLuaから直接代入できるのね。postFilemakerからVBSを実行するプラグインを作りました。伊藤清徳の垂直落下式ムーンサルトプレス。