IPA


開発成果一覧へ





2004年度第2回未踏ソフトウェア創造事業  採択案件評価書


 



1.担当PM

 

 原田 康徳  (NTT コミュニケーション科学基礎研究所 主任研究員)



2.採択者氏名


 代表者

 古堅 真彦 (岐阜県立国際情報科学芸術アカデミー マルチメディア・スタジオ科 助教授)

共同開発者

 なし



3.プロジェクト管理組織


 財団法人国際メディア研究財団



4.委託金支払額

 

 1,700,000円



5.テーマ名

 

 物理法則を利用した動的形態のプログラミング言語の開発



6.関連Webサイト


 http://www.motionExpress.net/mel/



7.テーマ概要


 本プロジェクトでは,コンピュータ画面上のオブジェクトの動きを,主に物理法則(ニュートン力学)によって制御する専用のプログラミング言語の仕様策定とその実行環境の試作を行った.
 本プロジェクトによる成果はウェブデザイナーやコンピュータを駆使するアーティストなどのいわゆるコンテンツクリエイターと呼ばれる人たちによって活用されることを目的とする.



8.採択理由

 

 本提案が取り組もうとしている課題(時間をうまく扱うプログラム言語の開発)は,これからの時代に非常に重要である一方,短期間で達成できるほど易しいものでもない.
 提案者はこれまでの活動を評価し,提案者独自の視点がこの難しい問題に風穴を開けてくれるであろうことを期待して,採択した.



9.開発目標


 昨今のコンピュータの普及率や処理能力の向上により,コンピュータがモノ作りのツールとしてではなく,メディアそのものとして活用されるシーンが増えてきている.単なるパソコン上のウェブページ画面だけではなく,携帯電話やPDAなど,その領域は拡大化,複雑化している.そうした中,そのコンテンツの表現手法に「動き」を多用する場面が増えてきている.コンピュータの特徴を考えるとこのような状況は当然であり,この傾向はさらに増加するだろう.そういった際にこの「動き」という要素に注目してこれを操る具体的な仕組みが必要になってくる.
 現在のそれは複数の静止画を連続させることによって動きを見せる,いわゆるパラパラアニメーションの方式が主流である.
 この方式の長所としては
 ・制作者が確実に動きを作り上げることができる
 ・緻密な動きをつくることができる
 ・目で確認しながら動きを制作できる
などが挙げられる.
 反面,短所としては
 ・閲覧者の介入が困難(インタラクティブ性に乏しい)
 ・作り上げた後の変更が困難
 ・言語での制御が困難(専用のプログラミング言語がない)
などが挙げられる.現在ウェブページを代表的にコンピュータ画面のメディアとして扱う動くコンテンツの制作環境はパラパラアニメーション方式を採用したものがほとんどである.
 そこで,これらの状況を踏まえて,本プロジェクトでは
 ・パラパラアニメーション方式等の従来の方式にしばられない
 ・物理法則を知らなくても物理的な動きを表現できる
といった,コンピュータ独自の画面上の動きを制御するプログラミング言語とその実行環境を試作することを目的とする.



10.進捗概要


1 開発成果

 本プロジェクトでは以下の4点を行った.
  ・言語仕様調査
  ・言語仕様開発
  ・プロトタイプソフトウェア開発
  ・言語仕様書作成
 9.にも記述したように,現在,静止画を作成するためのプログラミング言語は多く存在するが,動き,すなわち時間軸を考慮したプログラミング言語はほとんど存在しない.本プロジェクトはまず,プログラミング言語の現状調査とそこから「動き」との関連性の調査,そしてそれを基に,時間軸をロジカルにとらえ,そこに,動きを表現する機構を言語体系(仕様)として開発し[Motion Express Language],それを実際に実行,閲覧できるプロトタイプを試作した[Motione Express Viewer].また,これら2点と言語を編集する機能を併せ持った開発閲覧統合プロトタイプソフトウェア[mel software]を試作し,言語仕様の検証を行い,最終的に言語仕様書を作成した.

 

