Pressing: 打鍵の強さで出力が変わるビジュアルインタプリタ

'10 IDE NUI ACM UIST '09 Student Innovation Contest

概要

我々は、テキストが表す精確な情報に打鍵力というファジィな情報を加えることによって新しいインタラクションを実現できると考え、統合開発環境“Pressing”を開発した。Pressingは、物理シミュレーションによる視覚的フィードバックがあり、打鍵の強さが出力に影響を与えるインタプリタを内蔵した統合開発環境である。

本研究はMicrosoft Applied Science Group打鍵圧を検出できるキーボードのプロトタイプを用いて開発された。UIST 2009 Student Innovation Contestフライヤーを配りながら発表したのが初出である。

Pressing

プログラミング体験

Pressingを起動すると、仮想環境“Hakoniwa”とインタプリタ“Kotosaka”の入力欄が表れる。Kotosakaにスクリプトを入力すると、各文字を打鍵した強さの情報が保持され、スクリプトの実行時にHakoniwaで打鍵力に応じた出力が得られる。スクリプトの入力と実行は対話的に行われ、コンパイルによりプログラムの状態がリセットされることもない。Pressingは、いわゆるライブプログラミング環境である。

例えば new Ball() と打ち込んでEnterキーを押すと、スクリーン上に円が現れる。このとき Ball の打鍵が強ければ大きな円が、弱ければ小さな物体が現れる。

他にもいくつか面白いプリセットクラスが用意されている。例えば、次の2文は円インスタンスを変数 b に代入し、円が通った軌跡が赤いブラシで塗られる。ブラシの幅は Brush がどれだけ強く打鍵されたかによって決まる。

b = new Ball(); b.pen(new Brush(255,0,0));

プログラマは、インスタンス化した円オブジェクトとコードを書くことによってインタラクションできる。

World.setGravity(0, 0.98); b.setSpeed(100);

しかし、単にマウスカーソルでスクリーン上のオブジェクトに触るだけでもインタラクションできる。本環境は2次元物理シミュレーションのエンジンを内蔵しているため、インスタンス化された物体との自然なインタラクションが可能である。

実装

HakoniwaはBox2Dベースの物理シミュレータであり、以下の図に示すようなインタラクションを可能にしている。

Kotosakaは、JavaScriptに影響を受けた簡易言語を解釈する。この言語には、クラス(メソッド、フィールド)、関数、変数といったオブジェクト指向の基本的な概念が備わっている。変数は宣言不要で動的な型付けができ、プリミティブ型(真偽値、数値と文字列)の値、クラスのインスタンスと関数を代入できる。

Pressing スクリーンショット
Demonstration at UIST '09

発表文献