Inform

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Inform
設計者 Graham Nelson
開発者 Graham Nelson
最新リリース 7 5T18 / 2008年4月30日[1]
主な処理系 Inform
影響を受けた言語 自然言語英語
プラットフォーム Microsoft WindowsMac OS XLinux、その他
ウェブサイト Inform 7
テンプレートを表示

Inform1993年、Graham Nelson が開発したインタラクティブフィクションテキストアドベンチャー)のためのプログラミング言語であり、設計システムである。Inform は、ZコードまたはGlulx仮想機械で動作するコードを生成する。バージョン1から5は1993年から1996年までにリリースされた。1996年ごろ Nelson は Inform を一から書き換え、バージョン6(Inform 6)を開発した[2]。その後約10年間、Inform 6 は安定版としてインタラクティブフィクションの執筆に広く使われた。2006年、Nelson は Inform 7Natural Inform とも)をリリースした。これは、全く新しい自然言語的記法が可能な言語で、書籍出版のメタファーとなっている各種ツール群も新たに開発された。2007年現在、Inform 7 はまだベータ版だが、すでにインタラクティブフィクションのリリースに使われている。

目次

Zマシンと Glulx [編集]

Inform は全バージョンでソースコードからZコードのファイル(ストーリーファイル)を生成する。生成されたファイル群をZコードインタプリタ(Zコードの仮想機械仕様またはZマシン仕様を実装したプログラム)で実行する。Zマシンは1979年にインフォコムがインタラクティブフィクションのために開発したものである。Zコードインタプリタはほとんど全てのコンピュータに移植されており、Zコードは変更することなくそれらのプラットフォーム上で実行可能である。

Andrew Plotkin は、自身が設計した仮想機械 Glulx 向けのファイルを生成する Inform 6 の非公式版を開発した。Glulx は開発されてから数十年を経て古くなったZマシンの各種制限への対処として設計されたものである。2004年2月29日にリリースされた Inform 6.3 で、Plotkin の成果が正式版に取り入れられ、Inform 6 は2種類の仮想機械に対応するようになった。Inform 7 の初期のバージョンは Glulx に対応していなかったが、2006年8月に対応版がリリースされた。

Inform 6 [編集]

Inform 1-6
パラダイム オブジェクト指向手続き型
登場時期 1993年
設計者 Graham Nelson
開発者 Graham Nelson
最新リリース 6.31 / 2006年2月10日
影響を与えた言語 Inform 7
プラットフォーム Microsoft WindowsMac OS XLinux、その他
ライセンス プロプライエタリだが、再配布は自由
ウェブサイト Inform 6
テンプレートを表示

Inform は1993年、Graham Nelson によって開発された。1996年、Nelson は Inform を一から書き換え、バージョン6(Inform 6)を開発した。その後約10年間、Inform 6 は安定版としてインタラクティブフィクションの執筆に広く使われた。

Inform 6 は大きく2つのコンポーネントに分かれている。Inform コンパイラは、ソースコードからストーリーファイルを生成する。Inform ライブラリはプレイヤーのテキスト入力の構文解析器と世界モデルを保持するための機能を備えたソフトウェアスイートである。また、コンパイラの入力となるプログラミング言語も Inform と呼ぶ。

Inform 6 とZマシンは本来、インタラクティブフィクションの開発用に設計されたものだが、それ以外の開発にも使われている。例えば、BASICインタプリタ、LISPチュートリアル(完全なインタプリタ付き)、テトリスゲームなどのゲームが Inform 6 を使って開発されたことがある。

コンパイラ [編集]

Inform コンパイラは、Inform 6 向けのソースコードからZマシンまたはGlulxで実行可能なファイル(ストーリーファイル)を生成する。

プログラミング言語 [編集]