2 開発全体像


 本プロジェクトを要約するならば「モノ作り指向の,画面上の動きを制御するプログラミング言語とその実行環境の開発」ということができる.数学や物理,また技術的スキルとしてのプログラミング言語を未理解なクリエイターが論理的な(アルゴリズミックな)感性を駆使して画面上に親近感のある動きをプログラミングの手法を駆使して構築できるシステムの開発のプロジェクトである.
 本プロジェクトのベースになる研究開発は数年前より開発者が行っている.本プロジェクトではその一部を実現させる.本プロジェクトを含めた研究開発全体は図1のようになる.

(図1)

 

 (a)ベースアルゴリズム
 コンピュータ上で動きを実現する理論である.これは物理法則(ニュートン力学)をベースにした動きであり,人間が親近感を感じる動きを作ることができる.また,本研究開発独自の理論により,プログラマーやユーザーは逐次,動きを入力することができるのでインタラクティブ性にも富んだ動きも比較的容易に作成できる.

 (b) Motion Express Engine [MEE]
 (a)の理論を基にした実動するソフトウェアライブラリである.複数のプログラム群からなるこのライブラリをMotion Express Engine(MEE)と名付けた.現在はJavaとCとActionScriptバージョンが存在する.MEEはクリエイターが数学的知識を駆使せずに物理的な動きを実現させるため,関数やメソッドの活用に際して数学的な知識を使用しないように工夫している.つまりMEEの使用者はいわゆるsin,cosなどの算術関数やニュートン力学の方程式を使わずに,「押す」や「引っ張る」といった日常的な動きの制御言語(関数)で物理的な動きを操ることが可能になっている.

 (c)Motion Express Contents[MEC]
 JavaやCなどのコーディングによって(b)MEEを直接活用して制作されたコンテンツ群である.

 (d)Motion Express Application[MEA]
 (b)MEEにグラフィカルユーザーインターフェイスを施し,プログラミングという手法以外でも(b)MEEを活用できるようにしたものである.このMEAは,実際には(d1)オーサリングアプリケーションと(d2)描画アプリケーション部分に分かれる.
 (d1)は(b)MEEの機能にウェブなどの特徴を組み込み,そこにGUIを施して設定ファイルを書き出す仕組みのアプリケーションソフトウェアである.(d2)はその設定ファイルを読み込み,画面上に設定通りの動きを表現するソフトウェアである.


 (e)Motion Express Language[MEL]
 (b)MEEは既存のJavaやCなどのプログラミング言語に則ったものであり,(b)MEEを活用するにはそれらのプログラミング言語を習得しなくてはならない.そこで,独自の言語仕様を構築し,その上に実行環境を作ることで汎用的なプログラミング言語を習得せずにまた,(b)MEEに特化させることでその特徴を最大限に引き出すことができる環境を構築する.ちょうど静止画のグラフィックスの世界に例えるなら (e)がPostScript言語,次述の(f)がPostScript描画エンジン, (g)がイラストレータアプリケーションにあたる.

 (f)Motion Express Viewer[MEV]
 (e)MELの言語仕様に1対1対応で実動する,動きの描画アプリケーションである.(e)MELのプログラミング言語の実行エンジンといえる.実際にはそれぞれのメディアに対するエンジンが存在することになる.つまり(e)MELの言語仕様に則って書かれたソースコードを解釈して描画する.例えばjavaのクラスファイルやCのライブラリなどがそれにあたる.

 (g)Motion Express Language Application[MELA]
 (e)MELの言語仕様に基本的に1対1対応でグラフィカルユーザーインターフェイスを施したものである.結果的には(g)MELAを利用して(e)MELのテキストファイルを書き出し,(f)MEVの実行エンジンで画面上の動きを再生するという構造になる.

 

