Personal tools
You are here: Home ブログ 井上 AirOne v4.7.2とwshの話
« December 2010 »
Su Mo Tu We Th Fr Sa
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Recent entries
Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23
Herokuの発音 inoue 2010-12-20
雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18
IPA未踏のニュース inoue 2010-12-15
労基法とチキンゲーム inoue 2010-12-06
フロントエンドエンジニア inoue 2010-12-03
ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25
技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24
雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22
RESTの当惑 inoue 2010-11-22
「プログラマのためのUXチートシート」を作りました inoue 2010-11-19
「ビューティフルコード」を読みました inoue 2010-11-16
Categories
カテゴリなし
 
Document Actions

AirOne v4.7.2とwshの話

地味ですが、AirOne v4.7.2をリリースしました。

マルスケとバージョン番号を合わせた関係で、ProjectAはv4.7.1をスキップした形になります。こういう風にバージョンの数字が飛んだのは初めてです。微妙に気持ち悪いですが、気にしないでください。

リリースとは全く関係無いですが、JVNのリストにアリエルの名前が載りました。名誉なのか不名誉なのか微妙なリストです(もちろん、同意した上で載っています)。個人的には良いことだと思っています。

AirOne v4.7.2のリリースノートに次の新機能があります。

  • [サポートツール] LAN内のユーザ発見ツールを追加しました

「サポートツール」と断っているように、普段使うツールではありません。元からあった実行ファイルをwsh(Windows Scripting Host)から呼んで、GUIで見せるようにしただけです。ちなみにwshを「wシェル」と呼んでいます。shがshellの略でないことは知っていますが、どうせ狙って名前をつけたと思っているので、「wシェル」と呼んであげています(最初、本気で間違えていただけ、というのもありますが)。Microsoftへのリスペクトのひとつの形です。

あまり知られていませんが、AirOneでは結構wshを使っています。wshを使うと、JavaScriptでデスクトップアプリが簡単に書けます。欠点は、MS-Windowsでしか動かないことです。ぼくは普段AirOneをGNU/Linuxで使っているので、必須のツールには使えません。なので、wshで書くのは、今回のように(必須ではない)補助ツールが中心になります。

wshの雰囲気をつかむには、次の@ITの記事が役に立ちます。

MSDNの日本語リファレンスは次です。

このふたつのサイトを読めばだいたい事足ります。最近の、覚えることが多くて嫌になる技術に比べて、随分、精神的に楽です。まあできることはファイル操作とプロセス実行ぐらいですが。その程度なら(普通の)シェルとsed(1)の方が良いと考える人が多いかもしれませんが、残念ながら、MS-Windowsにはまだsed(1)がついてきません。

次の2行があることを前提にコード例を示します。

var shell = WScript.CreateObject("WScript.Shell");
var fs = WScript.CreateObject("Scripting.FileSystemObject");

ファイル操作のコード例は次のような感じです。JavaScriptの正規表現で頑張ればsed(1)に近いことができます。

try {
    var oFile = fs.OpenTextFile('ファイルのパス', 1);
    var body = oFile.ReadAll();
    // 文字列bodyを色々
    oFile.Close();
} catch (e) {
    WScript.Echo('not found');
}

プロセス起動は次のようにします。

var execCmd = 'コマンドパス コマンドライン引数';
shell.Run(execCmd);

コマンドパスのファイルパスが空白を含む場合、"(ダブルクォーテーション)で囲む必要があります。コマンドライン引数でファイルパスを渡す場合も同様です。

子プロセスの標準出力を得るには次のようにします。

var proc = shell.Exec(execCmd);
while (!proc.StdOut.AtEndOfStream) {
      var line = proc.StdOut.ReadLine();
      WScript.Echo(line);
}
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/inoue/airone-v4.7.2-and-wsh/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.