view mid-thesis.tex @ 8:7edffff4840b

tweak
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Mon, 21 Oct 2019 14:57:12 +0900
parents 2ab80d19b439
children 10910b380fe4
line wrap: on
line source

\documentclass[twocolumn,twoside,9.5pt]{jarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{picins}
\usepackage{fancyhdr}
\usepackage{abstract}
\usepackage{here}
\usepackage{url}
%\pagestyle{fancy}
\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\begin{document}
\title{分散フレームワークChristieを用いたremote editor\\ Remote editor using distributed framework Christie}

\author{165713F 一木貴裕 {}{} 指導教員 : 河野真治}
\date{}
\maketitle
\thispagestyle{fancy} 

\section{研究背景}
近年、情報社会の発展にともないプログラミングを始めとしたIT技術に対する注目が集まっている。特定の場所に赴かずとも仕事を行うことができるリモートワークの増加、互いのいる場所を問わず画面越しに対話が行える遠隔会議、小学校教育の一環にプログラミングを取り組むといった動きがその一例と言える。これらの取り組みをより発展させる方法としてremote editorの開発を考案した。\\
 開発するremote editorは異なるマシン上のtext editorをを接続し、異なるエディタ間でも通信が行えるよう編集コマンドを統一する共通プロトコルを用いる。接続された一つのマシン上のエディタで編集を行うと、編集位置と内容を逐次 共通の編集コマンドに変換する。変換されたコマンドを接続ネットワークに送信することで遠隔でのテキスト編集を行う。\\
 このremote editorは先行研究として参考文献\cite{rep}が存在する。先行研究ではネットワークをリング型で構成しトークンを巡回させていたが、芳しい結果が得られなかった。これらの反省点を踏まえ本研究ではスター型ネットワークを用いることでremote editorの高速化を計る。また当研究室で開発している分散フレームワークChristieを用いることにより、エディタ間の通信の構成を行い、Christieの実用性の検討と証明を行う。\\
 Christieはユーザーが分散プログラムを行う際、並列で動く資源など複雑性を緩和しながらプログラムを書き上げることができる構造となっている。Christieは接続された異なるノード間において互いのキーの差し合いだけで通信を行うことができ、remote editorの通信を手軽に実現することができる。\\
\section{テキストエディタ}
リモートエディタは共通プロトコルが対応するエディタが保持するバッファを開いて編集することができる。ネットワーク上の一つのバッファが編集されると他のバッファにも変更が反映され、お互いのバッファを編集し合うことができる。\\

\subsection{共通プロトコルのコマンド}
共通プロトコルの編集コマンドはinsertとdeleteの二種類しか存在しない。この二種のコマンドを用いエディタ間の協調動作を実現する。
\begin{itemize}
  \item insert:
  バッファに挿入された内容とオフセット位置をキーとし、他のバッファへ送信し反映させる。
  \item delete:
  バッファで削除されたオフセット位置をキーとし、他のバッファへ送信し反映させる。
\end{itemize}
\subsection{編集位置の相違とその解消}
共通プロトコルとエディタ間で生じる相違の解消について説明する。エディタ同士のコマンドの送信はそれぞれが独立して行うため、編集対象の領域にエディタ間で相違が生じる場合がある。例としてエディタが一対一の接続となっている時の相違を図\ref{fig:diff_off}を使用して解説する。\\
 編集対象は各オフセット番号に同じ値の数字が入っているものとする。EditorAではオフセット番号3の3という要素を削除(テキストエディタ上のため削除されたオフセットにはその後ろの要素が繰り上げられる。)、EditorBではオフセット番号2にAという要素を挿入するという編集をしたとする。この編集を共通プロトコルとして互いに送信しあった際、本来編集する予定だったオフセットの中身が食い違ってしまい最終的に異なった内容となってしまう。これを防ぐためには
\begin{itemize}
  \item 送信されたコマンドを巡回トークンを用いて一元化する。
  \item 自身が編集したオフセットと受信したコマンドの編集オフセットの位置を比較し、修正する。
\end{itemize}
という手順が必要となる。

\begin{figure}[htpb]
 \begin{center}
  \scalebox{0.3}{\includegraphics{pic/graph/difference_offset.pdf}}
 \end{center}
 \caption{通信によるオフセット位置のずれ}
 \label{fig:diff_off}
\end{figure}

\subsection{スター型ネットワークによる巡回トークン}
スター型で構成されたネットワーク上の巡回トークンについて解説する。スター型とは主要となるサーバーから、接続された他の全てのノードが直接接続される形のネットワークトポロジーである。\\
スター型ネットワークで接続されたリモートエディタにトークンを巡回させコマンドの送信と受信を行う。先行研究のリング型ネットワークと比較したスター型ネットワークの利点として
\begin{itemize}
  \item リング型ではコマンドの一元化を保持するのが難しいが、スター型ではサーバーが中心となるため一元性の保持が容易である。
  \item ノードが障害を起こしても影響がそのノードのみに限られる。
  \item リング型では速度が問題となり遅延が発生していたが、スター型にすることにより改善が期待できる。
\end{itemize}
が挙げられる。

\section{分散フレームワークChristie}
ここでは当研究室が開発している分散フレームワークChristieについて説明する。Christieはjava言語で開発されている。また同じく当研究室で開発している言語Continuation based C(以下CbC)で構成されているGearsOSに組み込まれる予定がある。そのため CbCと似たGearというプログラミング概念が存在する。Gearは以下の四種類が存在する。
\begin{itemize}
  \item CodeGear (以下CG)
  \item DataGear (以下DG)
  \item CodeGearManager (以下CGM)
  \item DataGearManager (以下DGM)
\end{itemize}
CodeGearはクラス、メソッドに相当し、DataGearは変数データに相当する。CodeGearManagerはノードであり、CodeGear, DataGear, CodeGearManagerを管理する。 CodeGearManagerはDataGearを管理するものであり、putという操作により変数データ、つまりDataGearを格納できる。\\
DataGearManagerにはLocalとRemoteの二種がある。Localであれば、LocalのCodeGearManagerが管理しているDataGearManagerに対し、DataGearを格納していく。Remoteであれば、Remote先のCodeGearManagerにDataGearを格納できる。\\
 また、DataGearはアノテーションを付けデータの取り出し方を指定する必要がある。アノテーションにはTakeとPeekの二つがあり、Takeは読み込んだDataGearを保持せず消えるが、PeekはDataGearを保持し続ける。また、RemoteTake,RemotePeekというものもあり、リモート先を指定することにより、RemoteDataGearManagerからデータを取ることができる。\\
 CodeGearはCodeGearManagerによって実行される。ただし、CodeGear内に記述されたDataGearが全て入力される必要がある。もしDataGearが揃わない場合、CodeGearManagerはDataGearが揃うまで待機状態となる。

\section{今後の作業}
現時点ではChristieと同じjava言語で作成したエディタをネットワーク接続し、エディタ同士のやりとりの動作を確立している。また、現在はオフセット番号を取得し同期を行なっているが、emacsなどのエディタは行単位で挿入と削除を行なっているため変更する必要がある。

\nocite{*}
\bibliographystyle{junsrt}
\bibliography{reference}
\end{document}