ビデオピンボール第4世代のために開発された究極のスクリプト言語システム「イプシロン」

Ypsilon Scheme System(以下イプシロン)は、リトルウイング ピンボールコンストラクションシステムの基盤技術の一つとして藤田善勝が開発したスクリプト言語システムです。イプシロンは、YoshikatsuからYを取って名付けました。

プログラミング言語としてイプシロンはLISPの方言の一つであるスキーム(Scheme)を採用しています。スキームは1970年代に開発され、コンピュータとプログラミングの教育分野で広く使われています。 スキームについての情報はこちらをご参照ください。http://ja.wikipedia.org/wiki/Scheme

ピンボールのゲームルールは現在CまたはC++で記述されています。速度の面では有利なのですが、プログラムにエラーがあるとあっけなくアプリケーションが異常終了し、デバッグも難しいという問題があります。イプシロンを使用すれば安全、簡単にルール部分のプログラムの開発が行えるようになります。またイプシロンは最新仕様のR6RSに準拠し、すべてのR6RS標準ライブラリーを提供しているのであらゆる分野のソフトウエア開発、特に高速なレスポンスとインタラクティブな処理を必要とするアプリケーションに最適な機能を備えています。R6RSについてはご参照ください。http://www.r6rs.org/

イプシロンはオープンソースのプロジェクトです。BSD-like Licenseにて配布されています。


リトルウイング ピンボールコンストラクションシステムとは

LittleWing Pinball Construction Systemは、自社製品のために開発した技術をフィードバックすることにより進めているプロジェクトです。私が「こりゃまいった!」「ハマった!」と歓声を上げるピンボールゲームを皆様に作っていただける日を夢見て長期に渡る開発を続けています。 ビル・バッジ氏の伝説的タイトル“Pinball Construction Set”を学生時代にApple IIで見た時から、いつか必ず自分のコンストラクションセットを完成させようと思いつづけてきました。

サンフランシスコの彼の自宅でピンボールについて熱く話をしたことが懐かしく思い出されます。彼の自宅にはアップライト筐体のゲームセンター用のRaster Blasterが置いてありました。 ビル・バッジ氏のピンボールコンストラクションセットについてはこちらをご覧ください。
http://en.wikipedia.org/wiki/Pinball_Construction_Set


イプシロンはなぜ作られたのか?

ピンボールコンストラクションシステム用のスクリプト言語システムを開発するにあたっては、いろいろなアイデアがありました。まず考えたのは、必要とされる高い信頼性を確保するためメモリーの管理が自動的に行われる言語を採用しようというものでした。つまりGarbage Collection機能のある言語です。 次にピンボールのゲームルールの作成が目的なわけですから、それに特化した記述ができると開発が容易になり、これは同時にバグの入る余地を少なくしてくれると考えました。つまりマクロ機能のある言語です。

この2つの要件を満たすもので歴史的にみて安定していたのがLISPでした。LISPの仲間の中でスキームを選択したのは、そのシンプルで強力なマクロ機能に特徴があったからです。マクロは以下のようなプログラムの記述を可能にします。

プログラム: [Parts Name: B1 Type: Thumper-Bumper Location: (230 20) Connect: switch[3] Point: 20K]

上のコードの意味は、“B1という名前を付けたThumper Bumper(触ったボールをはじき飛ばすタイプのバンパーです)を座標230,200に配置して、センサーをスイッチの3番に接続。デフォルトの得点は20K”となります。簡単でしょう?

さて、スキームには既に多くの実装が存在します。またその多くはオープンソースとして公開されており無償で使用することができます。しかし、それらの既存の実装を使用しないで独自にイプシロンを開発したのには理由があります。それはゲームが要求する高度なリアルタイム性を実現する十分な機能があり、かつ充分なメンテナンスが可能なシンプルな構成を持ち、さらにOSやC/C++の標準機能以外を要求しないという要件に合うものが無かったからです。

例えばLittleWingでは家庭用や業務用のゲーム機向けにも開発を行うため、それらがサポートされていないBoehm Garbage Collectorを使用する処理系は使うことができません。またJava、VisualBasic、C#などに依存することもできません。これで知る限りの全部の処理系が対象から外れることになり、全く独自に新たなものを開発することになりました。 Boehm Garbage Collectorについてはこちらをご覧ください。http://en.wikipedia.org/wiki/Boehm_garbage_collector

リトルウイング 代表取締役プログラマー 藤田善勝

Ypsilon - The implementation of Scheme Programming Language for real-time applications. Copyright (c) 2008 Y. Fujita, LittleWing Company Limited. All rights reserved.