# HG changeset patch # User Kazuma Takeda # Date 1487146812 -32400 # Node ID 7b39f43e4088cfce24ecea14340389ce44b25c21 # Parent 10a1f30eb748b80044d03fbdd6e2d00331448af4 fix english description. diff -r 10a1f30eb748 -r 7b39f43e4088 prepaper/finalPre.tex --- a/prepaper/finalPre.tex Wed Feb 15 09:28:06 2017 +0900 +++ b/prepaper/finalPre.tex Wed Feb 15 17:20:12 2017 +0900 @@ -30,22 +30,19 @@ \twocolumn [ \maketitle \begin{onecolabstract} -There are some problems to Relational Databases and NoSQLs. +There are some problems to Relational Database and NoSQL. One of them as Impedance mismatch. This problem is cased by a difference between the first normal form of database and the programs. There is a problem that NoSQL is unfit for parallel processing. Laboratory proposes the database Jungle that solves those problems. -Jungle Jungle does not destroy the tree structure. Jungle develops as a scalable database. The structure of the game like the structure of the web. -in this thesis. - +This paper suggests a method to use as a database of game engine Unity. % way to use? how to use? -This paper suggests a method to use as a database of game engine Unity. -Jungle rewrite C\# programming language by written Java. +Jungle rewrite C\# programming language by written Java. % まだかけてない... \end{onecolabstract}] diff -r 10a1f30eb748 -r 7b39f43e4088 presen/slide.html --- a/presen/slide.html Wed Feb 15 09:28:06 2017 +0900 +++ b/presen/slide.html Wed Feb 15 17:20:12 2017 +0900 @@ -86,7 +86,7 @@ @@ -175,180 +175,19 @@
前章ではJungleの概要を記述した。 -本章ではJungleの主なAPIについて紹介する。
- - -Jungleは複数の木を名前を利用して管理しており、名前により作成・編集を行う。
- -// Jungleに新しく木を生成する。木の名前が重複した場合、生成に失敗しnullを返す
-JungleTree createNewTree(string treeName)
-
-// JungleからtreeNameと名前が一致するtreeを取得する。名前が一致するTreeがない場合取得は失敗しnullを返す
-JungleTree getTreeByName(string treeName)
-
-
-
-以下のコードは、Jungleの木を”TreeName”で生成し取得する。
- -JungleTree tree = jungle.createNewTree("GameTree");
-
-
-
-Jungleが保持している木は、複数のノードの集合で出来ている。 -ノードは、自身の子のListと属性名と属性値の組でデータを持つ。 -ノードに対するアクセスは、TreeNodeクラスに記述されているAPIを用いて行われる。
- -// ノードの子供を扱うChildrenオブジェクトを返す
-Children getChildren()
-
-// ノードが保持しているデータを扱うAttribteオブジェクトを返す
-Attribute getAttribute()
-
-
-
-Childrenクラスを利用し、ノードの子どもにアクセスする。
- -// ノードが持っている子どもの個数を返す
-int size()
-
-// ノードが持つ子どもの中から、 変数numで指定された位置にある子ノードを返す
-Either<Error, TreeNode> at(int num)
-
-
-Attributeクラスを利用し、ノードの保持する値にアクセスする。
- -// ノードからKeyで管理されるValueをobject型で返す
-object get(string key)
-
-// ノードからKeyで管理されるValueをstring型で返す
-string getString(string key)
-
-
+Jungleでは例外がある場合、Eitherクラスを用いて行う。
- -を包んで返す。 -失敗した場合ははじめからやり直す。 -以下に例を記述する。
- -Either<Error,TreeNode> either = children.at(2);
-if (either.isA())
- return either.a();
-TreeNode child = either.b();
-
-
-
-
-Jungleの例を記載する。
- -以下のコードは、ルートノードの2番目の子どもから、属性名”name”とペアになっている属性値を取得する。
- -JungleTree tree = jungle.getTreeByName("GameTree");
-TreeNode root = tree.getRootNode();
-Children children = root.getChildren();
-Either<Error,TreeNode> either = children.at(2);
-if (either.isA())
- return either.a();
-TreeNode child = either.b();
-Attribute attribute = child.getAttribute();
-string value = attribute.getstring("name");
-
-
-
-
-Jungleの木の編集はJungleTreeEditorクラスを用いて行われる。
- -JungleTreeEditorクラスには編集を行うために、定義されているAPIを記述する。
- -また、ノードを指定して編集を行う際にNodePathクラスを用いる。
- - -Jungleでは、木のノードの位置をNodePathクラスを使って表す。
- -NodePathクラスはルートノードからスタートし、対象のノードまでの経路を、数字を用いて指し示すことで対象のノードの場所を表す。
- -また、ルートノードは例外として-1と表記される。
+Jungleの構造としては以下の図のようになっている。
// 変数pathで指定した場所にある、ノードの子供の変数posで指定した位置子ノードを追加
-Either<Error, JungleTreeEditor> addNewChildAt( NodePath path, int pos)
-// 変数pathで指定した場所にあるノードに、属性名 変数key 属性値 変数valueのペアで値を挿入
-Either<Error, JungleTreeEditor> putAttribute( NodePath path, string key, object value)
-
-// 変数pathで指定した場所にあるノードが持つ、属性名 変数keyとペアで保存されているデータを削除
-Either< Error, JungleTreeEditor> deleteAttribute( NodePath path, string key)
-
-
-
-
-編集の最後にTreeに対してコミットを行う。
- -// 木へ行った変更をコミット。自分が編集を行っていた間に、他のJungleTreeEditorクラスによって木が更新されていた場合、コミットは失敗
-Either<Error, JungleTreeEditor> commit()
-
-
-
-Jungleはもともと認証管理システムやWeb向けに作られたものである。 これらはすべて木構造をベースとしている。
@@ -456,7 +295,7 @@Haskellでは例外処理はモナド内部で行う設計になっている。 Eitherもその一つである。
@@ -517,7 +356,7 @@前章ではJungle-Sharpのどのように実装したかを述べた。
@@ -537,17 +376,17 @@ゲームのデータにはいくつかの種類が考えられる。
-シーン内に存在するオブジェクトが持つパラメータ。
例えば、プレイヤーのHPや経験値、位置座標などを示す。
-プレイヤーが持つアイテムデータなどを示す。
@@ -561,7 +400,7 @@Jungleには複数の木を持つことができる。
@@ -599,7 +438,7 @@前章では例題となるゲームを作成した。 その上でJungleではデータ型について問題となった。
@@ -629,7 +468,7 @@データを取り出すにはGenericで型を指定する、もしくはas演算子を用いてキャストを行う。 以下に取り出す例を記述する。
@@ -647,7 +486,7 @@本研究の流れは
@@ -657,9 +496,9 @@となった。
+である。
-Jungle-Sharpの実装ではそれほど難しくはなかった。 +
Jungle-Sharpの実装ではJavaと比較的似ている言語であるため、移行する方法を確立した。 C#版のJungleではJavaに劣らない、もしくはそれ以上のパフォーマンスを出すことが出来た。
実際のゲームに合わせたJungleの拡張を行った。
diff -r 10a1f30eb748 -r 7b39f43e4088 presen/slide.md --- a/presen/slide.md Wed Feb 15 09:28:06 2017 +0900 +++ b/presen/slide.md Wed Feb 15 17:20:12 2017 +0900 @@ -67,147 +67,14 @@ Jungleはcommit logを持ち、それを他のノードやディスクに転送することにより、 分散構成と永続性を実現する。 -# JungleのAPI - -前章ではJungleの概要を記述した。 -本章ではJungleの主なAPIについて紹介する。 - - -# Jungleの木 - -Jungleは複数の木を名前を利用して管理しており、名前により作成・編集を行う。 - -``` Java -// Jungleに新しく木を生成する。木の名前が重複した場合、生成に失敗しnullを返す -JungleTree createNewTree(string treeName) - -// JungleからtreeNameと名前が一致するtreeを取得する。名前が一致するTreeがない場合取得は失敗しnullを返す -JungleTree getTreeByName(string treeName) - -``` - -以下のコードは、Jungleの木を"TreeName"で生成し取得する。 - -``` Java -JungleTree tree = jungle.createNewTree("GameTree"); -``` - -# TreeNode - -Jungleが保持している木は、複数のノードの集合で出来ている。 -ノードは、自身の子のListと属性名と属性値の組でデータを持つ。 -ノードに対するアクセスは、TreeNodeクラスに記述されているAPIを用いて行われる。 - -``` Java -// ノードの子供を扱うChildrenオブジェクトを返す -Children getChildren() - -// ノードが保持しているデータを扱うAttribteオブジェクトを返す -Attribute getAttribute() -``` - -# ChildrenとAttribute - -Childrenクラスを利用し、ノードの子どもにアクセスする。 - -``` Java -// ノードが持っている子どもの個数を返す -int size() - -// ノードが持つ子どもの中から、 変数numで指定された位置にある子ノードを返す -Either前章ではJungleの概要を記述した。 -本章ではJungleの主なAPIについて紹介する。
- - -Jungleは複数の木を名前を利用して管理しており、名前により作成・編集を行う。
- -// Jungleに新しく木を生成する。木の名前が重複した場合、生成に失敗しnullを返す
-JungleTree createNewTree(string treeName)
-
-// JungleからtreeNameと名前が一致するtreeを取得する。名前が一致するTreeがない場合取得は失敗しnullを返す
-JungleTree getTreeByName(string treeName)
-
-
-
-以下のコードは、Jungleの木を”TreeName”で生成し取得する。
- -JungleTree tree = jungle.createNewTree("GameTree");
-
-
-
-Jungleが保持している木は、複数のノードの集合で出来ている。 -ノードは、自身の子のListと属性名と属性値の組でデータを持つ。 -ノードに対するアクセスは、TreeNodeクラスに記述されているAPIを用いて行われる。
- -// ノードの子供を扱うChildrenオブジェクトを返す
-Children getChildren()
-
-// ノードが保持しているデータを扱うAttribteオブジェクトを返す
-Attribute getAttribute()
-
-
-
-Childrenクラスを利用し、ノードの子どもにアクセスする。
- -// ノードが持っている子どもの個数を返す
-int size()
-
-// ノードが持つ子どもの中から、 変数numで指定された位置にある子ノードを返す
-Either<Error, TreeNode> at(int num)
-
-
-Attributeクラスを利用し、ノードの保持する値にアクセスする。
- -// ノードからKeyで管理されるValueをobject型で返す
-object get(string key)
-
-// ノードからKeyで管理されるValueをstring型で返す
-string getString(string key)
-
-
+Jungleでは例外がある場合、Eitherクラスを用いて行う。
- -を包んで返す。 -失敗した場合ははじめからやり直す。 -以下に例を記述する。
- -Either<Error,TreeNode> either = children.at(2);
-if (either.isA())
- return either.a();
-TreeNode child = either.b();
-
-
-
-
-Jungleの例を記載する。
- -以下のコードは、ルートノードの2番目の子どもから、属性名”name”とペアになっている属性値を取得する。
- -JungleTree tree = jungle.getTreeByName("GameTree");
-TreeNode root = tree.getRootNode();
-Children children = root.getChildren();
-Either<Error,TreeNode> either = children.at(2);
-if (either.isA())
- return either.a();
-TreeNode child = either.b();
-Attribute attribute = child.getAttribute();
-string value = attribute.getstring("name");
-
-
-
-
-Jungleの木の編集はJungleTreeEditorクラスを用いて行われる。
- -JungleTreeEditorクラスには編集を行うために、定義されているAPIを記述する。
- -また、ノードを指定して編集を行う際にNodePathクラスを用いる。
- - -Jungleでは、木のノードの位置をNodePathクラスを使って表す。
- -NodePathクラスはルートノードからスタートし、対象のノードまでの経路を、数字を用いて指し示すことで対象のノードの場所を表す。
- -また、ルートノードは例外として-1と表記される。
+Jungleの構造としては以下の図のようになっている。
// 変数pathで指定した場所にある、ノードの子供の変数posで指定した位置子ノードを追加
-Either<Error, JungleTreeEditor> addNewChildAt( NodePath path, int pos)
-// 変数pathで指定した場所にあるノードに、属性名 変数key 属性値 変数valueのペアで値を挿入
-Either<Error, JungleTreeEditor> putAttribute( NodePath path, string key, object value)
-
-// 変数pathで指定した場所にあるノードが持つ、属性名 変数keyとペアで保存されているデータを削除
-Either< Error, JungleTreeEditor> deleteAttribute( NodePath path, string key)
-
-
-
-
-編集の最後にTreeに対してコミットを行う。
- -// 木へ行った変更をコミット。自分が編集を行っていた間に、他のJungleTreeEditorクラスによって木が更新されていた場合、コミットは失敗
-Either<Error, JungleTreeEditor> commit()
-
-
-
-Jungleはもともと認証管理システムやWeb向けに作られたものである。 これらはすべて木構造をベースとしている。
@@ -440,7 +279,7 @@Haskellでは例外処理はモナド内部で行う設計になっている。 Eitherもその一つである。
@@ -501,7 +340,7 @@前章ではJungle-Sharpのどのように実装したかを述べた。
@@ -521,17 +360,17 @@ゲームのデータにはいくつかの種類が考えられる。
-シーン内に存在するオブジェクトが持つパラメータ。
例えば、プレイヤーのHPや経験値、位置座標などを示す。
-プレイヤーが持つアイテムデータなどを示す。
@@ -545,7 +384,7 @@Jungleには複数の木を持つことができる。
@@ -583,7 +422,7 @@前章では例題となるゲームを作成した。 その上でJungleではデータ型について問題となった。
@@ -613,7 +452,7 @@データを取り出すにはGenericで型を指定する、もしくはas演算子を用いてキャストを行う。 以下に取り出す例を記述する。
@@ -631,7 +470,7 @@本研究の流れは
@@ -641,9 +480,9 @@となった。
+である。
-Jungle-Sharpの実装ではそれほど難しくはなかった。 +
Jungle-Sharpの実装ではJavaと比較的似ている言語であるため、移行する方法を確立した。 C#版のJungleではJavaに劣らない、もしくはそれ以上のパフォーマンスを出すことが出来た。
実際のゲームに合わせたJungleの拡張を行った。