Inform言語は、オブジェクト指向かつ手続き型である。言語の基本要素はオブジェクトで、オブジェクトは親子関係のオブジェクトツリーで管理される。この親子関係は場所を表すのにも使われているため、あるオブジェクトの親となっているオブジェクトは、子オブジェクトを保持している(hold)とも言われる。オブジェクトはツリー上を移動できる。トップレベルオブジェクトは例えば、ゲーム内の部屋などの場所を表し、家具や小物やノンプレイヤーキャラクター、プレイヤーのキャラクター、背景効果などがオブジェクトとして保持される。親子関係は任意であり、例えば livingroom(居間)オブジェクトが insurancesaleman(保険外交員)オブジェクトを保持し、insurancesaleman オブジェクトが briefcase(かばん)オブジェクトを保持し、briefcase オブジェクトが insurancepaperwork(保険書類)オブジェクトを保持するといったことが考えられる。

初期の Inform では、オブジェクトはいわゆるオブジェクト指向プログラミングのオブジェクトとは異なるもので、クラスに相当する概念がなかった。その後、クラス定義が追加され、オブジェクトはクラスに属せるようになった。オブジェクトやクラスは複数のクラスを継承できる。インタラクティブフィクションゲームには一般に多数のオブジェクトが登場する。そのためInformでの多くのオブジェクトは「メタクラス」オブジェクト以外のクラスを継承しない。しかし、オブジェクトには属性(ブーリアン型のプロパティ、sceneryedible など)があることが多く、Inform ライブラリがそれを認識する。普通の言語であれば、これら属性は継承によって実装されるべきものである。

以下に Inform 6 のソースコードの例を示す。

[ Main;
    print "Hello World^";
];

ライブラリ [編集]

InformシステムにはInformライブラリがあり、インタラクティブフィクションのプログラミングで難しい部分のほとんどを自動化している。特にプレイヤーが入力するテキストの構文解析器と、部屋やドアやプレイヤーの持ち物などのオブジェクト(とそのプロパティ)を保持する世界モデルが含まれる。

Informコンパイラから見ればInformライブラリは必須ではない。代替ライブラリもいくつか存在し、Plutypus[3] や InformATE などがある(後者はスペイン語向け)。

ゲームでの例 [編集]

Inform ライブラリを使った Inform のソースコードの例を以下に示す。Inform 6 を前提としている。Inform 7 では全く文法が異なるが、レガシーコードであることを示すよう修正を加えれば、Inform 7 でも使用可能である。

 Constant Story "Hello World";
 Constant Headline "^An Interactive Example^";

 Include "Parser";
 Include "VerbLib";

 [ Initialise;
     location = Living_Room;
     "Hello World";
 ];

 Object Kitchen "Kitchen";
 Object Front_Door "Front Door";

 Object Living_Room "Living Room"
     with
         description "A comfortably furnished living room.",
         n_to Kitchen,
         s_to Front_Door,
     has light;

 Object -> Salesman "insurance salesman"
     with
         name 'insurance' 'salesman' 'man',
         description "An insurance salesman in a tacky polyester 
               suit.  He seems eager to speak to you.",
         before [;
             Listen:
                 move Insurance_Paperwork to player;
                 "The salesman bores you with a discussion
                  of life insurance policies.  From his
                  briefcase he pulls some paperwork which he
                  hands to you.";
         ],
     has animate;

 Object -> -> Briefcase "briefcase"
     with
         name 'briefcase' 'case',
         description "A slightly worn, black briefcase.",
     has container;

 Object -> -> -> Insurance_Paperwork "insurance paperwork"
     with
         name 'paperwork' 'papers' 'insurance' 'documents' 'forms',
         description "Page after page of small legalese.";

 Include "Grammar";

Inform 6 またはそれ以前のバージョンを使って開発された主なゲーム [編集]

  • Curses, by Graham Nelson (1993) - Inform で書かれた最初のゲーム。[4]
  • So Far, by Andrew Plotkin (1996) - 1996年、最初の XYZZY Award for Best Game を受賞。
  • Anchorhead, by Michael S. Gentry (1998) - ハワード・フィリップス・ラヴクラフトクトゥルフ神話に基づいたホラー。[5]
  • Photopia, by Adam Cadre (1998) - ほとんどパズル的要素のない初のゲーム。1998年の Interactive Fiction Competition で優勝。
  • Varicella by Adam Cadre (1999) - 1999年の XYZZY awards の Best Game 部門などで優勝。学術的論文も書かれた。[6]
  • Galatea, by Emily Short (2000) - 同名のアニメーション化した像との対話を中心にしたゲーム。インタラクティブフィクションでのノンプレイヤーキャラクターとの対話としては最も複雑なものとされている。Adam Cadre は Galatea を "the best NPC ever" と称した。[7]
  • Slouching Towards Bedlam, by Star C. Foster and Daniel Ravipinto (2003) - スチームパンクの設定で、メタゲーム的構造を持つ(内部に別のゲームが登場し、そのゲームをセーブしたものを外側のゲームとしてリストア可能)。 XYZZY awards を受賞し、2006年の Interactive Fiction Competition でも好成績を収めた。