3 本プロジェクト

 このうち今回のプロジェクトで試作開発を行ったのは(e)MELと(f)MEVと(e)と(f)を統合的に扱うソフトウェア(mel software)である.
 (e)MELは端的にいうならば「動きに特化したプログラミング言語仕様」である.従来のプログラミング言語は一般的にif文やwhile文などの制御構造や画面描画ルーチンは存在したが,動き,すなわち時間軸を考慮した構造や仕様が前面に押し出されたものは非常に少ない.(e)MELは時間軸を考慮し,また,複雑な数式を記述せずとも単に「押す」や「引っ張る」といった記述で物理的な動きを生成できる言語仕様である.
 (f)MEVは(e)MELの言語仕様に則って記述されたソースコードを実際に解釈し画面上に動きとして描画するソフトウェアである.本プロジェクトではJavaバージョンを完成させた.
 また(e)は言語仕様であり,(f)は(e)の仕様によって記述されたソースコード(テキストファイル)を実行,閲覧するための環境である.この開発をスムーズに行うようにするため,[ソースコード編集]→[コンパイル]→[閲覧]を統合的に行うソフトウェア(mel software)を試作した.



11.成果


 本プロジェクトで行った
 ・言語仕様調査
 ・言語仕様開発
 ・プロトタイプソフトウェア開発
 ・言語仕様書作成
についてそれぞれの内容を記述する.

 

1 言語仕様調査

 本プロジェクトでは,ソースコードを一旦,javaなどの既存のプラットフォームのソースコードに変換し,既存のコンパイラで実行コードを作成する方法を採る.

 動きを扱う言語仕様
  本プロジェクトに先駆けた開発であるMEA上などでは逆ポーランド法を採っていたが,これは現状の他の言語と互換性を保つことが困難であり,技術面,汎用面双方において現実的ではないことが判り,本プロジェクトでは新たに独自の言語仕様を作成することにした.

 ソースコード内の時間軸と実行時の時間軸との関連性
  一般的にプログラミングのソースコードはテキストファイルであるため,実行する際には基本的に1行目から順に実行する.つまりソースコードの内部に「時間軸」が存在する.本プロジェクトは時間軸を管理する実行環境を作ることが目的である.つまり,実行時にも「時間軸」が存在する.この2つの時間軸の関連をどのように処理するべきかを調査した.結果としては実行時の時間軸を主眼に置き,ソースコード内の時間軸はとりあえず,固定定数(つまり数値記入)という形式にし,将来的に必要になれば,ソースコードを書き出すソフトウェアを開発するということにした.

2 言語仕様開発

 言語仕様は3でも記述したようにMotion Express Language [MEL]と名付けた.ここではその仕様内容について記述する.MEL内の記述は大きく分けて
 ・タイミング
 ・base
 ・point
という3つのカテゴリーに分けられる.

 タイミング
  「タイミング」は時間軸を管理する構文である.あらかじめ決められた構文にそって描画や画面内のオブジェクトを動かす時間を決める.あらかじめ内部に語彙が用意されていて,その語彙に引数を指定することで,タイミングを決定する.
 語彙には以下の14個が用意されている.


    

例えば,以下のように記述すると

 

   


それぞれの語彙と引数については付録参照のこと.


  base
  baseは各タイミング内での作業を管理する構文である.描画領域の属性とオブジェクトの描画がその主な機能になる.内容はプロパティとメソッドから成っている.プロパティは

 

 



から成っている.メソッドはそれぞれ引数を持っておりそれぞれの属性に応じた描画が可能である.それぞれの引数の詳細については付録参照のこと.

 point
  MELでは動きを点で制御し,その点を基準とした描画で動きを表現するという形態になっている.その点をクラス化したものがpointである.
 内容はプロパティとメソッドから成っている.プロパティは


 

 

から成っており,メソッドは

 

 

 

から成っている.メソッドはそれぞれ引数を持っておりそれぞれの属性に応じた描画が可能である.それぞれの引数の詳細については他の資料を参照のこと.


3 プロトタイプソフトウェア開発

 言語仕様を検証するために試作したプロトタイプソフトウェアは大きく分けて
  ・プログラミング実行,閲覧環境(Motion Express Viewer [MEV])
  ・テキスト編集,デバッグ,実行,閲覧等開発を統合的に扱うソフトウェア(mel software)
