Hatena::Groupmoz-addon

Ci.nsIZIGOROu

2007-11-22呑み足りない

JavaScriptの実行環境と周辺についての雑文

| 04:54 |  JavaScriptの実行環境と周辺についての雑文 - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  JavaScriptの実行環境と周辺についての雑文 - Ci.nsIZIGOROu

何となく最近思ってる事を書きとめてみた。

WSH拡張

WSH現在5.7がlatestだけど、メジャーバージョンはもう上がらないみたい。

今後は細かなセキュリティ上のfixしか行われないようです。*1

なので面白い機能が追加される事は期待しない方がいい。

WSFとCLIアプリ

WSFを使うとCLIアプリが作りやすいんだけども、結局cscriptから叩かないと動かない。これはちょっと不便。

本当ならexe化出来たらいいんだけど、公式ではそういう物は無い。

あと問題なのがcscriptでワンライナーが書けないって事。

Perlで言うところの-eみたいな奴の事。

最もやろうと思えばWSFを使ってそういうワンライナーが書けるwrapperスクリプトは実現可能。

そのうち気が向いたらやる。

ただREPLがあれば済むし、既にそういうコードは書いて良く使ってるので要らないかもw

WSCの可能性

WSCWindows Script Componentの略で平たく言えば、ActiveXオブジェクトを任意のActiveScript(JScript/VBScript)で実装出来るって枠組み。

但し、任意のインターフェースを実装する訳じゃないのが痛い。

それが出来たらBHO*2JScriptでとか出来たのに。激しく残念。

さらに問題なのがActiveXObjectのイベントハンドラを作る枠組みとして、WSHの場合は

WScript.ConnectObject(foo, "foo_");
function foo_OnSomeEvent() {
  // something
}

みたいな感じで書けるんだけども、これがobject要素のevent属性をtrueと言う形でしか実現出来ない。

つまりscriptで宣言したActiveXObjectに対してイベントハンドラを定義する仕組みが無い。

これは泣ける。

ScriptXのEventSinkを使うと出来るんだけど、この機能が不安定っぽぃし野良COMだしなぁ。

とは言え、HTC(HTML Component)と大体同じように拡張機能を提供出来るのは面白いし、実装を外部化出来るので、呼び出しはFactoryパターン、つまりActiveXObject経由で行いつつ、実装は裸のjsファイルを使いまわすなんて事が出来る。

特定のディレクトリ以下にjs, wsc, 必要ならtlbファイルなんかを集めて汎用的に使うライブラリなんてのも出来るっちゃ出来る。これは実はちょっとやってみたい。

WSH関連のまとめ

と言う訳でWSHは一通りやると分かるけど面白い事が出来る事は間違い無いけど、無茶しようとする場合は

  1. ActivePerlとか使ってCPANモジュール使う
  2. VC使って自分でActiveXを作る
  3. WSCを地味に作って遊ぶ
  4. それらの組み込みはWSFでやってwrapper作る。

とかでもやらない限りは規定の枠組みを拡張ってのは出来ない。

既にあるActiveXはそれなりに色んな用途に使えて面白いけど、如何せん情報が少なすぎる気がする。

それとJScript.NETは避けて来てたんだけど、そろそろ試してみようかなぁ。

.NET系のライブラリWSHからもActiveXObject経由で使えるんだけども、まぁJScript.NETもやってみないとよしあし分からないし。

HTAについて

これは今で言うAirとかXUL RunnerとかXAML辺りの先駆けと言って良いテクノロジで、ぶっちゃけhtmlIEで開いただけの物ってイメージ差し支えない。*3

なんでUIHTML+CSSで記述する訳なんだけど、これらのパーツを作るライブラリいまいち無いのが問題。

  1. Google Code Archive - Long-term storage for Google Code Project Hosting.

こういうのもあるけど、人並みなGUIを作るほど揃ってる訳じゃなかった。

これこそHTC作って共有すべきなんだろうなぁ。HTCでXULで定義されてる要素を実装とかキチガイじみた事でもしたら、ある意味神だww

かと言っていわゆるAjaxとかって言う総称で呼ばれてるリッチUIライブラリとか全然使う気になれない。

HTAはそんな訳でほとんどやってない。本当はちょっとやりたいんだけども。

XAMLのがいいんじゃないかなぁ、まだやってないけども。

あといわゆるVBとかのUIを構成するコンポーネントを配置すればいいのかもしれないけど、これこそobject要素でコンポーネントを埋め込んで、id属性名で取得して自前で設定していくなんて苦行以外の何者でもないだろう。しかも何がどれだかさっぱり分からんしwww

あとobject要素でUI構成が隠蔽されてたら、マークアップしてる意味がねぇ。。。

そもそも論だけどHTMLは語彙も少ないし、GUIを記述する為の物では本来無いので、その語彙の中でGUIを作るって土台無茶がある。

XUL Runnerとか、Mozilla系の事

とにかくXULは今練習中なんだけど、XUL Runnerで動くアプリケーションは可能性を感じる。

  1. XUL
  2. XBL
  3. XPCOM(PyXPCOMも含め)

辺りを組合すとUIに大して相当突っ込んだ機能を盛り込む事が可能。

