xsiスクリプトでXDをさらに活用

XDを使っていて、「この操作を自動化したいな。」とか「繰り返しだけどちょっとパラメータを変えたい」なんて考えたことはありませんか?
例えば3秒待ってから次の静止画を表示したいとか、何かのアクションを待ってからXDの制御をしたいといったケースです。

もし簡単なプログラミングでこれらを実現できたら素敵ですね。これを実現するために設計されたのがxsi スクリプト機能です。
xsi スクリプトはJavaScript ベースの記述を行うことができます。これによりfor やif, switch など多彩な制御が実現できます。また変数を定義することもできます。

例1:3秒毎に1フレームずつ静止画を表示する

/*
* フレーム番号0を表示する
*/
XD.execute("PLAY -v 1 -s 0 0");
UTIL.sleep(3 * 1000);

/*
* フレーム番号1を表示する
*/
XD.execute("PLAY -v 1 -s 0 1");
UTIL.sleep(3 * 1000);

/*
* フレーム番号2を表示する
*/
XD.execute("PLAY -v 1 -s 0 2");
UTIL.sleep(3 * 1000);

「XD.execute(“コマンド”);」と記述すると「コマンド」がXD に送信され直ちに実行されます。「UTIL.sleep(待ち時間);」と記述すると「待ち時間」をミリ秒で指定することができます。

うーん。重複する記述がありますね。
forループを使って書き替えてみましょう。変数はvar宣言によって定義することができます。

例2:3秒毎に1フレームずつ静止画を表示する

for (vari = 0; i < 3; i++) {
/*
*フレーム番号iを表示する
*/
XD.execute("PLAY -v  1 -s 0" + i);
UTIL.sleep(3 * 1000);
}

確かに少し便利です。でも少しですね。
いえいえ。ここからがxsiの本領発揮です。

実はxsiスクリプト…Java言語のライブラリを使うことができるんです。「え?JavaScript(*1)とJava(*2)って同じじゃないの?」と思われた方、名前がややこしいのでそう思いがちですが、このふたつは別物なんです。

例えば、Javascriptではファイル操作などはできません。でも、xsiスクリプトはJava言語のライブラリを使ってファイル操作することも可能です。

例3:10ビット深度のランプ画像を生成する

KAP-10059 ()には実用的なランプ画像生成xsiスクリプトについて記載されています。

PPM(ASCII形式)でランプ画像生成(例1)

PPM(ASCII形式)でランプ画像生成(例2)

だんだん便利になってきました。こうなると色々やりたくなってきますね。
強力な画像処理機能を有するJava言語。これを活用しない手はないでしょう。

例4:サンプルxsiスクリプト実行例

KAP-10061 ()にはXDGUIをインストールしたときに収められているサンプルxsiスクリプトの実行例が提示されています。

階調テストパターン

チャートパターン

定型的な例としては、VESAで規定されたFPDM(Flat Panel Display Measurement)

まだまだあります。
ランダムボックスが移動する動画パターン

そして回転映像生成

もちろんスクロールも。

プレゼンテーションを作ったり

連続数値を描画するなど…

アイデア次第でどんどん広がるxsiスクリプトワールド。しかもこれらの応用例はXDGUIインストール時にサンプルディレクトリにソースファイルが格納されています。
お客様の用途に合わせてこれらのスクリプトを改変してお使い頂けます。

例えばお客様の現場で定型化されたテストやシーケンス、画像コンテンツなどをxsiスクリプトで構成しておけば、何度でもパラメータを変えて実現することができるのです。
また、XD制御とファイルなどの操作を時透過できますので、画像の結果検証(コンペア)等を自動化することもできます。

従来のパターンジェネレーターやレコーダーでは成しえなかったこの機能を、ぜひ皆様にご活用頂き、XDの新たな側面を体験して頂きたいと思います。

xsiスクリプトのポイントを整理しましょう。

  • JavaScriptベースの簡単な記述
  • XDの制御が可能
  • 変数が使える
  • 条件分岐が使える
  • 関数が定義できる
  • Java言語のライブラリも使用できる
  • サンプルxsiスクリプト標準添付

xsi は活用次第でまだまだ十分な可能性を秘めた機能です。
XD はネットワーク経由でデータ領域を見ることができますし、xsi スクリプトでXD の制御も可能。これらの特徴を生かすことで組み合わせによる相乗効果は2 倍、3 倍。弊社の開発チームも感服させられてしまう驚きの活用がまだまだあることでしょう。
何もないところからxsi スクリプトを記述するのは意外に時間がかかります。そこで活用のヒントになればと様々なサンプルxsi スクリプトを標準で提供しています。

現場で作業効率向上にXD が一役立てば幸いです。

(*1) JavaScript
ネットスケープコミュニケーションズ社で開発された主にブラウザ上で動作させることを前提としたスクリプト言語。変数は動的な型付け扱い、変数に関数を代入できるなどの特徴を持つ。開発当初はLiveScript と呼ばれていた。

(*2) Java
サンマイクロシステムズ社で開発された言語。1度書いたらどこでも動くをコンセプトに中間コードをJava 仮想端末上で実行する形態をとった言語。変数は静的な型付け扱い。