Inform 7 [編集]

Inform 7
パラダイム 宣言型論理型
登場時期 2006年
設計者 Graham Nelson
開発者 Graham Nelson
最新リリース 5T18 / 2008年4月30日
影響を受けた言語 Inform 6
プラットフォーム Microsoft WindowsMac OS XLinux、その他
ライセンス プロプライエタリだが、再配布は自由
ウェブサイト Inform 7
テンプレートを表示

2006年4月30日、Graham Nelson は rec.arts.int-fiction というニュースグループで Inform 7 のベータ版リリースを発表した[8]。Inform 7 は主に3つの部分から構成される。Inform 7 IDE はインタラクティブフィクションのテストに特化した開発ツールである。Inform 7 コンパイラは新たな言語用コンパイラ、"The Standard Rules" はInform 7 のライブラリの中核である。Inform 7 では、Inform 6 のコンパイラとライブラリも必要とする。Inform 7 のコンパイラはソースコードから Inform 6 用ソースコードを生成し、そこから Inform 6 のコンパイラで Glulx やZコードのストーリーファイルを生成する。Inform 7 はインタラクティブフィクションのパッケージ形式である Blorb ファイルもデフォルトでサポートしている。これは、Zコードのファイルや表紙画像、検索用メタデータなどを格納するアーカイブファイルである。Inform 7 の完全セットは今のところ Mac OS XMicrosoft WindowsLinux で利用可能である。2007年3月25日Linuxでのコマンド行サポートが追加され、新たなリリースではSourceForge.netGNOME Inform 7 プロジェクトで開発されているGNOMEデスクトップ環境で動作するIDEも同梱されるようになっている[9]。言語とツールの開発は続いており[10]、2007年3月25日のリリースでも言語に様々な変更が加えられた。

Inform 7 は短期間だけ Natural Inform と呼ばれていたが、その後 Inform 7 に改名された。このため、Inform 7 のコンパイラは "NI" とも呼ばれる[11]

IDE [編集]

Inform 7 には、Mac OS X と Microsoft Windows で動作する統合開発環境 (IDE) が付属する。Mac OS X 版 IDE は Andrew Hunter が開発し、Windows 版 IDE は David Kinder が開発した。

Inform 7 IDE には、Inform 7 のソースコード編集のためのテキストエディタが含まれる。他のソースコードエディタと同様、シンタックス強調機能がある。引用符で囲まれた文字列は色付きで表示される。章節見出しは太字で大きく表示される。コメントはやや小さいフォントで別の色付きで表示される。

IDE にはZコードインタプリタも組み込まれている。Mac版IDEのインタプリタは、Andrew Hunter が開発した Zoom インタプリタを基本としている[要出典]。Windows版IDEのインタプリタは WinFrotz に基づく。

開発者が組み込みのインタプリタでゲームをテストすると、IDEの "skein" または "transcript" ビューにその進行状況が報告される。skeinビューでは、分岐する木構造としてプレイヤーのコマンドを追跡する。分岐においてゲームの同じ部分を再生せずに開発中ゲームの異なる経路を再試行でき、迅速なテストが可能である。経路には注釈をつけたり、正解としてマークしたりできる(それをテキストでのウォークスルー用に出力可能)。transcriptビューでは、プレイヤーのコマンドとゲームの応答を記録する。応答が正しければ、それを "blessed" とマークできる。再生したとき blessed とマークされた部分は強調されるので、開発者が問題を発見する助けとなる。