の2種類である.それぞれについて記述する.

 プログラミング実行,閲覧環境(Motion Express Viewer [MEV])
  MELに則って記述された言語は.melという拡張子がついたテキストファイルとして保存される(melファイル).melファイルを実行可能形式に変換するのがMEVである.MEVは具体的には図2のような形態になっている.
まず,melファイルをjava applicationであるMel(.class)がその内容を分析解釈し,javaのテキストファイル(base.java)に変換する.base.javaファイルはmelファイル上のタイミングや描画,動きなどの記述をjavaの記述に対応させて変換したものである.base.javaファイルは既に開発済みのPBBaseクラスを拡張したもので,java内部の煩雑な処理はこのPBBaseが担っているため,base.javaはmelファイルの記述のほとんどを1対1に変換できる仕様になっている.

 

(図2)


 

 以下に前項「タイミング」で記述したmelの作例に対応したbase.javaファイルのサンプルを記載する.

 

 

 また,動きを管理するpointであるが,これはjava内部に同名のpointクラスが存在し,それと直結する形態になっている.このため.melファイル内のpoint関連の記述はそのままbase.java内でのpointクラスの記述になる.
base.javaファイルはPBBase.javaファイルを含めたjavaファイル群Runner[MEV実行環境ソフトウェア(*開発済)]とともにクラスファイルにコンパイルされjava appletとなる.


 テキスト編集,デバッグ,実行,閲覧等開発を統合的に扱うソフトウェア(mel software)
  MELとMEVを開発環境としてシームレスにつなぐソフトウェアがmel softwareである.図3のようなユーザーインターフェイスを持っている.

(図3)

 

 一般的機能を有するテキストエディタ上でソースコード開発を行い,そのソースコードはテキストファイル(.melファイル)として保存,読み込みが出来る.
 プレイボタンとエクスポートボタンには,MEV,つまり書き込んだソースコードをMel(.class)に引き渡してbase.javaファイル化し,さらにそれを含めた全体をjavaコンパイルでjava applet化する機能が埋め込まれている.プレイボタンにはその後applet viewerが自動的に起動し,作成したjava appletを閲覧する機能,エクスポートボタンにはあらかじめ設定されたディレクトリに作成したjava appletをコピーする機能が埋め込まれている.mel softwareを用いてmelによるサンプルプログラムを開発し,言語仕様を検証した.

 

4 言語仕様書作成

 以上の調査開発を基にMELの仕様書を作成した.詳細は他の資料を参照のこと.本仕様や仕様に則った作例をウェブサイトhttp://www.motionExpress.net/mel/上に掲載した.




12.プロジェクト評価


 本プロジェクトによる開発成果の第1の特徴は「動きに特化した独自の言語体系」ということができる.本プロジェクトは言語体系内部に時間軸という今までのプログラミング言語にはない構造を有している.
 第2の特徴として「コンテンツクリエイターに根ざした開発環境」が挙げられる.グラフィックデザイナーやウェブデザイナーなどいわゆるコンテンツクリエイターと呼ばれる人たちは「プログラミング」という領域を敬遠しがちである.しかし,普段の制作活動にはコンピュータをフルに活用するという状況であり,制作そのものにプログラミングという手法が加わればその制作活動は活性化する.本プロジェクトでの開発成果であるmel softwareはユーザーインターフェイスを一般のコンテンツクリエイターが理解しやすいものに工夫し,実際の制作活動にスムーズに導入出来るようになっている.
 採択時の言語仕様と比較して,非常に説得力のある言語が出来上がった.これは開発者の努力と基礎能力の高さを示すものであろう.このような形が出来上がれば,後は多くのプログラム言語研究者や,ユーザであるコンテンツクリエータから様々な意見を取り入れて,どんどん発展するのも容易であろう.



13.今後の課題


 本プロジェクトでは画面上の動きを管理する独自言語仕様とそれを実行するプロトタイプが出来た.ウェブデザインの実情やコンテンツクリエイターの現状を踏まえるとFlashバージョンも必要であろう.また,本成果は実際に制作現場で使ってもらうことが大前提であるので,専用ウェブウページを充実させ,コミュニティの育成が急務である.



  ページトップへ