OpenPoolインタビュー vol.2: Jun Kato氏

–「OpenPool連続インタビュー企画」第2弾、お待たせいたしました。この企画は、OpenPoolに携わったメンバーを順番にフィーチャーして、OpenPoolの苦労話や感動秘話、あんな話やこんな話も、赤裸々に語ってもらう企画です。
今回はOpenPoolCoreライブラリを作った中心的エンジニア、加藤さんのインタビューです!加藤さん、よろしくお願いします。

よろしくお願いします。

– 加藤さんの研究について教えて下さい。
私は現在、東京大学大学院情報理工学系研究科コンピュータ科学専攻五十嵐研究室でHCI (Human-Computer Interaction)を専門に、「人と情報機器の関係を良くする」ことを目標に日々研究しています。特に、「だれでも簡単にプログラミングできるようになるにはどうしたらいいか」というテーマに興味があります。
ご存じの通りプログラミングは、成果物であるプログラムを通して人々の生活をより便利で豊かなものにしてくれます。でも実は、プログラミングという行為そのものも(絵を描いたり音楽を演奏するのと同じように)精神的な豊かさを与えてくれる創作行為の一種なんです。その事実に、プログラミング経験の無いほとんどの人は気が付きません。もっと多くの人にプログラミングの楽しさを知ってほしいという願いから、「だれでも気軽にプログラミングできる」世界を実現させたいと思っています。
どんな人でもエフェクトを作れる環境を用意したプロダクトであるOpenPoolも、その活動の一環と言えます。

– 研究では、どのようなものを作ってきたのですか?
まず、Picodeをご紹介します。これは写真をソースコードに貼りこめる特別な統合開発環境で、Processingをベースに改造して作りました。
Picodeは「ソースコードの大衆化」を推進しよう、というビジョンのもと作られました。これはつまり、プログラマでもプログラマでない人でも、ソースコードを一目見ただけで、その意味が分かるようにしよう、という試みです。
具体的には、「写真を撮る」「写真をドラッグ・アンド・ドロップする」という誰にでもできる2ステップだけで、簡単にプログラムの内容を変えることができます。つまり、プログラミング言語の難しい文法などを覚えなくても、プログラミングを体験できるんです。

picode-ide
▲ご覧のとおり、ソースコードの中に写真が貼りこめて、そのままプログラムを動かせる!

本当に誰にでも使ってもらえるか確かめたくて、子どもたちを対象にしたPicodeワークショップを日本科学未来館にて行いました。まず、はじめにKinectの前で特定のキメポーズをとると、レゴ・マインドストームで作ったロボットがポーズに反応して動き、ボールを蹴ってくれるという内容のソースコードを子どもたちに渡しました。次に、オリジナルのキメポーズを考えて写真に撮ったり、レゴで作られたロボットの形と動きを設計してもらいました。一生懸命考えたり、ダイナミックに体を動かして楽しんでいる子どもたちの姿が印象に残っています。また、中には最終的に自分でソースコードを書き換えて遊びだす子もいました。
Picodeを通して、最先端の技術に触れられる機会を広く提供し、より多くの人にプログラミングを好きになってもらえたら嬉しいですね。

– 他にはどのようなものを作っていたのですか?
Microsoft本社の研究所(Microsoft Research Redmond)でインターンをしていた頃に、ユーザがアプリの見た目を簡単に変えられる仕組みを作りました。見た目を変えたい場合、通常ではソースコードの中から見た目を決めている行を探し、書き換え、プログラムをコンパイルし、起動し直して確認する…という長いプロセスを経る必要があるんですが、私の作った仕組みでは、プログラムを起動したまま、見た目だけをインタラクティブに更新していくことができます。これはつい最近、Webブラウザ上で動作するアプリの統合開発環境touchdevelop.comに組み込まれ、誰でも使えるようになりました。
研究のモチベーションはユーザインタフェースというシステムの上っ面部分だけの話でしたが、これを実現する方法を探っていったら、言語仕様というかなり深い部分まで手を加えることになりました。プログラミング言語を専門とする現地の優秀な研究者達との議論や交流もひっくるめて、思い出深いプロジェクトです。
touchd1touchd2
▲TouchDevelopで編集している様子ビフォア・アフター。こちらから是非体験してみてほしい。

