Alice:3Dアニメーションを作成しながらOOPを学ぶ

 大学でコンピュータ科学を学ぶ学生の多くは、C++やJavaなどのプログラミング言語を学び始める際に難しいと感じる。その主な理由の一つはLOGOなどの単純な中等教育向けの言語と、より高度なOOP(オブジェクト指向プログラミング)言語との間に大きな隔たりがあるためだ。そこでその隙間を埋めるためにCMU(カーネギーメロン大学)の研究者たちがAliceを開発した。Aliceは、3Dモデルを使用してコンピュータアニメーションを作成するOOP言語だ。

 Randy Pausch氏率いるCMUの研究者チームがコンピュータ科学を学ぶ学生向けのC++とJavaの様々な入門用教科書を調べたところ、条件分岐、ループ、再帰、関数/メソッド、コレクション(たいていは配列だがリストのこともある)、オブジェクト、継承、カプセル化、ポリモルフィズムなど、説明が不可欠である概念がいくつかあることがわかった。Aliceでは、学生が3Dオブジェクトを変更してアニメーションを生成するプログラムを書きながら、そのような概念を学ぶことができる環境が提供されている。

インストールして使い始める

 Aliceを使うためには幸い、CMUに入学する必要はない。Aliceのソースコードは公開されていて、Linux、Windows、Mac上で使用することができる。最新版はAlice 2.0だ。AliceはJavaで開発されていて、実行するためにはJRE(Java Runtime Environment)が必要となる。LinuxユーザはJREをダウンロードして、インストール手順に従えば使うことができるようになる。今回は、SunのオープンソースのJava開発キット「OpenJDK」をベースとしたフリーソフトウェア実装であるIcedTeaが含まれているFedora 8上でAlice 2.0を試した。

 Java環境を用意することができたら、100MBを越えるAliceのtarファイルをダウンロードして、「tar zxvf Alice-2.0.0.tar.gz」として展開しよう。 展開されたAlice/Required/ディレクトリに移動して、run-aliceファイルをGUIファイルマネージャからダブルクリックするかコマンドラインで「./run-alice」を実行すれば、Aliceを使うことができる。

 Aliceには、使い始める際に役立つ4つのチュートリアルが含まれている。標準的なAliceの環境には、仮想世界と一揃いのオブジェクトが含まれている。ユーザはAliceのドラッグ&ドロップ環境の中でマウスを使って、オブジェクトをアニメーション化したり追加したりすることができる。なおAliceには、複雑さのレベルが異なる仮想世界の例が7つ用意されている。

 Aliceのオブジェクトでは、データ(高さ、幅、位置などのプライベートプロパティ)はカプセル化され、メンバーメソッド経由でアクセスするようになっている。Aliceではオブジェクトを仮想世界の中に追加することが簡単にできるだけでなく、パラメータを持つ独自のメソッドを作成してそれらのメソッドを様々なイベントでトリガーさせることも簡単にできる。

Alice_thumb.png
Alice

 Aliceのプログラムには、関数、変数、パラメータ、再帰などが含まれている。これらはすべてマウスをクリックするだけで作成することが可能だ。その他にも、条件分岐のif/else文、do whileループ、forループ、wait文、print文、さらにはコメント文といったプログラミング要素も環境の中にドラッグすることで追加することができる。さらには並列プログラミングといった複雑なタスクも「Do Together」という要素をドラッグすることで行なうことができる。

 Aliceではこれらのタスクが単純化されているので、学生が文法で混乱せず、制御構造やプログラミングの論理を理解するのに役立つ。学生は文法でつまずいてしまうことがないので、オブジェクトなどOOP特有の概念に意識を集中して学ぶことができる。

 Aliceには、プログラムの構造やセマンティクスを過度に単純化してしまうことなしにOOPを楽しみながら学べるものにするために、文法切り替え機能が搭載されている。Aliceの設定(Edit(編集)→Preferences(設定))を調整すれば、ユーザが作成したアニメーションのコードをAliceのデフォルトの分かりやすい文法ではなくJavaの文法で表示することができる。

 AliceのプロモーションビデオではAliceのインターフェースの概略が紹介されていて、学生がOOPを始めるのにAliceがどのように役立つのかを見ることができる。

Aliceの限界とAlice 3.0

 Aliceにはいくつかの欠点もある。Javaの文法切り替え機能があってもやはり、学生が文法の細かい意味を理解するのには役に立たないということはAliceの開発者たちも認めている。またもう一つの問題点に、Aliceがポリモルフィズムを直接的にはサポートしていないということもある。この点についての対処方法はAliceのFAQでいくつか紹介されているが、「これらの対処法は期待される解決法よりもはるかにエレガントさに欠けている」とのことだ。

 一方、より年齢の低い中学校レベルの生徒にAliceを使ってもらうために、Caitlin Kelleher氏がCMUでの博士課程の研究の一部としてStorytelling Aliceを作成している。Storytelling Aliceでは、物語に基づき登場人物が社会的な活動をするようになっており、物語を作りながらOOPの概念を学ぶことを目的にしている。なおStorytelling AliceはWindows上でのみ利用することができる。

 Kelleher氏によると、Aliceの次期バージョンAlice 3.0では、Storytelling Aliceの概念がいくつか採用される予定になっているとのことだ。また、Alice 3.0の開発はゲーム会社のElectronics Artsが引き受けることになっている。それにともなって、Alice 2.0では3D Studio Maxを使って独自に作成したオブジェクトを使用していたのだが、Alice 3.0では人気ゲームThe Simsのキャラクターを使用するという。さらにAlice 3.0では、Aliceで作成したアニメーションをIDE(統合開発環境)の中でJavaを使って拡張することができるようにもなる予定だ。

 Aliceは学生がOOPの概念を学ぶのに役立つように設計された、革新的なアプリケーションだ。Aliceの文法を把握するのに大した時間はかからないので、プログラミングは初めてという人は是非Aliceを試してみると良いだろう。

Linux.com 原文