ポリエテン オンラインマニュアル

概要

ポリエテンで提供される要素は,大きく二つに分かれる.一つは,ポリエテンを Ruby スクリプトで利用するための,主にエタンに由来する Ruby API である.もう一つは,Polyethene.#search の引数にするための DLL で利用するための,エテンに由来する C API である.以下では,コンセプトやビルド法などに触れたあと,各 API コンポーネントの一覧を示し,各リンク先でそれぞれを説明する.

なお本マニュアルでは読者にとって特に有用と考えられる要素のみをドキュメント化しているため,より詳しくはソースコードを参照してほしい.以下で,「./」で始まるパスがたびたび登場するが,これはポリエテンの展開先のルートを「./」とした相対パスとして解釈してほしい.

コンセプト

ポリエテンのコンセプトは,より高速なエタン,より柔軟なエテンである.League.do_it などの結果詳細テキストのいらない戦闘処理にエテンを使うことで,より高速に処理している.また,Polyethene.#search から search() を呼ぶことで,引数準備などの面倒な作業をエタンで処理できる.ユーザー定義 DLL を採用することで,動的な proc の差し替えを可能とし,ユーザーが書かなければならない C コードを最小限に抑えている.また,search() で得られた情報を Ruby (エタン)で処理するのもよりスムーズである.

他方,エタンやエテンに比べて可搬性は低下している.エタンから見れば,JRuby などの非 CRuby 環境で動作しないようになっており,エテンから見れば,C に加えて Ruby の知識がある程度必要である.特に DLL 作成にあたっては,C の世界から Ruby を見る必要がある.DLL 作成のためには,Ruby の世界のオブジェクトは C の世界では VALUE という型になる,ということだけ知っていれば大丈夫だと思うが,より詳しくは Ruby 拡張ライブラリ関連備忘録 やそのリンク先で学んで欲しい.Polyethene.#search を使わない場合は,「ビルドする手間があり,利用可能環境もエタンに比べて限られるが,より高速なエタン」として利用できる.

ビルド方法

ビルドには ruby, gcc, make および Ruby 拡張ライブラリのビルドに必要なライブラリ(gmp, crypt など)が必要である.gcc 以外のコンパイラでのビルドはサポート外とする(一応 clang なら動くようだ.試していないが,VC++ は多分ダメだろう).

ビルドは,./src で行う.

  1. ruby extconf.rb
  2. make

で polyethene.so と DLL をビルドできる.さらに,

  1. make install

とすると,require のサーチパス上にビルドされた polyethene.so をコピーし,ビルドされた DLL および result.css を ./ にコピーする.

ビルドに必要なライブラリが不足するなどしていると ruby extconf.rb に失敗するが,このとき ./src/mkmf.log に情報が出力される.

Ruby API

Polyetheneポリエテンで定義されるクラス・モジュールを含む全ての定数を囲むモジュール.
Polyethene::Kenshi剣師クラス.
Polyethene::OrderedTa順序付き多(剣師の集合)クラス.
Polyethene::Match戦闘のマッチングを処理するクラス.
Polyethene::League総当り戦処理クラス.
 Polyethene::Prophecyプロフェシー戦処理クラス.
Polyethene::Tournamentノックアウトトーナメント戦処理クラス.
Polyethene::Game戦闘処理クラス(内部用,リンクなし).
sword剣に関する定義をまとめたポリエテン組み込みのライブラリ(内部用).
Ruby 組み込みクラスString などの Ruby の組み込みクラスに追加定義されるメソッドの説明.

C API

データ構造ポリエテンで使われる構造体を中心としたデータ構造.
エテン由来関数エテンに由来する関数.
ポリエテン独自関数ポリエテンで新たに定義された関数.
ユーザー定義DLLユーザー定義のDLLで定義する関数.

執筆者:KAZOON
最終更新日:2016年04月06日