+CSの実行においてDSが他のCSから変更を受けることはない。そのためAliceではデータが他から変更され整合性がとれなくなることはない。Objectに相当する。run()を持つObject)に相当する。+プログラマがCSを記述する際は、CodeSegmentクラスを継承する。++DSは数値や文字列などの基本的なデータの集まりを指し、Aliceが内部にもつデータベースによって管理されている。Managerと呼ぶ。Managerを持っている。DSには対になるString型のkeyが存在し、それぞれのManagerにkeyを指定してDSにアクセスする。+一つのkeyに対して複数のDSをputするとFIFO的に処理される。Managerは通常のデータベースとは異なる。DSMは各ノード固有のデータベースである。DSMに対して書き込めば良い。DSMを立ち上げるには、DataSegmentクラスが提供するconnectメソッドを用いる。+接続したいノードのipアドレスとport番号、そして任意のManager名を指定することで立ちあげられる。APIを用いてDSのやり取りを行うため、プログラマはManager名さえ+意識すればLocalへの操作もRemoteへの操作も同じ様に扱える。API}+DSの保存・取得にはAliceが提供するAPIを用いる。APIと呼ばれ、DSをDSMに保存する際に用いる。APIと呼ばれ、DSをDSMから取得する際に使用する。val)}+\end{itemize}+DSをDSMに追加するためのAPIである。DSMかといったManager名を指定する。し+て第二引数で指定されたkeyに対応するDSとして第三引数の値を追加する。val)}+\end{itemize}+updateもDSをDSMに追加するためのAPIである。putとの違いは、queueの先頭のDSを削除してからDSを追加するこ+とである。そのためAPI実行前後でqueueの中にあるDSの個数は変わらない。val)}+\end{itemize}+flipはDSの転送用のAPIである。取得したDSに対して何もせずに別のKeyに対し保存を行いたい場合、一旦値を取+り出すのは無駄である。flipはDSを受け取った形式のまま転送するため無駄なコピーなくDSの保存ができる。key)}+\end{itemize}+takeはDSを読み込むためのAPIである。読み込まれたDSは削除される。(Blocking)が起こる。putやupdateによりDSに更新があった場合、takeが直ちに実行される。key)}+\end{itemize}+peekもDSを読み込むAPIである。takeとの違いは読み込まれたDSが削除されないことである。\ref{src:CodeSegment})。APIを利用する事ができる。CSはどのDSにも依存しない。+このCSをmainメソッド内でnewし、executeメソッドを呼ぶことで実行を開始させることができる。DSMに対してDSをputしている。ods}というフィールドを用いてアクセスする。flip}を実行することができる。+TestCodeSegmentはこの"cnt"というkeyに対して依存関係があり、8行目でputが行われるとTestCodeSegmentは実+行される。DSは、CSの作成時に指定する必要がある。ids}というフィールドを用いてアクセスする。ids}にpeek/takeメソッドはなく、create/setKeyメソッド内でCommandTypeを指定して実行する。++ソースコード\ref{src:CodeSegment}は、0から9までインクリメントする例題である。DSを格納する受け皿(Receiver)を作っている。TAKE}を指定する。type)}+\end{itemize}++4行目から6行目はコンストラクタである。コンストラクタはオブジェクト指向のプログラミング言語で新たなオ+ブジェクトを生成する際に呼び出されて内容の初期化を行う関数である。input}が初期化される。5行目にあるTestCodeSegmentのコンストラクタのTAKEが実行される。DSMからDSを取得している。key)++\end{itemize}+setKeyメソッドはpeek/takeの実行を行う。どのDSMのどのkeyに対してpeekまたはtakeコマンドを実行させるかを指定できる。コマンドの結果がレスポンスとして届き次第CSは実行される。10行目で取得されたDSをInteger型に変換してcountに代入する。12行目でcountをインクリメントする。16行目で次に実行されるCSが作られる。DSが揃い待ち状態が解決されたため、次のCSが実行される。13行目が終了条件であり、countの値が10になれば終了する。\end{enumerate}+となっている。Computationが提供している。Managerに読み込ませるだけでトポロジーを構成すること+ができる。Language\cite{dot}という言語で記述される。Languageとは、プレーンテキストを用いてデータ構造としてのグラフを表現するためのデータ記述言語の一+つである。+ソースコード\ref{src:topologyfile}は3台のノードでリングトポロジーを組むときのトポロジーファイルの例である。Languageファイルはdotコマンドを用いてグラフの画像ファイルを生成することができる。そのため、記述したトポロジーが正しいか可視化することが可能である。Node)に接続するべきクライアントのIPアドレスやポート番号、接続名を送る(図\ref{fig:topologymanager})。ManagerのIPアドレスさえ知っていれば自分の接続すべきノードのデータを受け取り、ノード間での正しい接続を実現できる。Managerが記述に従いトポロジーを構成}+\label{fig:topologymanager}+\end{figure}++また、実際の分散アプリケーションでは参加するノードの数が予め決まっているとは限らない。Managerは動的トポロジーにも対応している。Nodeの情報がput+され接続処理が順次行われる。Managerが持つトポロジー情報が更新される。Managerでは動的なトポロジータイプとして二分木に対応している。\chapter{まとめ}。