changeset 1:37483e2cff1c

Incomplete
author KaitoMaeshiro <aosskaito@cr.ie.u-ryukyu.ac.jp>
date Mon, 31 Jan 2022 12:07:40 +0900
parents d0eaddc27901
children 6f286360a4be
files paper/src/ChildCodeGear.cs paper/src/HelloWorldCG.cs paper/src/ParentCodeGear.cs paper/src/StartHelloWorld.cs paper/src/StartTopologyManager.cs paper/src/StartTopologyNode.cs paper/src/StartTreeTestTopology.cs paper/src/TopologyManager.cs paper/src/TopologyManagerConfig.cs paper/src/TopologyNode.cs paper/text/Eabstract.tex paper/text/Jabstract.tex paper/text/chapter2.tex paper/text/reference.tex paper/thesis.pdf paper/thesis.tex
diffstat 16 files changed, 402 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/ChildCodeGear.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using Christie_net.annotation;
+using Christie_net.codegear;
+using Christie_net.topology;
+
+
+namespace Christie_net.Test.Topology.TreeTestTopology
+{
+    public class ChildCodeGear : CodeGear
+    {
+        [Peek] public TopologyDataGear topoDG;
+
+        public override void Run(CodeGearManager cgm)
+        {
+            Console.WriteLine(topoDG.getNodeName() + " : " + " child accept");
+            List<String> _CLIST = topoDG.getConnectionList();
+            if(_CLIST.Contains("parent")) {
+                GetDgm("parent").Put("childNodeName", topoDG.getNodeName());
+            }else{
+                GetLocalDgm().Put("countNodeNum", 1);
+                cgm.Setup(new ParentCodeGear());
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/HelloWorldCG.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,15 @@
+using System;
+using Christie_net.annotation;
+using Christie_net.codegear;
+
+namespace Christie_net.Test.Example.HelloWorld {
+    public class HelloWorldCG : CodeGear {
+        [Take] public string key_hello;
+    
+        public override void Run(CodeGearManager cgm) {
+            Console.Write(key_hello);
+            cgm.Setup(new HelloWorldCG());
+            cgm.GetLocalDGM().Finish();
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/ParentCodeGear.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,30 @@
+using System;
+using Christie_net.annotation;
+using Christie_net.codegear;
+using Christie_net.topology.node;
+using Christie_net.topology;
+
+
+
+namespace Christie_net.Test.Topology.TreeTestTopology
+{
+    public class ParentCodeGear : CodeGear
+    {
+        [Peek] public TopologyDataGear topoDG;
+        [Peek] public int maxNodeNum;
+        [Peek] public TopologyNodeConfig topologyNodeConfig;
+        [Take] public int countNodeNum;
+        [Take] public String childNodeName;
+
+        public override void Run(CodeGearManager cgm)
+        {
+            Console.WriteLine(topoDG.getNodeName() + " : " + childNodeName + " accept");
+            if(countNodeNum == maxNodeNum){
+                GetDgm(topologyNodeConfig.getManagerKey()).Put("FINISHMESSAGE", new Message());
+            }else{
+                GetLocalDgm().Put("countNodeNum", countNodeNum + 1);
+                cgm.Setup(new ParentCodeGear());
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/StartHelloWorld.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,16 @@
+using Christie_net.codegear;
+
+namespace Christie_net.Test.Example.HelloWorld {
+    public class StartHelloWorld : StartCodeGear {
+    
+        public StartHelloWorld(CodeGearManager cgm) : base(cgm) { }
+
+        public static void Main(string[] args) {
+            CodeGearManager cgm = CreateCgm(10000);
+
+            cgm.Setup(new HelloWorldCG());
+            cgm.GetLocalDGM().Put("key_hello","HelloWorld");
+        
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/StartTopologyManager.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,37 @@
+using Christie_net.codegear;
+using Christie_net.topology.node;
+
+namespace Christie_net.topology.manager {
+    
+    public class StartTopologyManager : StartCodeGear {
+        public StartTopologyManager(string[] args) : 
+            this(CreateCgm(new TopologyManagerConfig(args).localPort), new TopologyManagerConfig(args)){
+        }
+        public StartTopologyManager(TopologyManagerConfig topologyManagerConfig) : 
+            this(CreateCgm(topologyManagerConfig.localPort), topologyManagerConfig){
+        }
+        
+        public StartTopologyManager(CodeGearManager cgm, TopologyManagerConfig topologyManagerConfig) : base(cgm) {
+            cgm.Setup(new TopologyManager());
+            cgm.GetLocalDGM().Put("topologyManagerConfig", topologyManagerConfig);
+        }
+        
+        public StartTopologyManager(TopologyManagerConfig conf, CodeGear startCG) :
+            this(CreateCgm(conf.localPort), conf, startCG){
+
+        }
+
+        public StartTopologyManager(CodeGearManager cgm, TopologyManagerConfig conf, CodeGear startCG) : base(cgm) {
+            cgm.Setup(new TopologyManager());
+            cgm.Setup(new Start());
+            cgm.GetLocalDGM().Put("startCG", startCG);
+            cgm.GetLocalDGM().Put("topologyNodeConfig", conf);
+
+        }
+
+        public static void Main(string[] args) {
+            TopologyManagerConfig topologyManagerConfig = new TopologyManagerConfig(args);
+            new StartTopologyManager(topologyManagerConfig);
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/StartTopologyNode.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,20 @@
+using System;
+using Christie_net.codegear;
+using Christie_net.daemon;
+
+
+namespace Christie_net.topology.node
+{
+    public class StartTopologyNode : StartCodeGear
+    {
+        public StartTopologyNode(CodeGearManager cgm, TopologyNodeConfig conf, CodeGear startCg) : base(cgm)
+        {
+            cgm.GetLocalDGM().Put("startCG", startCg);
+            cgm.GetLocalDGM().Put("topologyNodeConfig", conf);
+            cgm.Setup(new TopologyNode());
+        }
+
+        public StartTopologyNode(TopologyNodeConfig conf, CodeGear startCg) : this(CreateCgm(conf.localPort), conf,
+            startCg) { }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/StartTreeTestTopology.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,38 @@
+using System;
+using System.Net;
+using System.Threading;
+using Christie_net.codegear;
+using Christie_net.topology.manager;
+using Christie_net.topology.node;
+
+
+namespace Christie_net.Test.Topology.TreeTestTopology
+{
+    public class StartTreeTestTopology : StartCodeGear
+    {
+        public StartTreeTestTopology(CodeGearManager cgm) : base(cgm) { }
+
+        public static void Main(String[] args)
+        {
+            int topologyManagerPort = 10000;
+            int topologyNodePort = 10001;
+            int nodeNum = 3;
+
+            String[] managerArg = {"--localPort", topologyManagerPort.ToString(), "--Topology", "tree"};
+            TopologyManagerConfig topologyManagerConfig = new TopologyManagerConfig(managerArg);
+            new StartTopologyManager(topologyManagerConfig);
+
+            for (int i = 0; i < nodeNum; i++) {
+                String[] nodeArg = {
+                    "--managerPort", topologyManagerPort.ToString(),
+                    "--managerHost", "localhost",
+                    "--localPort", (topologyNodePort + i).ToString()};
+                TopologyNodeConfig cs = new TopologyNodeConfig(nodeArg);
+                new StartTopologyNode(cs, new ChildCodeGear()).Put("maxNodeNum", topologyManagerConfig.hasChild);
+                
+            }
+            Thread.Sleep(10000);
+            Console.WriteLine("TopologyManager done");
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/TopologyManager.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using Christie_net.annotation;
+using Christie_net.codegear;
+
+
+namespace Christie_net.topology.manager {
+
+    public class TopologyManager : CodeGear {
+        [Peek] public TopologyManagerConfig topologyManagerConfig;
+        
+        public TopologyManager() {
+        }
+
+        public override void Run(CodeGearManager cgm) {
+            cgm.Setup(new CheckComingHost());
+            GetLocalDgm().Put("absCookieTable", new Dictionary<String, String>());
+            
+            if(topologyManagerConfig.dynamic) {
+                GetLocalDgm().Put("running", true);
+                GetLocalDgm().Put("_STARTMESSAGE", new Message());
+
+                if (topologyManagerConfig.type == TopologyType.Tree) {
+                    GetLocalDgm().Put("parentManager", new ParentManager(topologyManagerConfig.hasChild));
+                    GetLocalDgm().Put("nameTable", new Dictionary<String, HostMessage>());
+                    GetLocalDgm().Put("hostCount", 0);
+                    cgm.Setup(new CreateTreeTopology());
+                    //cgm.setup(new ReceiveDisconnectMessage());
+                }else{
+                    GetLocalDgm().Put("running", false);
+                    //cgm.Setup(new FileParser());
+                    //cgm.Setup(new IncomingHosts());
+                    //cgm.Setup(new ConfigWaiter());
+
+                }
+
+                //cgm.Setup(new CreateHash());
+                cgm.Setup(new TopologyFinish());
+
+                GetLocalDgm().Put("topology", new Dictionary<String, LinkedList<HostMessage>>());
+                GetLocalDgm().Put("createdList", new LinkedList<String>());
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/TopologyManagerConfig.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,34 @@
+using System;
+using Christie_net.daemon;
+
+namespace Christie_net.topology.manager {
+
+    public class TopologyManagerConfig : Config{
+        public Boolean showTime = false;
+        public String confFilePath;
+        public Boolean dynamic = false;
+        public TopologyType type = TopologyType.Tree;
+        public int hasChild = 2;
+
+        public TopologyManagerConfig(String[] args) : base(args) {
+            for (int i = 0; i < args.Length; i++) {
+                if ("--confFile".Equals(args[i])) {
+                    confFilePath = args[++i];
+                } else if ("--topology".Equals(args[i])) {
+                    String typeName = args[++i];
+                    if ("tree".Equals(typeName))
+                    {
+                        type = TopologyType.Tree;
+                    }
+                } else if ("--child".Equals(args[i])) {
+                    hasChild = int.Parse(args[++i]);
+                } else if ("--showTime".Equals(args[i])) {
+                    showTime = true;
+                }
+            }
+
+            if (confFilePath == null) dynamic = true;
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/src/TopologyNode.cs	Mon Jan 31 12:07:40 2022 +0900
@@ -0,0 +1,32 @@
+using Christie_net.annotation;
+using Christie_net.codegear;
+
+
+namespace Christie_net.topology.node
+{
+    public class TopologyNode : CodeGear
+    {
+        [Peek] public TopologyNodeConfig topologyNodeConfig;
+        
+        public TopologyNode() {
+        }
+
+        public override void Run(CodeGearManager cgm) {
+
+            cgm.CreateRemoteDGM(topologyNodeConfig.getManagerKey(),
+                topologyNodeConfig.getManagerHostName(),
+                topologyNodeConfig.getManagerPort());
+
+            HostMessage hostMessage = new HostMessage();
+            hostMessage.setLocalHostAndPort(cgm.localPort);
+            hostMessage.setCookie(topologyNodeConfig.cookie);
+
+            GetDgm(topologyNodeConfig.getManagerKey()).Put("hostMessage", hostMessage);
+
+            
+            cgm.Setup(new IncomingConnectionInfo());
+            cgm.Setup(new ConfigurationFinish());
+
+        }
+    }
+}
\ No newline at end of file
--- a/paper/text/Eabstract.tex	Fri Jan 28 15:25:19 2022 +0900
+++ b/paper/text/Eabstract.tex	Mon Jan 31 12:07:40 2022 +0900
@@ -1,1 +1,7 @@
-ここには英語で要旨を記述する.日本語で記述される卒業論文であってもこの項目を省略することはできない.分量規定はないが,日本語用紙と比較して極端に少ないことがないようにする.
\ No newline at end of file
+In our laboratory, we are developing a distributed framework, Christie. Since Christie is planned to be incorporated into the file system of GearsOS, which is also being developed in our laboratory, it has a concept similar to that of the Continuation based C language used in GearsOS. In addition, it has a function called TopologyManager that forms and manages a network connection Topology on Christie. 
+
+Christie was originally developed in our laboratory to solve the problems of Alice, a distributed framework, and to extend its functions. It has been used in various applications with greatly improved reliability and scalability.
+
+In the previous research\cite{riono}, we are searching for a new communication method that can replace the conventional game communication method, and we are studying the compatibility of Christie with the Unity game engine in order to enable high-speed and secure data synchronization. Since Unity can be programmed in C\#, we are rewriting Christie to C\# to build Christie\#.
+
+In our previous research\cite{riono}, we have not been able to implement all the functions of Christie in Christie\#. One of the unimplemented functions is the TopologyManager, which assigns labels to the nodes that have declared their participation (TopologyNode) to form a Topology, and automatically connects the nodes if necessary. The TopologyNode can also automatically connect nodes if necessary. In order to build an environment where these functions can be used in Christie\#, we will convert the code to C\#.
--- a/paper/text/Jabstract.tex	Fri Jan 28 15:25:19 2022 +0900
+++ b/paper/text/Jabstract.tex	Mon Jan 31 12:07:40 2022 +0900
@@ -1,1 +1,7 @@
-ここには日本語要旨を記述する.分量の目安は全角300文字以上1ページ以内程度である.本文が英語の場合であっても日本語要旨を記述するものとする.
+当研究室では,分散フレームワークChristieを開発している.同じく当研究室で開発しているGearsOSのファイルシステムに組み込まれる予定があるため,GearsOSを構成する言語Continuation based Cと似た概念を持っている.また,TopologyManagerと呼ばれるChristie上にネットワークの接続形態Topologyを形成し管理を行う機能を有する. \\
+
+Christieは元々,当研究室で開発を行なっていた分散フレームワークAliceの問題点を解消,機能面の拡張などを行い今のChristieとなった.これにより信頼性と拡張性が大きく向上し様々な用途で利用されてきた.\\
+
+現在,先行研究\cite{riono}では,従来のゲームの通信方式に変わる新たな通信方法の模索にて,Christieを用いることで高速かつ安全にデータの同期を行えるようにするため,Christieをゲームエンジン Unity\cite{unity}に対応させる研究が行われている.UnityはC\#でプログラミングが可能なためChristieをC\#への書き換えを行いChristie\#の構築を行なっている.\\
+
+先行研究\cite{riono}では,Christie\#にChristieの機能を全て実現できていない.未実装の機能の一つとして,TopologyManagerが挙げられる.TopologyManagerは,Topologyを形成するために,参加を表明したnode(TopologyNode)にlabelの付与を行ったり,必要であればnode同士の接続を自動的に行う機能がある.これらの機能をChristie\#で利用できる環境を構築するためC\#への変換を行う.
--- a/paper/text/chapter2.tex	Fri Jan 28 15:25:19 2022 +0900
+++ b/paper/text/chapter2.tex	Mon Jan 31 12:07:40 2022 +0900
@@ -1,7 +1,10 @@
 \chapter{分散フレームワークChristie}
 
-\section{Christie}
-当研究室で開発を行なっているJava言語で記述された分散フレームワークである.同様に当研究室で開発されているGearsOSを構築している独自のプログラミング言語Continuation based C (以下 CbC 言語) と似たGearと呼ばれるプログラム概念が存在する.GearにはCodeGear(以下CG),DataGear(以下DG),CodeGearManager(以下CGM),DataGearManager(以下DGM)の四つが存在する.
+当研究室で開発を行なっているJava言語で記述された分散フレームワークである.同様に当研究室で開発されているGearsOSを構築している独自のプログラミング言語Continuation based C (以下 CbC 言語) と似たGearと呼ばれるプログラム概念が存在する.また,TopologyManagerと呼ばれるTopologyを形成するために,参加を表明したnode(TopologyNode)にlabelを付与を行ったり,必要であればnode同士の接続を自動的に行う機能がある.
+
+\section{Gear概念}
+
+GearにはCodeGear(以下CG),DataGear(以下DG),CodeGearManager(以下CGM),DataGearManager(以下DGM)の四つが存在する.
 
 
 \begin{itemize}
@@ -14,17 +17,6 @@
 
 CGは従来のプログラムにおけるクラスに相当し,CG内に記述されたkeyに全てのDGが揃った際に初めてそのCGが実行される.
 
-DGは従来のプログラムにおける変数に相当する.DGはJava言語のアノテーションを利用することによって記述でき,Take,Peek,TakeFrom,PeekFromの四つが存在する.
-
-
-\begin{itemize}
-	\item Take 先頭のDGを読み込み,そのDGを削除する.
-	\item Peek 先頭のDGを読み込むが,そのDGは削除されない.
-	\item TakeFrom(Remote DGM name) 先頭のDGを読み込み,DGを削除する.Remote DGM nameを指定することで,その接続先 (Remote) のDGMからTake操作をすることができる.
-	\item PeekFrom(Remote DGM name) 先頭のDGを読み込むが,そのDGは削除されない.Remote DGM nameを指定することで,その接続先 (Remote) のDGMからPeek操作をすることができる.
-\end{itemize}
-
-
 CGMは従来のプラグラムにおけるノードに相当し,主にCG,DG,DGMの管理を行う.
 
 DGMはDGの管理を行うものである.putという操作により変数のkeyと引数にデータを記入することによりDGMにDGを格納することができる.
@@ -41,6 +33,17 @@
 
 
 
+\section{DataGear annotation}
+
+DGは従来のプログラムにおける変数に相当する.DGはJava言語のアノテーションを利用することによって記述でき,Take,Peek,TakeFrom,PeekFromの四つが存在する.
+
+
+\begin{itemize}
+	\item Take 先頭のDGを読み込み,そのDGを削除する.
+	\item Peek 先頭のDGを読み込むが,そのDGは削除されない.
+	\item TakeFrom(Remote DGM name) 先頭のDGを読み込み,DGを削除する.Remote DGM nameを指定することで,その接続先 (Remote) のDGMからTake操作をすることができる.
+	\item PeekFrom(Remote DGM name) 先頭のDGを読み込むが,そのDGは削除されない.Remote DGM nameを指定することで,その接続先 (Remote) のDGMからPeek操作をすることができる.
+\end{itemize}
 
 
 \section{プログラミングの例}
@@ -57,24 +60,6 @@
 
 
 
-
-
-
-\section{Christie\#}
-
-
-
-
-
-
-
-\section{Christie\#への変換例}
-
-
-
-
-
-
 \section{TopologyManager}
 ChristieではTopologyManagerと呼ばれるTopologyを形成するために,参加を表明したnode(TopologyNode)にlabelを付与を行ったり,必要であればnode同士の接続を自動的に行う機能がある.TopologyManagerのTopologyの形成手法として静的Topologyと動的Topologyがある.
 
@@ -95,9 +80,70 @@
 動的Topologyは新たなTopologyNodeが参加を表明するたびに,TopologyManagerからTopologyNodeに対して接続するべきTopologyNodeの情報が渡され順次接続処理が行われる.現在動的に構成されたTopologyはTree型が対応している.
 
 
+\clearpage
+\chapter{Christie\#}
+\section{先行研究の紹介}
+Christie\#は,安田 亮によって行われている研究『継続を使用する並列分散フレームワークのUnity実装』\cite{riono}にて開発されている.Christieの通信方式をUnityで利用し高速かつ安全にデータの同期を行うことを目的とした研究である.この中でChristieをUnityに対応させるべくC\#への書き換えを行なっている.
 
 
 
+\clearpage
+\chapter{Christie\#へのプログラム書き換え例}
+\section{Christie\#への変換}
 
-\chapter{TopologyManagerのChristie\#への書き換え}
+以下のソースコード\ref{StartHelloWorld},\ref{HelloWorldCG}は,\ref{hello_1},\ref{hello_2}をChristie\#上で動作させるべく変換を行なったものである.ソースコード自体は"HelloWorld"を出力するだけのもののためjavaとの違いは少ない.またC\#ではjavaのannotationではなくattributeを使用している\cite{riono}.
+
+\lstinputlisting[caption=StartHelloWorld.cs,label=StartHelloWorld]{src/StartHelloWorld.cs}
+
+
+\lstinputlisting[caption=HelloWorldCG,label=HelloWorldCG]{src/HelloWorldCG.cs}
+
+
+\clearpage
+\chapter{Christie\#へのTopologyManagerの実装}
+
+\section{TopologyManagerを作成する利点}
+分散フレームワークChristieはJava言語で構築されている.そのため基本的にChristieの機能を利用したGUIアプリケーションの開発はそのJAVA言語におけるGUI frameworkを用いることで開発を行わなければならない.単純なwindowアプリであればswingやJavaFXといったframeworkを利用し構築することができた.しかし,ゲーム作成となるとUnityなどのより利便性の高いゲーム作成エンジンがある.
+Christie\#にてTopologyManagerを構築することができれば,Unity上でもTopologyManagerを用いたGUIアプリケーションの開発が可能となる利点がある.
+
+
+\section{主なクラスの変換後と解説}
+%\lstinputlisting[caption=TopologyManagerConfig.cs,label=hello_2]{src/TopologyManagerConfig.cs}
+
+以下のソースコード\ref{StartTopologyManager}は,TopologyManagerConfigからの情報を元にCGMの作成を行い子nodeからの接続待機をする.TopologyManager側が接続したいnodeに接続するのではなく,接続したい子がTopologyManagerにたいして接続を行う形である.
+
+\lstinputlisting[caption=StartTopologyManager.cs,label=StartTopologyManager]{src/StartTopologyManager.cs}
+
+ソースコード\ref{TopologyManager}では,処理を行うLocalのCGMが管理しているDGMに対してputし各クラスにて細かな処理をしている.現在TopologyManagerを起動するにあたって未実装の部分もある.FileParser()などが例だがdynamicにTopologyManagerを動作させるには不要な部分のため今回の実装では省いた.
+
+\lstinputlisting[caption=TopologyManager.cs,label=TopologyManager]{src/TopologyManager.cs}
 
+ソースコード\ref{TopologyNode}では,作成されたCGMここではTopologyManagerのCGMにCreateRemoteDGMにて接続を行いに行く.
+
+\lstinputlisting[caption=TopologyNode.cs,label=TopologyNode]{src/TopologyNode.cs}
+
+
+\section{動的なTree型Topology接続のテスト}
+
+ここではTopologyManagerの接続のテストを行うため,Tree型のTopologyを形成し複数のnodeから動的な接続を行う.\\
+
+説明追加予定
+
+\lstinputlisting[caption=StartTreeTestTopology.cs,label=StartTreeTestTopology]{src/StartTreeTestTopology.cs}
+
+
+
+\lstinputlisting[caption=ChildCodeGear.cs,label=ChildCodeGear]{src/ChildCodeGear.cs}
+
+
+
+\lstinputlisting[caption=ParentCodeGear.cs,label=ParentCodeGear]{src/ParentCodeGear.cs}
+
+
+
+\clearpage
+\chapter{まとめ}
+\section{総括}
+
+\section{今後の課題}
+
--- a/paper/text/reference.tex	Fri Jan 28 15:25:19 2022 +0900
+++ b/paper/text/reference.tex	Mon Jan 31 12:07:40 2022 +0900
@@ -1,41 +1,11 @@
 \begin{thebibliography}{99}
-\bibitem{ref-related-work}
-論文の読み方・書き方, 金森 由博, \url{http://kanamori.cs.tsukuba.ac.jp/docs/how_to_read_and_write_papers.html}, 2021/09/28.
-
-\bibitem{ref-jsps} 
-研究者のみなさまへ~責任ある研究活動を目指して~, 国立研究開発法人科学技術振興機構, \url{https://www.jst.go.jp/researchintegrity/shiryo/pamph_for_researcher.pdf}, 2020. 
-
-\bibitem{ref-ieice} 
-和文論文誌投稿のしおり, 電子情報通信学会, \url{https://www.ieice.org/jpn/shiori/iss_2.html#2.6}, 2021/09/28.
-
-\bibitem{ref-ipsj} 
-論文誌ジャーナル原稿執筆案内, 情報処理学会, \url{https://www.ipsj.or.jp/journal/submit/ronbun_j_prms.html}, 2021/09/28.
-
-\bibitem{ref-journal} 
-著者名, ``論文タイトル,'' 雑誌名, vol, no, page, year.
-
-\bibitem{ref-journal-ex} 
-國田 樹, 遠藤聡志, ``学術論文の出典記載例,'' 知能情報学会誌, vol. 3, no. 2, pp.8-13, 2021.
+\bibitem{riono}
+安田 亮, 河野 真治. 継続を使用する並列分散フレームワークのUnity実装 (2021).
 
-\bibitem{ref-book}
-著者名, ``書籍タイトル,'' (編集者名), 出版社名, 発行都市名, 発行年.
-
-\bibitem{ref-book-ex}
-國田樹, ``著書の出典記載例,'' 知能情報出版, 沖縄, 2021.
-
-\bibitem{ref-proceedings}
-著者名, ``論文タイトル,'' 学会名もしくは会議名, no.論文番号, ページ, 開催都市名, 開催国名, year. 
+\bibitem{nozomi}
+照屋 のぞみ, 河野 真治. 分散フレームワークChristieの設計 (2018).
 
-\bibitem{ref-proceedings-ex}
-國田樹, 遠藤聡志, ``学会論文の出典記載例'' 第2回知能情報国際会議, no.2-1234, pp.1-8, Okinawa, Japan, 2021. 
-
-\bibitem{ref-web}
-著者名(サイト管理者と同一の場合は省略可), Webページタイトル, サイト管理者名等, URL(url命令を使用すること), 参照年月日.  
-
-\bibitem{ref-report1}
-見延庄太郎,理系のためのレポート・論文完全ナビ,講談社, 2016.
-
-\bibitem{ref-report2}
-福地健太郎,理工系のためのよい文章の書き方,翔泳社, 2019.
+\bibitem{unity}
+Unity. https://unity.com/
 
 \end{thebibliography}
Binary file paper/thesis.pdf has changed
--- a/paper/thesis.tex	Fri Jan 28 15:25:19 2022 +0900
+++ b/paper/thesis.tex	Mon Jan 31 12:07:40 2022 +0900
@@ -31,9 +31,12 @@
   lineskip=-0.5ex%
 }
 
+\renewcommand{\lstlistingname}{ソースコード}
+\renewcommand{\lstlistlistingname}{ソースコード目次}
 
-\jtitle{Christie-Sharpによるアプリケーション開発法}
-\title{A construcrion method of distributit application with Christie-Sharp}
+
+\jtitle{Christie-SharpにおけるTopologyManagerの実装}
+\title{Implementation of Topology Manager in Christie-Sharp}
 
 \affiliation{琉球大学工学部工学科知能情報コース}
 \studentid{185722D}
@@ -50,24 +53,28 @@
 % 目次
 \tableofcontents	%Don't remove.
 
+
 % 図目次,図がある場合のみ
 \listoffigures
 
 % 表も軸,表がある場合のみ
 \listoftables
 
+% ソースコード目次
+\lstlistoflistings
+
 % pagecounter settings
 \setcounter{page}{0}	%Don't remove.
 
 % main text
 % introduction
-% \include{./text/introduction}
+%\include{./text/introduction}
 
 % ... 
 \include{./text/chapter2}
 
 
-\chapter{まとめと今後の展望}
+%\chapter{まとめと今後の展望}
 
 \chapter*{謝辞}