IDE は開発中のプログラムに各種索引を提供する。コードをクラス階層として示したり、従来的なIFマップで示したり、本の目次のように示したり、といった様々な形態の表示が可能である。索引上の項目をクリックすると、対応するソースコードにジャンプできる。

IDE は2つのペインを左右に並べて表示する。それぞれのペインには、ソースコード、コンパイルの現在状態、skein、transcript、ソースコードの索引、ゲームの実行中画面、Inform 7 の文書、その他プラグイン、設定などが表示できる。これは、多数のペインを同時表示するのではなく2つの向かい合うページのようにペインを表示することで、ノートを模倣しているのである[8]

コンパイラ [編集]

Inform 7 のコンパイラは Inform 6 のソースコードを生成する。その後 Inform 6 のコンパイラを使ってZコードを出力する。Inform 7 は "Natural Inform" と呼ばれていた関係で、そのコンパイラは "NI" とも呼ばれている[11]

プログラミング言語 [編集]

特筆すべき機能として、宣言型プログラミングによる強化と、オブジェクトが使われる状況からその型と属性を推論する能力がある。例えば、"John wears a hat."(ジョンは帽子をかぶっている)という文から、"John" という "person" が生成され(wear という動詞の主語は人物だけであるため)、"wearable" 属性を持つ "thing" が生成され(wear の目的語は着用可能でなければならないため)、John が帽子を着用している状態に設定される。

また、オブジェクト間の関係も直接サポートしている。例えば、あるオブジェクトの中に別のオブジェクトがあるとか、あるオブジェクトが別のオブジェクトを着用しているといった関係を自動的に抽出する。また、開発者が独自の関係を追加することもできる。例えば、「愛する」とか「嫌う」といった関係を追加することもでき、登場人物間の好悪関係を保持することができる。

Inform 7 はドメイン固有言語の一種であり、Inform 6 よりも抽象的なレベルでインタラクティブフィクションを構築でき、ソースコードの可読性も向上している。

ゲームでの例 [編集]

以下は、上掲の "Hello World" の例を Inform 7 で書いて再実装したものである。Inform 7 でのコンパイルで自動的にリンクされる "The Standard Rules" というライブラリを使っている。

"Hello World" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room." The Kitchen is north of the Living Room. The Front Door is south of the Living Room. The Front Door is a closed locked door.

The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase." Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman:

say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
now the player carries the insurance paperwork.


Inform 7 で書かれた主なゲーム [編集]

Emily Short の Mystery House Possessed(2005年)[12]は、一般にリリースされた最初の Inform 7 を使ったゲーム。"Mystery House Taken Over" プロジェクトの一環としてリリースされた。

2006年3月1日、Short は3つのゲームのリリースを発表した[13]Bronze[14](パズル指向の従来型ゲーム)、Damnatio Memoriae[15](Short 作の Inform 6 のゲーム Savoir-Taire の続編)、Graham Nelson の The Reliques of Tolti-Aph[16] である。2006年4月30日に Inform 7 のパブリックベータ版を発表すると同時に、3月1日にリリースされた3本を含む6本の「動作例」がソースコードと共に公開された。

Emily Short の Floatpoint は Inform 7 を使ったゲームとして初めて Interactive Fiction Competition で優勝した[17]。また、2006年の XYZZY awards の Best Setting 部門と Best NPCs 部門でも優勝している[18]。nespresso 作の Rendition(2007年)は、テキストアドベンチャーゲームの形態をとった政治的実験小説であり、プレイヤーは自身の共犯に立ち向かうことを要求される。この悲劇の手法はACM[19]ケンブリッジ大学[20]で学術的に論じられている。

参考文献 [編集]

Inform 6
  • Graham Nelson, Inform Designer's Manual. チュートリアル兼マニュアル兼技術文書。公式サイトから自由にダウンロード可能[21]。書籍としてはソフトカバー版 (ISBN 0-9713119-0-0) とハードカバー版 (ISBN 0-9713119-3-5) がある[22]
  • The Inform Beginner's Guide by Roger Firth and Sonja Kesserich (ISBN 0-9713119-2-7) - より平易なInform入門。公式サイトから自由にダウンロード可能[23]
