9/20/2015 IDE 第48回 情報科学若手の会 若手特別講演
プログラマは一番長くコンピュータと付き合ってきた人たちだ。だから、プログラマはコンピュータを使った創作活動の未来について知っている。プログラミングの方法論を他のコンテンツ制作に応用できれば、より自由で協力的な世界がやってくるだろう。 一方で、プログラマは過去を引きずっているとも言える。プログラミングを今より分かりやすくできれば、さらに多くの人が使える道具になるだろう。 本講演では、プログラミングのメリットをみんなが享受できる世界に向けた試みについて、過去・未来2つの観点から論じる。
まず、プログラミングのための環境(統合開発環境)の歴史を簡単に振り返ってみます。
プログラミング行為がコンピュータの中で閉じてインタラクティブにできるようになったのが1960年代のことです。それ以来50年が経ちましたが、インタフェースの大部分が文字列ベースという点は変わっていません。
統合開発環境が文字ベースのインタフェース主体のままである一方、開発されるアプリケーションの種類はだいぶ変わって、増えてきました。
最近だと、実世界のデータを利用するプログラムが増えてきています。カメラからの入力を受け取ったり、ロボットに出力を返したりするものです。
こういうプログラムを開発するとき、従来のGraphical User Interface(GUI)を利用するプログラムと違うのは、実行環境がコンピュータの外にあるということです。
GUIのプログラムではマウス入力やキーボード入力は断続的で、値もだいたい定数で表せるので、文字ベースのインタフェースでも情報の提示が容易にできます。一方、実世界のデータはもっと連続的で、値は時系列に変化します。ブレークポイントでプログラムを止めたりすると、データの流れが途切れます。このように、文字ベースのインタフェースをそのまま使っていては、デバッグが非常に難しいという問題があります。
実世界データを伴うプログラム開発の難しさを解決するためには、いろいろな方法が考えられます。なかでも、僕が提案してきた画像表現を統合する3つの方法(Integrated Graphical Representations, 博士論文の内容)を簡単に紹介します。
※博士論文の内容に興味を持ってくださった方には、まず日本語で書かれた2013年度 研究会推薦博士論文をお薦めしています。ライブプログラミング(Live Programming)の観点で博論をまとめ直した文章は、実世界Live Programmingの実現に向けてにまとまっています。次に、博士論文を構成する3プロジェクトの個別の紹介ページでデモ動画をご覧ください。論文そのものも、東京大学学術機関リポジトリ: Integrated Graphical Representations for Development of Programs with Real-world Input and Output(邦題: 実世界入出力を伴うプログラムの画像表現を用いた開発支援手法)で閲覧できます。
一つ目が、名前のつけられない情報を文字列の代わりに写真で表すというものです。
統合開発環境Picodeでは、人やロボットの姿勢情報を表すのに写真を使います。写真をソースコードの中にドラッグ&ドロップできて、それをそのままコンパイル&実行できます。
※詳細はPicodeの紹介ページを見てみてください。写真入りのサンプルコードも掲載されています。
二つ目が、プログラムが実行された時系列の内容を動画で表すというものです。
統合開発環境DejaVuは、プログラムが実行されているときカメラから受け取った入力、ユーザが指定した変数の内容、ウィンドウへの出力をすべて録画します。(これはMicrosoft Researchインターン時の成果です。)
録画内容は、好きな速度で再生することができます。また、プログラムの内容を変えて録画入力を流し込むことで、一度カメラの前で行った動作をテストケースとして何度も活用できます。
※詳細はDejaVuの紹介ページを見てみてください。
三つめは、プログラムを書く前に入力データを用意して、その具体例をグラフィカルに操作することでプログラムを書いていくというものです。
統合開発環境VisionSketchは、動画に対して画像処理を行うプログラムを開発するためのビジュアルプログラミング環境です。
ユーザは、まず動画ファイルやカメラ入力などの入力ソースを選択します。そして、入力ソースの動画像に対して矩形や円を描いてアノテーションを行い、画像処理のメソッドをその範囲に対して適用できるものに絞り込むことができます。
※詳細はVisionSketchの紹介ページを見てみてください。
これまで見てきたように、最近のプログラムはさまざまな種類のデータを取り扱う必要があります。そのようなプログラムを開発するためには、ロジックだけを文字で開発するような統合開発環境では不十分です。
具体例として、視覚的な情報を扱うプログラムを主に紹介してきましたが、データが重要なプログラムとしては、最近流行りの機械学習などもあります。
データがないと意味がないということで、プログラムよりもデータのほうが大事な時代に差し掛かってきているとも考えられます。
「開発」には、プログラム開発だけでなくデータの「制作」も必須となり、プログラム開発のプロセスの中でその間の境界が消失する時代がくると思います。そんな時代の開発環境では、プログラムを開発する機能と同等、あるいはそれ以上に、データを編集、制作できる機能が重要視されるでしょう。
これからの開発環境は、プログラムで利用されるデータを直感的に扱えるようなインタフェースが必要になります。その際は、データを制作・編集できるツールの知見を活かせるはずです。(例えば写真を使うなら写真編集ツール、動画を使うなら動画編集ツールのインタフェースを援用できるでしょう。)
また、今日の講演では触れませんが、視覚以外の、五感をフルに活用することも必要となってくるはずです。例えば、触覚フィードバックを伴うプログラムを開発するときには、文字では触覚は正確に表せないし、視覚でも不十分でしょう。
こうして考えてみると、音楽や動画といったメディアコンテンツを特別扱いやすくした統合開発環境が、近々ウェブ上に現れるのではないか、という予想が立ちます。
お気づきの方もいらっしゃるかと思いますが、そんな統合デザイン環境を実際に作ってみました、というのがこれからお話しする「みんなのプログラミング」です。