今はXBLやってるんだけど*4、HTC/Behaviorと非常に似てる。と言うかほとんど同じ。

Mozilla系は思うところはたくさんあるんだけど、Firefox拡張は便利になるのは分かるけど入れすぎると重たくなるんで、結果たくさん入れづらいと言う弱点がある限りは、それだけじゃなーって感じがする。

ま、必要な物(国際化、マルチプラットフォームなどなど)は全て揃ってるので他のデスクトップアプリケーション系の物より可能性はあると僕は思ってる。

XPCOM

C++が書けるようになりたい。*5

kuたんが作ってくれたWiiRemoconもそうだけどC++使えばOSに近い部分のglueコード書きさえすればブラウザXUL Runnerアプリの可能性をより高められるし。

全てはそこからだ。

Mozilla系で物凄い不満な点

拡張用に再利用可能なライブラリってのでまともなものが無いんだよね。

  1. 404 Not Found

まだ試してないけど拡張ってXPCOMだけを実装して配布とか恐らく出来ると思うんだけど、こういう流れは無いよね。

あとinstall.rdfにrequires要素ってのがあって、依存性のある他の拡張を指定する記法があるんだけど、これもどこまでそういった用途に使えるか分からない。

JSって何かすると基本的にGlobal領域を汚染しやすいのがネックで、namespaceも自前で解決しなきゃなんで、XPCOMのような枠組みは有効なのかなとは思ってるんだけど、その辺りを整備してホスィなぁ。

この辺り日本Mozilla Hacker達がどう思ってるとか是非に聞いてみたい。

AppleScriptとかOSXとか

事情は余りよく知らないしCarbonがどうとかって話はほとんど知らないけど、どういう訳かSafariAppleScriptからdo JavaScriptって命令でJSコードを流す事が出来るみたい。

これ使うと相当面白い事出来そう。

ただAppleScriptシンタックス覚えるのがうんざり

AppleScriptでやってる事そのものがJavaScriptで書けたらいいのになー。そういう事出来ないのかなぁ。

*1:牟田口さんのサイトで見た希ガスソースと思しきページは今現在開けない

*2:Browser Helper Object : IE拡張形式

*3:起動するexeが異なるのと、セキュリティIEより低い設定

*4:そのうちブログに書く

*5:今、勉強

mal_bluemal_blue2007/11/24 00:39> JSって何かすると基本的にGlobal領域を汚染しやすいのがネックで、namespaceも自前で解決しなきゃなんで、XPCOMのような枠組みは有効なのかなとは思ってるんだけど、その辺りを整備してホスィなぁ。

これだけなら、http://developer.mozilla.org/en/docs/Components.utils.import
が有用じゃないでしょうか。Fx3 からになりますが。
http://mxr.mozilla.org/mozilla/source/js/src/xpconnect/loader/XPCOMUtils.jsm
サンプルと言うか、内部で使われてますが
http://mxr.mozilla.org/mozilla/source/js/src/xpconnect/loader/JSON.jsm
http://mxr.mozilla.org/mozilla/source/js/src/xpconnect/loader/ISO8601DateUtils.jsm
本当の解決は Mozilla 2+JS2 以降になるんでしょうが…

ZIGOROuZIGOROu2007/11/26 00:51なるほど。SubScriptLoaderの改良版みたいなのですかね。> import
どっちかって言えばライブラリの共通化みたいな事が行われるといいなーと思う訳です。

mal_bluemal_blue2007/11/26 21:54> どっちかって言えばライブラリの共通化みたいな事が行われるといいなーと思う訳です。
拡張に便利なライブラリとか、上とか今ひとつ言いたい事がわからんですが、
http://developer.mozilla.org/en/docs/FUEL
をもうすこし出来ることを多くしたいというような感じでしょうか。
もっともこの辺の動きは、
http://developer.mozilla.org/en/docs/nsIScriptableIO
こういうのもあったりして、あんまり統一性がないまま各個人がすすめてるんで、なかなかねぇ…昔よりはだいぶましにはなってきてるんですが。

ZIGOROuZIGOROu2007/11/27 22:55FUELが一番近いんですかね。
端的に言っちゃえばMozilla内だけでもいいからCPANみたいなのがあるといいなと言えば分かりますかねw

nsIScriptableIOは初耳でした。

MurielMuriel2012/09/28 07:43Please keep thriowng these posts up they help tons.

glkkwwzkznglkkwwzkzn2012/09/29 04:0345onaB <a href="http://plnnczvvzfqj.com/">plnnczvvzfqj</a>

fmwkdwspbwfmwkdwspbw2012/09/29 10:24hQcwjW , [url=http://uhwflzciguip.com/]uhwflzciguip[/url], [link=http://zsbzepmcrpid.com/]zsbzepmcrpid[/link], http://jrsvsfyisdsz.com/

nmsevqpikmnmsevqpikm2012/09/30 10:26ZG9lHr <a href="http://ajoxairefuyd.com/">ajoxairefuyd</a>

qzimapmqzimapm2012/09/30 22:22D1xr6x , [url=http://mnjqbrmpaeaq.com/]mnjqbrmpaeaq[/url], [link=http://jvatczbkvfzc.com/]jvatczbkvfzc[/link], http://rpoikendzkdf.com/