# HG changeset patch # User tatsuki # Date 1480425300 -32400 # Node ID 388da5c83f48e39bfccaa1e5e76fba419aaf47a7 # Parent 8512227869d52bec4849b9746ebb79a11239a6b3 change table diff -r 8512227869d5 -r 388da5c83f48 bbs.tex --- a/bbs.tex Tue Nov 29 19:52:37 2016 +0900 +++ b/bbs.tex Tue Nov 29 22:15:00 2016 +0900 @@ -14,10 +14,12 @@ \verb! bname=Layout&path=-1,0,2! } などとなる。 + +以下にJungleTreeブラウザを用いて、ノードを表示するまでの流れを記述する。 \begin{enumerate} \item ユーザーは表示したいノードのパスをURLでJungleTreeブラウザに送る。 \item JungleTreeブラウザは、WEBサーバ内にあるJungleから、対応した木を取得する。 -\item JungleTreブラウザは、パスで指定した位置のノードを返す関数、tree.getNodeOfPath()を用いて、木から表示するノードを取得する。 +\item JungleTreブラウザは、パスで指定した位置のノードを返す関数、{\tt tree.getNodeOfPath()}を用いて、木から表示するノードを取得する。 \item 取得したノードの中身を、JungleTreeブラウザが表示する。 \end{enumerate} diff -r 8512227869d5 -r 388da5c83f48 introduction.tex --- a/introduction.tex Tue Nov 29 19:52:37 2016 +0900 +++ b/introduction.tex Tue Nov 29 22:15:00 2016 +0900 @@ -1,5 +1,3 @@ - - \section{Jungle DBによるインピーダンスミスマッチの解決} プログラム中のデータ構造とRDBの表構造には大きなギャップがある。これはインピーダンスミスマッチと呼ばれている。 例えばRPGゲーム中のユーザが持つアイテムという単純なものでも、RDBではユーザとアイテムの組をキーとする巨大な表として管理することになる。 diff -r 8512227869d5 -r 388da5c83f48 jungle.tex --- a/jungle.tex Tue Nov 29 19:52:37 2016 +0900 +++ b/jungle.tex Tue Nov 29 22:15:00 2016 +0900 @@ -40,12 +40,9 @@ \begin{table}[htb] \begin{center} \caption{Jungleに実装されているAPI} -\begin{tabular}{|l|l|} \hline -{\tt JungleTree createNewTree(String treeName) } & -Jungleに新しく木を生成する。木の名前が重複した場合、生成に失敗しnullを返す。 \\ \hline -{\tt -JungleTree getTreeByName(String treeName)} & - JungleからtreeNameと名前が一致するtreeを取得する。名前が一致するTreeがない場合取得は失敗しnullを返す \\ \hline +\begin{tabular}{|p{12em}|p{12em}|} \hline +{\tt JungleTree createNewTree(String treeName) } & Jungleに新しく木を生成する。木の名前が重複した場合、生成に失敗しnullを返す。 \\ \hline +{\tt JungleTree getTreeByName(String treeName)} & JungleからtreeNameと名前が一致するtreeを取得する。名前が一致するTreeがない場合取得は失敗しnullを返す \\ \hline \end{tabular} \label{jungleAPI} \end{center} @@ -60,11 +57,9 @@ \begin{table}[htb] \begin{center} \caption{TreeNodeに実装されているAPI} -\begin{tabular}{|l|l|} \hline -Children &ノードの子供を扱う \\ -getChildren() &Childrenオブジェクトを返す。 \\ \hline -Attribute &ノードが保持しているデータを \\ -getAttribute() &扱うAttribteオブジェクトを返す。 \\ \hline +\begin{tabular}{|p{8em}|p{14em}|} \hline +{\tt Children getChildren()} & ノードの子供を扱うChildrenオブジェクトを返す。\\ \hline +{\tt Attribute getAttribute()} &ノードが保持しているデータを扱うAttribteオブジェクトを返す。 \\ \hline \end{tabular} \label{TreeNodeAPI} \end{center} @@ -75,31 +70,25 @@ \begin{table}[htbH] \begin{center} \caption{Childrenに実装されているAPI} -\begin{tabular}{|l|l|} \hline -int size() &子供の数を返す。 \\ \hline -Either &ノードが持つ子供の中から、 \\ -\textless Error,TreeNode\textgreater &変数numで指定された \\ -at(int num) &位置にある子どもを返す。 \\ \hline +\begin{tabular}{|p{8em}|p{14em}|} \hline +{\tt int size()} & 子供の数を返す。\\ \hline +{\tt at(int num)} &ノードが持つ子供の中から、 変数numで指定された位置にある子どもを返す。 \\ \hline \end{tabular} \label{Children} \end{center} \end{table} -関数{\tt children.at(int num)}が返すEither\textless Error,TreeNode\textgreater オブジェクトは、{\tt isA() }でErrorかどうかをチェックすることができる。 +関数{\tt children.at(int num)}が返す{\tt Either\textless Error,TreeNode\textgreater} オブジェクトは、{\tt isA() }でErrorかどうかをチェックすることができる。 Errorでない場合は{\tt b()}でTreeNodeオブジェクトを取り出すことができる。 \begin{table}[htbH] \begin{center} \caption{Attributeに実装されているAPI} -\begin{tabular}{|l|l|} \hline -ByteBuffer &ノードが持つ値から、 \\ -get(String key) &属性名 keyとペアの属性値 \\ - &をByteBuffer型で返す。 \\ \hline -String &ノードが持つ値から、\\ -getString(String key) &属性名 key とペアの属性値 \\ - &をString型で返す。 \\ \hline +\begin{tabular}{|p{10em}|p{12em}|} \hline +ByteBuffer get(String key) &ノードが持つ値から、属性名 keyとペアの属性値をByteBuffer型で返す。 \\ \hline +String getString(String key) &ノードが持つ値から、属性名 key とペアの属性値をString型で返す。 \\ \hline \end{tabular} \label{Attribute} \end{center} @@ -126,16 +115,16 @@ \item 変数{\tt children}から2番目の子供を取得する。 \item 2番目の子供が取得できたかを調べる。 \item 取得できていなかった場合{\tt Exception}を投げる。 -\item 取得に成功していた場合、eitherから子ノードを受け取る。 -\item 取得した子ノードからAttributeを取得する。 -\item 取得したAttributeから属性名 nameがペアの値を取得する。 +\item 取得に成功していた場合、{\tt either}から子ノードを受け取る。 +\item 取得した子ノードからAttributeクラスを取得する。 +\item 取得した{\tt attribute}から属性名 {\tt name}がペアの値を取得する。 \end{enumerate} \subsection{NodePath} Jungleでは、木のノードの位置をNodePathクラスを使って表す。 NodePathクラスはルートノードからスタートし、対象のノードまでの経路を、数字を用いて指し示すことで対象のノードの場所を表す。また、ルートノードは例外として-1と表記される。 -NodePathクラスが\textless -1,1,2,3\textgreater を表している際の例を図\ref{NodePath}に記す。 +NodePathクラスが{\tt < -1,1,2,3>} を表している際の例を図\ref{NodePath}に記す。 \begin{figure}[h] \begin{center} \includegraphics[height = 6cm , bb=0 0 568 455]{images/nodePath.pdf} @@ -152,50 +141,32 @@ Jungleの木の編集はJungleTreeEditorクラスを用いて行われる。 JungleTreeEditorクラスには編集を行うために、表\ref{editor}で定義されているAPIが実装されている。 -\begin{table*}[htb] +\begin{table}[htb] \begin{center} \caption{Editorに実装されているAPI} -\begin{tabular}{|l|l|} \hline -Either &変数pathで指定した場所 \\ -\textless Error,JungleTreeEditor\textgreater &にある、ノードの子供の \\ -addNewChildAt( &変数posで指定した位置に\\ -NodePath path, &子ノードを追加する。 \\ -int pos) & \\ \hline -Either &変数pathで指定した場所 \\ -\textless Error,JungleTreeEditor\textgreater &にある、ノードの子供の \\ -deleteChildAt( &変数posで指定した位置の\\ -NodePath path, &子ノードを削除する。 \\ -int pos) & \\ \hline -Either &変数pathで指定した場所 \\ -\textless Error,JungleTreeEditor\textgreater &にあるノードに、 \\ -putAttribute( &属性名 変数key \\ -NodePath path, &属性値 変数valu \\ -String key, &のペアで値を挿入する。 \\ -ByteBuffer value) & \\ \hline -Either &変数pathで指定した場所 \\ -\textless Error,JungleTreeEditor\textgreater &にあるノードが持つ、 \\ -deleteAttribute( &属性名 変数keyとペアで \\ -NodePath path, &保存されているデータを \\ -String key) &削除する。 \\ \hline -Either &変数pathで指定した場所 \\ -\textless Error,JungleTreeEditor\textgreater &にある、ノードの変数num\\ -moveChild( &で指定された位置の子供を\\ -NodePath path &変数moveの方向に\\ -,int num, &移動させる。 \\ -String move) & \\ \hline -Either &ルートノードの上に新しい\\ -\textless Error,JungleTreeEditor\textgreater &ルートノードを追加する\\ -pushPop() &線形のTree等を作る際に\\ - &使用することで計算量を\\ - &O(n)からO(1)にできる。\\ \hline +\begin{tabular}{|p{8em}|p{14em}|} \hline +{\tt Either addNewChildAt( NodePath path, int pos)} & +変数{\tt path}で指定した場所にある、ノードの子供の変数{\tt pos}で指定した位置子ノードを追加する\\ \hline +{\tt Either deleteChildAt( NodePath path,int pos)} & +変数{\tt path}で指定した場所にある、ノードの子供の変数{\tt pos}で指定した位置の子ノードを削除する。 \\ \hline +{\tt Either putAttribute( NodePath path,String key,ByteBuffer value)} & +変数{\tt path}で指定した場所にあるノードに、属性名 変数{\tt key} 属性値 変数{\tt value} のペアで値を挿入する。 \\ \hline +{\tt Either< Error, JungleTreeEditor> deleteAttribute( NodePath path,String key)}& +変数{\tt path}で指定した場所にあるノードが持つ、属性名 変数{\tt key}とペアで保存されているデータを削除する。\\ \hline +{\tt Either moveChild( NodePath path,int num,String move)} & +変数{\tt path}で指定した場所にある、ノードの変数numで指定された位置の子供を変数{\tt move}の方向に移動させる。 \\ \hline +{\tt Either pushPop()} & +ルートノードの上に新しいルートノードを追加する線形のTree等を作る際に使用することで計算量をO(n)からO(1)にできる。\\ \hline +{\tt Either success()} & +木へ行った変更をコミットする。自分が編集を行っていた間に、他のJungleTreeEditorクラスによって木が更新されていた場合、コミットは失敗する。 \\ \hline \end{tabular} \label{editor} \end{center} -\end{table*} +\end{table} 編集後に返されるJungleTreeEditorクラスは、編集後の木構造を保持しているため、編集前の木構造を保持しているJungleTreeEditorクラスとは別のオブジェクトである。 -編集を行った後は、関数editor.success()で今までの編集をコミットすることができる。他のJungleTreeEditorクラスによって木が更新されていた場合はコミットは失敗し、{\tt success()}は{\tt Error}を返す。 +編集を行った後は、関数{\tt editor.success()}で今までの編集をコミットすることができる。他のJungleTreeEditorクラスによって木が更新されていた場合はコミットは失敗し、{\tt success()}はErrorを返す。 その場合は、木の編集を最初からやり直す必要がある。 以下にJungleTreeEditorクラスを用いて、木の編集を行うサンプルコードを記述する。 @@ -211,10 +182,10 @@ \end{lstlisting} \begin{enumerate} -\item 関数tree.getEditor()で編集を行う木から、JungleTreeEditorクラスを取得する。 +\item 関数{\tt tree.getEditor()}で編集を行う木から、JungleTreeEditorクラスを取得する。 \item 次に変更するノードの場所を示す、NodePathクラスを作成する。 -\item 関数editor.addNewChildAt()を用いて、変数pathで指定したノードの子供の0番目に子ノードを追加する。 -\item 返り値の変数EitherがErrorクラスを保持していないか(編集に失敗していないか)を確認する。 +\item 関数{\tt editor.addNewChildAt()}を用いて、変数{\tt path}で指定したノードの子供の0番目に子ノードを追加する。 +\item 返り値の変数{\tt either}がErrorクラスを保持していないか(編集に失敗していないか)を確認する。 \item Errorクラスを保持していた場合Exceptionを投げる。 \item 編集に成功していた場合、編集後のJungleTreeEditorクラスを取得する。 \item 取得したJungleTreeEditorクラスを用いて木の変更をコミットする。 diff -r 8512227869d5 -r 388da5c83f48 maTrix.tex --- a/maTrix.tex Tue Nov 29 19:52:37 2016 +0900 +++ b/maTrix.tex Tue Nov 29 22:15:00 2016 +0900 @@ -20,11 +20,11 @@ \end{figure} 図\ref{fig:PersonTree}の人物Treeには、maTrixで使用される人物のデータが記述されている。 -属性名 element 属性値 Personsのデータを持つNode1は、人物Treeのルートノードである。このノードの下に各人物のデータが格納されている(図\ref{fig:PersonTree}ではNode2、Node3が該当する)。 -Node2、Node3が持つ、属性名 element、属性値 Personの値は、Node2、Node3が人物のデータを持っていることを表す。 -またNode2が持つ、属性名 Person-id、属性値 p:1 はこのノードに記述された人物のmaTrix上でのIDを表す。 +属性名 {\tt element} 属性値 {\tt Persons}のデータを持つNode1は、人物Treeのルートノードである。このノードの下に各人物のデータが格納されている(図\ref{fig:PersonTree}では{\tt Node2}、{\tt Node3}が該当する)。 +{\tt Node2}、{\tt Node3}が持つ、属性名 {\tt element}、属性値 {\tt Person}の値は、{\tt Node2}、{\tt Node3}が人物のデータを持っていることを表す。 +また{\tt Node2}が持つ、属性名 {\tt Person-id}、属性値 {\tt p:1} はこのノードに記述された人物のmaTrix上でのIDを表す。 他の役職、役割、権限といった木構造は、このIDを用いて参照を行うことで組織構造を構築する。 -Node2、Node3は子ノードに人物の名前、参照する他の木構造のId等のデータを持つが、今回は省略している。 +{\tt Node2}、{\tt Node3}は子ノードに人物の名前、参照する他の木構造のId等のデータを持つが、今回は省略している。 また、maTrixは自身のデータをXML形式で書き出すことが可能である。書き出したデータをJungleに格納するために汎用XMLReaderの実装も行った。 @@ -54,16 +54,16 @@ \subsection{検索APIの実装} Indexを実装したことにより、Idを用いた組織構造の表現は可能になった。 -しかし、組織構造に対する問い合わせを行うための検索APIが実装されていなかったため、属性名 key 属性値 valueの組で検索を行うAPIの実装を、木の走査を行うTraverserクラス内に、lambda式を用いて行った。 +しかし、組織構造に対する問い合わせを行うための検索APIが実装されていなかったため、属性名 {\tt key} 属性値 {\tt value}の組で検索を行うAPIの実装を、木の走査を行うTraverserクラス内に、lambda式を用いて行った。 以下に検索を行う関数findの定義を記述する。 \begin{lstlisting}[frame=lrbt,label=query,numbers=left] public Iterator find(Query query, String key, String searchValue); \end{lstlisting} -find関数は引数に、Query query、String key、String valueの3つの引数を取り、条件に一致したノードのIteratorインタフェースを返す。 -第1引数には、探索の条件を記述する関数boolean comdition(TreeNode)を定義したInterface Queryを。 -第2、第3引数の、String key、String valueはIndexを用いた絞込みに使用する。find関数の使用例を以下に記す +関数{\tt find}は引数に、{\tt Query query}、{\tt String key}、{\tt String value}の3つの引数を取り、条件に一致したノードのIteratorインタフェースを返す。 +第1引数には、探索の条件を記述する関数{\tt boolean comdition(TreeNode)}を定義した{\tt Interface Query}を。 +第2、第3引数の、{\tt String key、String value}はIndexを用いた絞込みに使用する。{\tt 関数find}の使用例を以下に記す \begin{lstlisting}[frame=lrbt,label=find,numbers=left] InterfaceTraverser traverser @@ -84,15 +84,15 @@ \begin{enumerate} \item 木の走査を行うTraverserクラスを取得する。 -\item Indexからfindの第2、第3引数である、属性名 element、属性値 Personの組のデータを持つNodeを取得する。 +\item Indexから{\tt find}の第2、第3引数である、属性名 {\tt element}、属性値 {\tt Person}の組のデータを持つノードを取得する。 -\item (2)で取得したノードを第1引数のQueryに渡す。 +\item 取得したノードを第1引数のQueryに渡す。 -\item 引数のノードから関数getAttributes().getString("Personid")で属性名 Personidとペアになっている属性値を取得する。 +\item 引数のノードから関数{\tt getAttributes().getString("Personid")}で属性名 {\tt Personid}とペアになっている属性値を取得する。 -\item 属性値がnullだった場合、このNodeには属性名がPersonidの組のデータは存在しないので、falseを返し次のNodeの評価を行う。 +\item 属性値が{\tt null}だった場合、このノードには属性名が{\tt Personid}の組のデータは存在しないので、{\tt false}を返し次のノードの評価を行う。 -\item 属性値がnullでなかった場合、p:2と一致するかどうかを調べ結果を返す。 +\item 属性値が{\tt null}でなかった場合、{\tt p:2}と一致するかどうかを調べ結果を返す。 \end{enumerate} diff -r 8512227869d5 -r 388da5c83f48 renderingEngine.tex --- a/renderingEngine.tex Tue Nov 29 19:52:37 2016 +0900 +++ b/renderingEngine.tex Tue Nov 29 22:15:00 2016 +0900 @@ -16,19 +16,18 @@ \end{figure} -RootNodeはContentのtitle、日時、Renderingする時に参照するLayout名を持つ。 +RootNodeはContentの{\tt title}、日時、レンダリングする時に参照するLayout名を持つ。 そして子ノードがContentsの本文等のデータを持つ。 -表\ref{NodeAttribute}にNodeが保持しているContentsの一覧を記述する。 +表\ref{NodeAttribute}にノードが保持しているContentsの一覧を記述する。 \begin{table}[htb] \begin{center} \caption{ノードが保持しているContents一覧} - \begin{tabular}{|c|c|} \hline + \begin{tabular}{|p{8em}|p{12em}|} \hline 属性名 & 属性値 \\ \hline title & 日記のタイトル \\ \hline date(rootNode) & 日記の日時 \\ \hline - type & そのノードが保持しているContextType \\ - & text(日記本文) or image(画像データ) \\ \hline + type & そのノードが保持しているContextType。 text(日記本文) or image(画像データ) \\ \hline date(image) & 画像の保存日時 \\ \hline fileName & 画像の名前 \\ \hline \end{tabular} @@ -40,7 +39,7 @@ htmlの出力形式を定義するLayoutは、複数のComponentからなる。 表\ref{LayoutTreeTable}に、LayoutTreeの主要要素を記す。 Layout Treeには図\ref{layoutTree}のようにデータを格納した。 -また、LayoutTreeはノード同士がNodeNameを用いて参照を行う。 +また、LayoutTreeはノード同士が{\tt NodeName}を用いて参照を行う。 \begin{figure}[hH] @@ -55,37 +54,29 @@ \begin{table}[htbH] \begin{center} \caption{LayoutTreeの主要な要素} -\begin{tabular}{|l|l|} \hline +\begin{tabular}{|p{8em}|p{12em}|} \hline 属性名 & 属性値 \\ \hline -NodeName &ノードの名前。 \\ - &ノード同士の参照時に用いられる。\\ \hline +NodeName &ノードの名前。ノード同士の参照時に用いられる。\\ \hline displayComponent &参照するノードの名前。 \\ -Name &この属性名で取得できる値を持つ \\ - &NodeNameを持つノードを参照する。\\ \hline -use &このノードが、どのContentsに \\ - &対してのLayoutを持つかを。 \\ - &記述するタグ。表\ref{tag}に\\ - &タグとContentsの対応を記述する。\\ \hline -その他 &css等と同じ様な記述を行う。 \\ - &例 属性名 font \\ - & 属性値 fontSize \\ - &など \\ \hline +Name &この属性名で取得できる値を持つNodeNameを持つノードを参照する。\\ \hline +use &このノードが、どのContentsに対してのLayoutを持つかを記述するタグ。表\ref{tag}にタグとContentsの対応を記述する。\\ \hline +その他 &css等と同じ様な記述を行う。 例 属性名 {\tt font} 属性値 {\tt fontSize}など \\ \hline \end{tabular} \label{LayoutTreeTable} \end{center} \end{table} -Layout Treeは、ルートノードに属性名 NodeName 属性値 displayinformation の値を持つ(図\ref{layoutTree}ではNode1が該当する)。 -ルートノードは、子ノードに複数のComponentを保持する(図\ref{layoutTree}ではNode2、Node3がそれに該当する)。 -Node2は、"use" = "image"のペアでタグを保持しているため、Contents Treeの日記の画像表示に対応する記述が行われている。 -Node3は、"use" = "text"のペアでタグを保持しているため、Contents Treeの日記の本文に対応する記述が行われている。 +Layout Treeは、ルートノードに属性名 {\tt NodeName} 属性値 {\tt displayinformation} の値を持つ(図\ref{layoutTree}では{\tt Node1}が該当する)。 +ルートノードは、子ノードに複数のComponentを保持する(図\ref{layoutTree}では{\tt Node2}、{\tt Node3}がそれに該当する)。 +{\tt Node2}は、{\tt "use" = "image"}のペアでタグを保持しているため、Contents Treeの日記の画像表示に対応する記述が行われている。 +{\tt Node3}は、{\tt "use" = "text"}のペアでタグを保持しているため、Contents Treeの日記の本文に対応する記述が行われている。 表\ref{tag}にタグとContentsの対応を記述する。 \begin{table}[htb] \begin{center} \caption{tagとcontentsの対応} -\begin{tabular}{|c|c|} \hline +\begin{tabular}{|p{8em}|p{12em}|} \hline tag & content \\ \hline image & 画像の表示 \\ \hline cals & table \\ \hline @@ -99,7 +90,7 @@ -layoutが複数のComponentを参照する際は図\ref{multiComponent}のような木構造を構築する(この木はLayoutTreeの一部であり、本来は参照先のノード等が存在している)。 +Layoutが複数のComponentを参照する際は図\ref{multiComponent}のような木構造を構築する(この木はLayoutTreeの一部であり、本来は参照先のノード等が存在している)。 \begin{figure}[h] \begin{center} \includegraphics[height = 8cm , bb=0 0 913 1105]{images/multiComponent.pdf} @@ -108,29 +99,29 @@ \end{center} \end{figure} -図\ref{multiComponent}の例では、diaryMulti@componentはdiaryText@componentとdiaryImage@componentを参照している。 +図\ref{multiComponent}の例では、{\tt diaryMulti@component}は{\tt diaryText@component}と{\tt diaryImage@component}を参照している。 以下に図\ref{contentTree}のContentsTree、図\ref{multiComponent}のLayoutTreeの2つを使用した、レンダリングの流れを記述する。 \begin{enumerate} -\item ContentsTreeのルートノードは、属性名 component 属性値 Multi@Componentの組を持つ。よって今回はLayoutTreeの、NodeNameがMulti@Componentのノードに記述されたルールに則ってレンダリング。 +\item ContentsTreeのルートノードは、属性名 {\tt component} 属性値 {\tt Multi@Component}の組を持つ。よって今回はLayoutTreeの、NodeNameが{\tt Multi@Component}のノードに記述されたルールに則ってレンダリング。 -\item ContentTreeは、属性名 component 属性値 Multi@Componentの組を持つノード、つまりNode2を参照する。 +\item ContentTreeは、属性名 {\tt component} 属性値 {\tt Multi@Component}の組を持つノード、つまり{\tt Node2}を参照する。 -\item Node2はこれ以上データを持たないので、子ノードであるNode3、Node4に記述されているデータの参照を行う。 +\item {\tt Node2}はこれ以上データを持たないので、子ノードである{\tt Node3、Node4}に記述されているデータの参照を行う。 -\item Node3は属性名 displayComponentName 属性名 dialyImage@Componentの組を持つため、NodeNameがdialyImage@Componentのノードを参照する。 +\item {\tt Node3}は属性名 {\tt displayComponentName} 属性名 {\tt dialyImage@Component}の組を持つため、NodeNameが{\tt dialyImage@Component}のノードを参照する。 \item レンダリングエンジンは、参照先のノードに記述されたルールに則ってHtmlを生成する。 -\item Node3は、これ以上データを持たないため、次はNode4を参照する。 +\item {\tt Node3}は、これ以上データを持たないため、次は{\tt Node4}を参照する。 -\item Node4は属性名 displayComponentName 属性名 dialyText@Componentの組を持つため、NodeNameがdialyText@Componentのノードを参照する。 +\item {\tt Node4}は属性名 {\tt displayComponentName} 属性名 {\tt dialyText@Component}の組を持つため、NodeNameが{\tt dialyText@Component}のノードを参照する。 \item レンダリングエンジンは、参照先のノードに記述されているルールに則ってhtmlを生成する。 \end{enumerate} -(4)、(7)で参照しているノードに関しては、図\ref{layoutTree}のNode2、Node3の様な記述が行われている。 +(4)、(7)で参照しているノードに関しては、図\ref{layoutTree}の{\tt Node2、Node3}の様な記述が行われている。 \subsection{Layout Treeのデータ設計} Jungleは汎用の木構造を持つので、データベースを特に設計しなくても、あるがままの形で格納することが可能である。 @@ -155,21 +146,21 @@ \end{figure} -図\ref{goodLayoutTree}のTreeは、1つのNodeにRenderingに必要な値が全て格納されている。 -そのため、Renderingを行う際、複数のNodeをまたぐ必要が無く、簡潔にコードを書くことができる。 +図\ref{goodLayoutTree}のTreeは、1つのノードにレンダリングに必要な値が全て格納されている。 +そのため、レンダリングを行う際、複数のノードをまたぐ必要が無く、簡潔にコードを書くことができる。 -一方、図\ref{badLayoutTree}のTreeはRenderingする際に必要な値が複数Nodeに分散されて保存されている。 -そのため、全てのNodeを参照し、値を集める処理を行う必要があり、コードの可読性が下がり余計な処理も増えてしまった。 +一方、図\ref{badLayoutTree}の木はレンダリングする際に必要な値が複数ノードに分散されて保存されている。 +そのため、全てのノードを参照し、値を集める処理を行う必要があり、コードの可読性が下がり余計な処理も増えてしまった。 \subsection{性能評価} 本節では、図\ref{goodLayoutTree}の木と図\ref{badLayoutTree}を使った2つのRenderinEngineの性能測定を行い、木の構造が実行速度にどれだけ影響するかを確かめる。 -測定は100000回のRenderingRequestを処理するまでの時間の比較で行う。 +測定は100000回のレンダリングリクエストを処理するまでの時間の比較で行う。 測定結果を表\ref{BenchMark}に記す。 -これより、設計を行った木の方が高速にRenderingを行えている。 +これより、設計を行った木の方が高速にレンダリングを行えている。 \begin{table}[htb] \begin{center}