Chapter 2. Mag 2x: Swarmの計算の基礎

ここでは、先に述べた実験手順の概要をSwarmのコードへ埋め込むことを考えます。Swarmはオブジェクト指向プログラミング言語のObjective-Cを使っており、Swarmアプリケーションでの計算はオブジェクトが互いにメッセージを送信させることでなされます。基本的なメッセージの構文は以下のような形になります。
  [targetObject message Arg1: var1 Arg2: var2]
  
"targetObject"はメッセージの受け手にあたるオブジェクトのことで、"messageArg1:Arg2:"はそのオブジェクトに送信するメッセージ、"var1"や"var2"などはメッセージといっしょに渡す引数です。Objective Cのメッセージはキーワード/値指向で、メッセージ名"messageArg1:Arg2:"が引数をはさんで変化するのはこのためです。

Swarmの全体的な概念は、多数のオブジェクトが"自分の寿命を生き"、分散した並列的な方法でオブジェクトが相互に作用しあうという実行コンテキストを提供することです。さらに、重い自律エージェントの分散システムを確実かつ頑健に実装するには、通常ひどく異様で魔法のようなコンピュータサイエンスをマスターする必要がありますが、Swarmはこの重責からユーザを解放したいと考えています。

Swarmシミュレーションシステムのコンテキストでは、実験手順は一般的に次のような形になります。

  1. 人工世界を作成します。これには空間や時間があり、その世界の空間と時間の全体構造のある"点"に対して、根拠ある位置づけがなされたオブジェクトが含まれます。この人工世界では、これらのオブジェクトはそのオブジェクト独自のルールに従い、また、通常はほんの薄いものですが、世界の状態のサンプリングと協調した内部状態に従って自らの振る舞いを決定できます。

  2. ステップ1で実装した人工世界のオブジェクトが振る舞うことで生まれるデータを観測、記録、分析するための多くのオブジェクトを作成します。

  3. 人工世界を実行します。つまり、ある明示的な並行モデルのもとで、シミュレーションと観測オブジェクトの両方を時刻とともに進めます。

  4. 計測オブジェクトが作成したデータを通じて実験との対話を行い、システムのコントロールされた実験ランを1組実行します。

  5. ステップ4で観測された結果に基づいて実験装置や手段を変更し、ステップ3に戻ります。

  6. 他の人があなたの実験を再生し、あなたの結果を検証できるように、実験のセットアップ仕様を詳細に記録した文書を作成します。