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がどのように役立つのかを見ることができる。