Picode
ソースコードに写真を貼り込める統合開発環境

2011-2013
CHI '13
ACM CHI '13 Honorable Mention Award
関連キーワード: PwE, Communication, IDE, Robot
PicodeはMicrosoft Research CORE 7 プログラムの支援を受けて始まり、Phybotsを利用して開発され、現在はGitHubでソースコードが公開されているオープンソースプロジェクトです。

概要

プログラムのソースコードは、大抵の場合、文字や記号表現を用いて記述するものである。このような表現は、論理的な処理の精確な記述に適している一方で、画像や多関節ロボットの姿勢情報など、具体的なデータセットを分かりやすく見せることができない。この問題は、実世界の人やロボットの姿勢情報を扱うプログラミングで顕著である。

そこで我々は、人やロボットの姿勢データを写真と紐づけ、ソースコード中に写真を貼り込める統合開発環境Picode (旧名Roboko)を試作した。まず、写真と紐づけられた姿勢データを第一級オブジェクトとして扱う拡張を既存の文字言語に施した。次に、姿勢データを引数に取るAPIライブラリを提供した。そして、エディタに写真を貼り付けられるような開発環境を実装した。

発表内容

CHI 2013 Fast-forward

CHI 2013 発表スライド

日本語の発表スライドは発表文献で日本語文献の をクリックすると閲覧できます。

Picode IDE

本研究では、姿勢情報を用いるプログラミングのワークフローを支援するため、写真を貼りこめるよう拡張したエディタを含む文字ベースの統合開発環境(IDE)に、姿勢情報と写真の記録および紐づけを自然に行える例示インタフェースと、記録した写真を閲覧できる"Pose library"を追加した。このIDEを用いたプログラミングは、人やロボットの姿勢情報を写真とともにキャプチャする例示から始まる。そして、写真をエディタにドラッグ&ドロップしたり文字を入力したりすることでソースコードを書き上げ、プログラムを実行する。ソースコードはキャプチャした写真と姿勢情報のデータセットと共に再配布できる。

例えば、Picodeを用いると以下のようなプログラムを書ける。サポートされている主なAPIについては後述する。(Javadoc)

鉄琴演奏ロボ
かえるの歌を演奏する。
挙手でスライド送り
右手を挙げるとスライドを次に送り、左手を挙げると一つ前に戻す。
旗揚げゲーム
画面に出てくるキャラクターと同じほうの手を素早く挙げると高得点。
Overview
Picode IDEの概観
Pose Robot.getPose()
現在の姿勢を返す
float Pose.distance(Pose pose)
二つの姿勢間の差異を返す [0.0-1.0]
boolean Pose.eq(Pose pose, float threshold)
二つの姿勢が同じとみなせるかどうか返す (二つの姿勢間の差異がthresholdより小さいかどうか返す)
boolean Robot.setPose(Pose pose)
ロボットの姿勢を指定する
Action Robot.action()
ロボットの姿勢の推移を表すActionオブジェクトを返す
Action Action.pose(Pose pose)
このActionの最後に指定した姿勢への推移を追加する
Action Action.stay(int ms)
このActionの最後に指定した時間のまま静止するようにする
ActionResult Action.play()
Actionを再生する

未来ビジョン

"Programmers are people, too." という言葉がある。この、プログラマだって人である、という言葉には、プログラマがいかに分かりづらい言語を理解し、使いづらい開発環境と格闘してきたか、プログラマと一般人の溝がいかに深いか、という現状認識が現れているように思われる。

しかし私は、プログラマと一般人の溝が近年急速に埋まりつつあるように感じている。まず、開発環境を整えるのが簡単になった。以前なら必要なファイルを揃えてパスを通して、と大変な手間だったものが、今はブラウザを開くだけでよい。プログラミングの学習もKahn Academyなどでインタラクティブに進められる。また、プログラミングできる対象が身近になってきた。LEGO Mindstorms NXTのように実世界で動くものはもちろん、例えばスマートフォン上でスマートフォン用のプログラムを書いたり(TouchDevelop)、Webサービス同士をif-thenルールで連携させたり(IFTTT)できる。家電製品がネットワークに繋がるようになってきたから、これらを遠隔制御する実用的なプログラムも簡単に書けるようになるだろう。

また、プログラミング言語の研究者コミュニティでは、言語だけでなく開発環境まで含めたプログラマの体験を重視する研究が増えてきている。我々のコミュニティで道具としてのUIから体験としてのHCIに研究の主流がシフトしたように、言語、ライブラリ、開発環境を個々に評価するのではなく、全体のワークフローを重視する流れが生まれている。

我々は、このような追い風を受けながら "People are programmers." の世界を実現していきたいと考えている。

発表文献

引用するならコレ!2013CHI '13

Picode: Inline Photos Representing Posture Data in Source Code

Jun Kato, Daisuke Sakamoto, Takeo Igarashi
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, pp.3097-3100
ACM CHI '13 Honorable Mention Award
クリップボードにコピー

Roboko: ソースコードに写真を貼り込める統合開発環境

2012WISS '12
加藤 淳, 坂本 大介, 五十嵐 健夫
第20回インタラクティブシステムとソフトウェアに関するワークショップ, pp.115-120