# HG changeset patch # User ichikitakahiro # Date 1571742581 -32400 # Node ID 7ccae721fb385cf298e226ded9bef5da2aa84b0e # Parent feb9b9fdebcc0f12ff963d9a8bd98238b9e4dcf4 delete [command message] diff -r feb9b9fdebcc -r 7ccae721fb38 mid-thesis.pdf Binary file mid-thesis.pdf has changed diff -r feb9b9fdebcc -r 7ccae721fb38 mid-thesis.tex --- a/mid-thesis.tex Mon Oct 21 19:38:40 2019 +0900 +++ b/mid-thesis.tex Tue Oct 22 20:09:41 2019 +0900 @@ -5,6 +5,8 @@ \usepackage{abstract} \usepackage{here} \usepackage{url} +\usepackage{float} +\usepackage{listings} %\pagestyle{fancy} \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 中間発表予稿} \rhead{} @@ -18,7 +20,30 @@ \setlength{\textwidth}{181mm} \setlength{\textheight}{261mm} \setlength{\footskip}{0mm} + \pagestyle{empty} +\lstset{ + language=C, + tabsize=2, + frame=single, + basicstyle={\ttfamily\footnotesize}, % + identifierstyle={\footnotesize}, % + commentstyle={\footnotesize\itshape}, % + keywordstyle={\footnotesize\bfseries}, % + ndkeywordstyle={\footnotesize}, % + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible}, % + xrightmargin=0zw, % + xleftmargin=1zw, % + aboveskip=1zw, + numberstyle={\scriptsize}, % + stepnumber=1, + numbersep=0.5zw, % + lineskip=-0.5ex, +} + \begin{document} \title{分散フレームワークChristieを用いたremote editor\\ Remote editor using distributed framework Christie} @@ -28,43 +53,37 @@ \maketitle \thispagestyle{fancy} -\section{研究背景} -近年、情報社会の発展にともないプログラミングを始めとしたIT技術に対する注目が集まっている。特定の場所に赴かずとも仕事を行うことができるリモートワークの増加、互いのいる場所を問わず画面越しに対話が行える遠隔会議、小学校教育の一環にプログラミングを取り組むといった動きがその一例と言える。これらの取り組みをより発展させる方法としてremote editorの開発を行うことにした。 +\section{複数人によるファイルの同時編集} +情報社会の発展にともないプログラミングを始めとしたIT技術に対する注目が集まっている。特定の場所に赴かずとも仕事を行うことができるリモートワークの増加、互いのいる場所を問わず画面越しに対話が行える遠隔会議、小学校教育の一環にプログラミングを取り組むといった動きがその一例と言える。 + +これらの取り組みをより発展させる方法としてremote editorの開発を行うことにした。プログラミング教育や共同開発に行われる手法としてペアプログラミングが挙げられる。remote editorを実装し、共通のファイルを複数人で同時に操作を可能にすることによりペアプログラミングの効能をより高められると考えた。しかし一人ひとりが使うプログラミングに用いられるエディタは膨大な数が存在する。共同で編集するユーザが環境を合わせる必要なく、自分の慣れ親しんだ環境で編集できるように異なるエディタ間での同期が行えるような機能を実現する。  開発するremote editorは異なるマシン上のtext editorを接続し、異なるエディタ間でも通信が行えるよう編集コマンドを統一する共通プロトコルを用いる。接続された一つのマシン上のエディタで編集を行うと、編集位置と内容を逐次、共通の編集コマンドに変換する。変換されたコマンドを接続ネットワークに送信することで遠隔でのテキスト編集を行う。 - このremote editorは先行研究が存在する\cite{rep}。先行研究ではネットワークをリング型で構成しトークンを巡回させていたが、芳しい結果が得られなかった。これらの反省点を踏まえ本研究ではスター型ネットワークを用いることでremote editorの高速化を計る。また新しく、当研究室で開発している分散フレームワークChristieを用いることにより、エディタ間の通信の構成を行い、Christieの実用性の検討を行う。 + 本研究は先行研究\cite{rep}を参考として進める。先行研究ではネットワークをリング型で構成しトークンを巡回させていたが、ノードごとの整合性の確立が難しい、ネットワーク全体の障害に対する脆弱性の弱さといった問題点が見られた。これらの反省点を踏まえ本研究ではスター型ネットワークを用いることでremote editorの障害耐性を高める。また新しく、当研究室で開発している分散フレームワークChristieを用いることにより、エディタ間の通信の構成を行い、Christieの実用性の検討を行う。 \section{remote editor} リモートエディタは共通プロトコルが対応するエディタが保持するバッファを開いて編集することができる。ネットワーク上の一つのバッファが編集されると他のバッファにも変更が反映され、お互いのバッファを編集し合うことができる。 -\section{共通プロトコルのコマンド} -共通プロトコルの編集コマンドはinsertとdeleteの二種類しか存在しない。この二種のコマンドを用いてエディタ間の協調動作を実現する。 -\begin{itemize} - \item insert: - バッファに挿入された内容とオフセット位置をキーとし、他のバッファへ送信し反映させる。 - \item delete: - バッファで削除されたオフセット位置をキーとし、他のバッファへ送信し反映させる。 -\end{itemize} +\section{編集位置の相違とその解消} +エディタ間の通信で生じる相違について説明する。エディタ同士のコマンドの送信はそれぞれが独立して行うため、編集対象の領域にエディタ間で相違が生じる場合がある。例としてエディタが一対一の接続となっている時に発生しうる相違を図\ref{fig:diff_off}を使用して解説する。 -\section{編集位置の相違とその解消} -共通プロトコルとエディタ間で生じる相違の解消について説明する。エディタ同士のコマンドの送信はそれぞれが独立して行うため、編集対象の領域にエディタ間で相違が生じる場合がある。例としてエディタが一対一の接続となっている時に発生しうる相違を図\ref{fig:diff_off}を使用して解説する。 - - 編集対象は各オフセット番号に同じ値の数字が入っているものとする。EditorAではオフセット番号3の3という要素を削除(テキストエディタ上のため削除されたオフセットにはその後ろの要素が繰り上げられる。)、EditorBではオフセット番号2にAという要素を挿入するという編集をしたとする。この編集を共通プロトコルとして互いに送信しあった際、本来編集する予定だったオフセットの中身が食い違ってしまい最終的に異なった内容となってしまう。これを防ぐためには -\begin{itemize} - \item 送信されたコマンドを巡回トークンを用いて一元化する。 - \item 自身が編集したオフセットと受信したコマンドの編集オフセットの位置を比較し、修正する。 -\end{itemize} -という手順が必要となる。 - + 編集対象は各オフセット番号に同じ値の数字が入っているものとする。EditorAではオフセット番号3の3という要素を削除(テキストエディタ上のため削除されたオフセットにはその後ろの要素が繰り上げられる。)、EditorBではオフセット番号2にAという要素を挿入するという編集をしたとする。この編集を共通プロトコルとして互いに送信しあった際、本来編集する予定だったオフセットの中身が食い違ってしまい最終的に異なった内容となってしまう。これらの問題を解決することのできるエディタ同士の通信方法を確立しなければならない。 \begin{figure}[htpb] \begin{center} - \scalebox{0.3}{\includegraphics{pic/graph/difference_offset.pdf}} + \scalebox{0.4}{\includegraphics{pic/graph/difference_offset.pdf}} \end{center} \caption{通信によるオフセット位置のずれ} \label{fig:diff_off} \end{figure} +\section{document listenerによる編集オフセット番号の読み取り} +エディタ同士の基本通信環境の構成のため、java言語で作成したエディタを使い異なるマシン同士の同期を実現する。自作エディタはjava.swingの機能で構成されており、追記もしくは削除されたオフセット位置とその内容の取得はDocumentListenerを使用している 。 + +\lstinputlisting[label=TextFrame_example, caption=]{pic/sample_code/TextFrame.java} + + + \section{スター型ネットワークによる巡回トークン} スター型で構成されたネットワーク上の巡回トークンについて解説する。 @@ -73,9 +92,8 @@ スター型ネットワークで接続されたリモートエディタにトークンを巡回させコマンドの送信と受信を行う。先行研究のリング型ネットワークと比較したスター型ネットワークの利点として \begin{itemize} - \item リング型ではコマンドの一元化を保持するのが難しいが、スター型ではサーバーが中心となるため一元性の保持が容易である。 + \item リング型ではエディタ同士の変更内容の一元化が難しいが、スター型ではサーバーが中心となるため一元性の保持が容易である。 \item ノードが障害を起こしても影響がそのノードのみに限られる。また、再接続の際はサーバーを参照することで可能となる。 - \item リング型では速度が問題となり遅延が発生していたが、スター型にすることにより改善が期待できる。 \end{itemize} が挙げられる。 diff -r feb9b9fdebcc -r 7ccae721fb38 pic/.DS_Store Binary file pic/.DS_Store has changed diff -r feb9b9fdebcc -r 7ccae721fb38 pic/graph/difference_offset.graffle Binary file pic/graph/difference_offset.graffle has changed diff -r feb9b9fdebcc -r 7ccae721fb38 pic/graph/difference_offset.pdf Binary file pic/graph/difference_offset.pdf has changed diff -r feb9b9fdebcc -r 7ccae721fb38 reference.bib --- a/reference.bib Mon Oct 21 19:38:40 2019 +0900 +++ b/reference.bib Tue Oct 22 20:09:41 2019 +0900 @@ -46,6 +46,15 @@ Title = {巡回トークンを用いた複数人テキスト編集とセッション管理}, Year = {2004}} +@misc{myg, + Author = {宮城 健太}, + Date-Added = {2019-10-22 13:43:20 +0000}, + Date-Modified = {2018-11-14 14:03:24 +0000}, + Howpublished = {IPSJ SIG Technical Report}, + Month = {Merch}, + Title = {Remote Editing Protocolの実装}, + Year = {2008}} + @comment{BibDesk Static Groups{