annotate eclipse.tex @ 0:39af8ab46cbb

(no commit message)
author one
date Wed, 18 Feb 2009 22:22:25 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
39af8ab46cbb (no commit message)
one
parents:
diff changeset
1 \section{Eclipseへの実装}
39af8ab46cbb (no commit message)
one
parents:
diff changeset
2 Eclipse はオープンソースの統合開発環境 (IDE) の 1 つであり、Java により記述されている。Eclipse はプラグインとして様々な機能を組み込むことができるよう設計されていて、拡張性が高くできている。Eclipse への REP の実装は、この Eclipse プラグインを利用する。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
3 Eclipse プラグインとは、Eclipse に付け加える拡張機能のことである。実際、Eclipse 自身がプラグインの集合体として設計されている。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
4
39af8ab46cbb (no commit message)
one
parents:
diff changeset
5
39af8ab46cbb (no commit message)
one
parents:
diff changeset
6 REPのEclipseへの実装では、次の改善を行った。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
7
39af8ab46cbb (no commit message)
one
parents:
diff changeset
8 まず、以前の実装では、EclipseのTextEditorクラスを継承したクラスを作成して実装を行っていた。この方法ではエディタへの機能拡張が可能である一方(相手の編集に色を付けるなど)、EclipseのJavaEditorの標準の機能である、メソッド補完機能やリファクタリングの機能などを使用することができなかった。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
9 このため、外部からテキストバッファへアクセスする実装に変更し、メソッド補完機能やリファクタリング機能などを使用することを可能にした。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
10
39af8ab46cbb (no commit message)
one
parents:
diff changeset
11 また、以前の実装では、REP部分ソースコードと、EclipseのGUI部分ソースコードが混在した実装となっていた。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
12 REPは今後様々なJavaアプリケーションに実装されることが予想される。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
13 そのため、再利用性の高いソースコードを作成するために、このREP部分とEclipse部分のソースコードの分離を行った。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
14
39af8ab46cbb (no commit message)
one
parents:
diff changeset
15 %実装例を図\ref{fig:implement_eclipse}に示す。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
16 %REP部分(Eclipse非依存部分)のプログラムはREPEditorクラスに記述するそして、Eclipse依存部分の処理(テキストバッファへのアクセスなど)はREPTextインターフェースを実装したEclipseTextクラス記述している。REPEditorでは直接EclipseTextオブジェクトを扱わず、REPTextインターフェースを介してアクセスする。これにより、REP部分のソースコードからEclipse依存部分のソースコードを排除することができる。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
17 %
39af8ab46cbb (no commit message)
one
parents:
diff changeset
18 %\begin{figure}[htpb]
39af8ab46cbb (no commit message)
one
parents:
diff changeset
19 % \begin{center}
39af8ab46cbb (no commit message)
one
parents:
diff changeset
20 % \includegraphics[scale=.3]{figure/implement_eclipse.pdf}
39af8ab46cbb (no commit message)
one
parents:
diff changeset
21 % \end{center}
39af8ab46cbb (no commit message)
one
parents:
diff changeset
22 % \caption{Eclipseへの実装}
39af8ab46cbb (no commit message)
one
parents:
diff changeset
23 % \label{fig:implement_eclipse}
39af8ab46cbb (no commit message)
one
parents:
diff changeset
24 %\end{figure}
39af8ab46cbb (no commit message)
one
parents:
diff changeset
25 %
39af8ab46cbb (no commit message)
one
parents:
diff changeset
26 %この方法を用いて、他のJavaアプリケーションにREPを実装する際は、REPTextインターフェースを実装した、クラスだけを作成することによって、REPを実装することができる。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
27 %実際に次の章で説明するJava版簡易エディタも、この方法を用いて実装している。
39af8ab46cbb (no commit message)
one
parents:
diff changeset
28
39af8ab46cbb (no commit message)
one
parents:
diff changeset
29 今回の実際のEclipseへの実装で比較すると、全体のソースコードが750行程度であるのに対して、Eclipse依存部分のコードは250行程度に抑えられている。