Inform 7
  • The SPAG Interview - Inform 7 開発に関する Graham Nelson と Emily Short へのインタビュー。このインタビューはリリース直前に行われ、リリースと同時に公開された[2]
  • "Natural Language, Semantic Analysis and Interactive Fiction" - 設計者 Graham Nelson による Inform 7 の設計に関する論文[24]

脚注・出典 [編集]

  1. ^ Inform 7 Changelog”. 2008年6月5日閲覧。
  2. ^ a b The SPAG Interview: Graham Nelson and Emily Short on Inform 7” (English). SPAG #44. The Society for the Promotion of Adventure Games (2006年4月30日). 2007年1月4日閲覧。
  3. ^ Turner, Anson (2002年3月14日). “Inform Platypus release 4” (English). 2007年1月4日閲覧。
  4. ^ Alan De Smet (2006年3月14日). “Curses (Interactive Fiction Reviews)”. 2006年11月1日閲覧。
  5. ^ "Interactive Fiction Ratings" での1219作品のレーティングで、2007年1月4日に最高レーティングを獲得。(IF Rating Stats”. 2007年1月4日閲覧。)
  6. ^ Montfort, Nick; Stuart Moulthrop (2003年8月). “Face It, Tiger, You Just Hit the Jackpot: Reading and Playing Cadre's Varicella” (English). Fine Art Online: Vol. 17 No. 8. 2008年6月5日閲覧。
  7. ^ Photopia is a short story, Varicella is a world” (English). L’avventura è l’avventura (2002年1月). 2007年1月4日閲覧。
  8. ^ a b Graham Nelson (2006年4月30日). “Inform 7: Public Beta”. rec.arts.int-fiction. (ウェブリンク). 2007年1月4日閲覧。 
  9. ^ GNOME Inform 7 SourceForge project page” (English) (2008年2月). 2008年6月6日閲覧。
  10. ^ Emily Short (2007年2月18日). “Inform 7: Possible future developments”. rec.arts.int-fiction. (ウェブリンク). 2007年3月30日閲覧。  Also archived at Short, Emily; Graham Nelson (2007年1月). “Inform 7: Possible future developments” (English). 2008年6月6日閲覧。
  11. ^ a b Graham Nelson (2007年3月30日). “Re: "Inform 7" is the wrong name”. rec.arts.int-fiction. (ウェブリンク). 2007年3月30日閲覧。 
  12. ^ Mystery House Taken Over” (English). 2007年1月4日閲覧。
  13. ^ Emily Short (at the request of Graham Nelson) (2006年3月1日). “Three games in Inform 7”. rec.games.int-fiction. (ウェブリンク). 2007年1月4日閲覧。 
  14. ^ Short, Emily (2006年). “Bronze” (English). 2008年6月5日閲覧。
  15. ^ Short, Emily (2006年). “Damnatio Memoriae” (English). 2008年6月5日閲覧。
  16. ^ Nelson, Graham (2005年). “The Reliques of Tolti-Aph” (English). 2007年1月4日閲覧。
  17. ^ 12th Annual Interactive Fiction Competition” (2006年). 2007年5月12日閲覧。
  18. ^ XYZZY Awards: Winning Games of 2006”. 2007年5月12日閲覧。
  19. ^ ACM Hypertext 2007 conference slides (PDF)”. 2008年6月6日閲覧。
  20. ^ Cambridge University lecture slides”. 2008年6月6日閲覧。
  21. ^ Download the Inform Designer's Manual” (English) (2006年4月1日). 2007年1月4日閲覧。
  22. ^ About the Inform Designer's Manual” (English) (2006年4月1日). 2007年1月4日閲覧。
  23. ^ Download the Inform Beginner's Guide” (English) (2006年4月1日). 2007年1月4日閲覧。 Firth, Roger; Sonja Kesserich (2004年8月). “The Inform Beginner's Guide: Third Edition (PDF)” (English). 2007年1月4日閲覧。
  24. ^ Graham Nelson (2006年4月10日) (PDF). Natural Language, Semantic Analysis, and Interactive Fiction. http://www.inform-fiction.org/I7Downloads/Documents/WhitePaper.pdf 2007年1月4日閲覧。. 

外部リンク [編集]