あとは、最近だと、Visionsketchというシステムを作っています。アナログ湿度計のように、デジタル化されてない機材が潜在的に持っているデジタルデータをうまいこと情報抽出できる開発環境です。まだ制作段階ですが、例えば植物の成長推移を定点カメラで記録した動画に対し画像処理を繰り返すことで、植物の成長グラフが作れます。

 

– どれもスゴイ。この記事を読んでいるの皆さんのために、リンクを貼っておきます。動画は必見ですね。
加藤さんのWEBサイト: http://junkato.jp/ja/
Picode: http://junkato.jp/ja/picode/
日本科学未来館でのPicodeワークショップの様子: http://blog.miraikan.jst.go.jp/event/2013051726701
TouchDevelop: http://junkato.jp/ja/touchdevelop/
Visionsketch: http://junkato.jp/ja/visionsketch/

 

–OpenPoolではどんなシステムを作ったのですか?
takashyxさん(編注:インタビュー第1段で登場)が作っていた画像処理のコードをOpenCVを使って高速化しました。また、この機能をProcessing用のライブラリとしてパッケージにしました。OpenPoolプロジェクトに後から参加する人が、OpenPoolのソースコードを全部ダウンロードしてコンパイルして…というのでは敷居が高すぎると思ったので。
ちなみに、現在OpenPoolのソースコードは、コアライブラリとブーストライブラリという2つの種類のライブラリに収納されています。コアライブラリが無ければエフェクトが書けません。ブーストライブラリは、追加のハードウェアと対になっていて、これを導入することで、よりゲームの進行とシンクロしたエフェクトが書けるようになります。

– プログラムを作る人とそれを使う人、誰もが使いやすい環境を作りたいという気持ちが、ここでも活かされているのですね。
そうですね。

– その中で工夫した点を教えて下さい。
API(Application Programming Interface)の設計です。OpenPoolのエフェクトを書くだけなら、画像処理とか難しいことを理解する必要はないので、そこを隠蔽して単純なAPIだけを表に出すように設計しました。その際、なるべくProcessingのカルチャーに合わせて、Processing使いが利用しやすいように工夫しました。具体例をあげると、ビリヤード台の上のボールの情報を表す配列balls[]と、その内容を更新するupdateBallsという関数は、Processingの関数であるpixels[]とloadPixelsを参考にして作成しました。
他には、マルチスレッド化も工夫した点の一つです。エフェクトのコードが重くなったときでも、ボールのトラッキングにはなるべく影響が出ないようにしています。

–今後OpenPoolで取り組んでみたいテーマをあげるとしたら、何ですか?
まずは、Picodeと同じように、ProcessingをベースにOpenPool専用の統合開発環境を作って、エフェクトをもっと簡単に開発できるようにしたいですね。
あと、ブラウザで動くOpenPoolを作れたらいいなと思っています。幸い、ProcessingにはProcessing.jsというJavaScript版が存在するので、これを活用できたらと思っています。

–これからどんな人にJoinしてもらい、一緒に活動できたらいいなと思いますか?最後に、メッセージもお願いします!
Effectを描ける・描きたい人にJoinして欲しいですね。エバンジェリスト的な役割を果たせるデザイナさんがいれば、ピッタリだと思います。
OpenPoolはシステムが現実空間のビリヤード台の上で動くので、そこが自然とチームの活動拠点になる、というところが今風で気に入っています。連絡を取るだけなら、インターネットでもできる。でもあえて物理的に集まるきっかけを作り、身の回りの友人を呼んで、すぐに集まり活動できる場所がある。こういう、すぐにフィードバックが得られる環境を求めている人には、特にJoinして欲しいです。
– 加藤さん、ありがとうございました。こんなステキなOpenPoolに、あなたもJoinしませんか?
興味の有る方はこちらまで!