内のキューから取り除かれるということである。Segmentはタスクのことである。記述し、依存関係を作る。依存関係により、実行される順番が一意に決まる。Segmentの入出力に相当する。Segmentとする。Segmentを実行させる必要がある。Segmentにも依存しない。Segmentを持たない。Segmentをmainメソッド内でnewし、executeメソッドを呼ぶことで実行を開始させることができる。Segmentをユーザーが記述する際にはCodeSegmentを継承して記述する。そのCodeSegmentはInputDataSegmentManagerとOutputDataSegmentManagerを利用することができる。Segmentのidsというフィールドを用いてアクセスする。Segmentが格納される受け皿を作る。引数にはCommandTypeが取られ、指定できるCommandTypeはPEEKまたはTAKEである。Segmentのあるkeyに対してpeekまたはtakeコマンドを実行させるかを指定することができる。Segmentは実行される。Segmentのodsというフィールドを用いてアクセスする。OutPutDataSegmentManagerは"put"または"update"を実行することができる。Manager}TopologyManagerはAlice同士の接続トポロジーを管理する。Segmentで実装してある。Node)に接続するべきクライアントのIPアドレスやポート番号、接続名を送り、トポロジーファイルに記述された通りにトポロジーを作成する。Languageという言語で記述される。Languageとはプレーンテキストを用いて、データ構造としてのグラフを表現するための、データ記述言語の一種である。Languageのグラフを利用して、クライアント間の接続を表現する。Languageファイルはdotコマンドを用いて、グラフの画像ファイルを出力することができるので、記述したトポロジーが正しいことを可視化して確認することができる。Managerにアクセスすることができる。setKeyを行う際、odsでputまたはupdateする際の引数のmanagerKeyがこれにあたる。ManagerのIPアドレスとポート番号を指定をする。main関数内でTopologyNodeをnewを行えば良い。Segmentである。Segmentがトポロジーが完成した後実行される。%}{\section{ゲームの例題}\label{sec:Enum}\label{sec:item}\subsection{水族館}今回作成した例題は水族館である。複数のクライアントのディスプレイを複数の魚が移動していくものである。魚は画面の端まで移動すると自分の画面上からは消え、別のクライアントの画面の端から魚が出てくる。魚のうち一匹はクライアントが直接操作することができる。トポロジーはTopologyManagerによりツリー状に構成してある。Segmentにより魚の座標が更新される。Segment)が実行され実際に魚のオブジェクトにセットされ画面に反映される。Segment)にFishPosition(魚の座標データ)が渡される。Updateにlist(送信者リスト)が渡される。Updateが実行され、listを元にデータが送信される。この時にFishPositionには送信元情報が付加されているので、送信元には送信されない。Segmentという単位に分割して記述する方法を提唱している。+しかし、前述した方法をプログラマーが一から記述することは大変である。よるプログラミング手法の例を示す。本文はここから始まる+\section{歴史的経緯}+本研究室では、並列タスク管理フレームワークCeriumの管理を行なっているが、その設計と実装を行うにあたり、並列プログラミングと分散プログラミング+は本質的には同じことを行なっていることが分かった。特異な環境は、分散プログラミング環境と告示している。それらを踏まえて、Ceriumのタスク管理手法を分散に応用できないかと考えた。+++Ceriumに置いても、タスクとそれの入出力データの取り扱いは難しい課題である。データを操作するAPIを考えて、タスクを自然に記述し、効率良く実行する方法を考えてきた。そこで考えられた手法が、データをDataSegment、タスクをCodeSegmentという単位に分割して記述する方法である。開発を通して得られた知見を生かされている。設計はシングルスレッドで行われている。近年ではマルチコアのマシンが主流となっている。将来的にはメニーコアのマシンが主流になってくると考えられるそのような背景を踏まえてAliceはマルチスレッド向けに設計されている。Segmentという単位でデータと処理を細かく分割し、それぞれの依存関係を記述して分散プログラムを作成する。他のマシンとの接続トポロジーの構成の機能も有しているのでユーザーはトポロジー構成後の処理を記述するだけでよい。Semgnetをデータベースとして利用している。KeyValueStoreで実装されており、キーごとにリストを持っている。APIを用いることで、リストにデータを追加、削除を適宜行うことができる。Managerである。Segmentを整理する。各キーごとにキュー構造を持っている。APIを用いて操作する。"take")時に、希望のデータがなかった場合、ブロッキングを行う機能を持つ。+しかし、ブロッキングといってもそこで同期するわけではない。+非同期でデータを通信する。違い、レスポンスが発生する。これらを用いてデータの送受信を行う。内のキューに対してエンキューする。