Eclipse (統合開発環境)

出典: Wikipedio


Template:Infobox Software

Eclipse(「イクリプス」または「エクリプス」)は、IBMによって開発された統合開発環境(IDE)の一つ。高機能ながらオープンソースであり、Javaをはじめとするいくつかの言語に対応する。Eclipse自体はJavaで記述されている。

名称のEclipseとは「食(蝕)」の意の英語で、日食月食を指し、Javaを開発した米Sun Microsystems(太陽)との関係を想起させる。

目次

歴史

Eclipseの歴史は、1990年代後半から始まる。当時の状況は、JBuilderVisualCafe、そしてIBMVisualAgeなど第1世代のJava開発ツールが存在している。IBMは様々なプラットフォームの製品を抱えていることから、Javaのマルチプラットフォームの可能性に注目していた。単なるVisualAgeの代替ではなく、IBMや他社のツールを統合するための共通プラットフォームの開発という基本構想の下、1998年11月にIBMカナダでプロジェクトが開始された。開発に携わったのは、VisualAgeの開発を行ったObject Technology International(OTI)研究所である。

その後、IBMはこのプラットフォームに搭載するツールの開発のために組織の編成を行い、さらにオープンソース化することで新しい開発者の引き込みを図った。2001年11月、IBMはEclipseをオープンソース化するとともに、他の組織(BorlandMERANTQNX Software SystemsRational SoftwareRed HatSuSETogetherSoftWebgain)と共同で初期のEclipse.orgであるEclipse Board of Stewardsを設立する。公開されたEclipseはたちまちのうちに多くの開発者の興味を惹くこととなった。また、2003年の終わりには、Eclipse Board of Stewardsの参加メンバーも80を越えている。

しかし爆発的人気の影で、Eclipseは、IBM以外の他団体から新たなツールが提供されないという問題を抱えていた。それは、IBMがEclipseの制御権を握っているという認識によるものであった。Eclipseの勢いを止めないために、IBMとEclipseを切り離すことが必要とされた。2004年2月2日、Eclipse Board of Stewardsは、Eclipse組織の再構築を発表した。非営利組織Eclipse Foundationの結成と、Eclipseの全てをEclipse Foundationに移管することで、全ての団体や開発者を対等に扱うこととなった。このEclipse Foundationから、Eclipse 3.0、3.1、3.2がリリースされている。現在Eclipse Foundationは、115以上のメンバー企業、50以上のサブプロジェクトを抱えるオープンソース組織に成長している。

2006年、Eclipse Foundationは、Eclipse 3.2に10のオープンソースプロジェクトを合わせたリリースを行った。この製品は、Eclipse Callistoと呼ばれている。

Eclipseの機能

Eclipseの主な機能は以下のとおり。

プラグイン

機能統合環境にプラグインとしてさまざまな機能を組み込むことができるよう設計されている。その拡張性は非常に高く、Java開発環境自体が標準添付のプラグインとして実装されているほどであり、プラグイン次第でC++PHPPerlC#D言語TeXPythonRubyJavaScriptCOBOLAspectJなど多様な言語への対応が可能となっている。

プラグインはJavaで記述され、プラグイン開発環境自体もEclipseに標準で付属している。これは、Emacsがその主要機能を搭載したLisp言語で記述できることと対比できる。Lispの代わりにJavaを用いるEmacsのようなものなのだと例えられることもある。主なプラグインは後述する。

デバッグ・ステップ実行

EclipseにはJava Debug Interface(JDI)を用いたグラフィカルデバッガが含まれている。

CVS連携

バージョン管理システムCVSを使ってソースコード管理を行うことができる。EclipseのCVS機能はコマンドラインのcvsコマンドを呼び出すフロントエンドとして動作するのではなく、自前のコードで直接CVSサーバと通信する(ssh、pserverの両方が利用可能)。

JUnit連携

Javaソースコードから、JUnitテストコードの自動生成、テスト実行を行うことができる。Eclipse3.2からは、Java SE 5のアノテーションに対応したJUnit 4を使うことが可能になった。

Ant連携

ビルドシステムAntと連携できる。Antは、UNIX系のコマンドmakeを置き換えるプログラムで、Makefileに相当する各ソースコードの依存関係をXMLにより記述する。Antは、Java により書かれており、ウェブサーバで知られるApache Software Foundationプロジェクトで開発されている。EclipseはAntをデフォルトで同梱している。

リファクタリング

getter, setterメソッドの自動生成や、try-catchの自動追加、Template:Javadoc:SEによる文字列の外部化、クラス名・メソッド名・変数名の変更(それを参照している部分も自動的に書き換わる)、メソッドの移動や抽出などをウィザード形式で行ってくれる。

コード編集支援

クラス名・メソッド名・変数名の補完や、import文の整理・自動生成、必要なthrows節の自動追加、必要なメソッドスケルトンの自動生成などさまざまな編集支援機能を持つ。

SWT

Template:Main Eclipseは他のJavaで記述されたIDE(JBuilderSun ONE Studioなど)と比べて動作があきらかに軽快である。この軽快さはGUIツールキットにJava標準のSwingやAWT(Abstract Window Toolkit)を使用せず、Eclipse独自のGUIツールキットであるSWT(Standard Widget Toolkit)を採用していることで得られている。

SWTの位置づけはSwingではなくAWTに対応するが、AWTとSWTの違いは、AWTがOSあるいはウィンドウシステムレベルの描画操作をネイティブメソッド群というレイヤ(つまりCあるいはC++で書かれたJNIメソッドのDLL・共有ライブラリエントリ)で抽象化し、それをさらにJavaのAPIで覆い、インタフェースが二重に重ねられているのに比べ、SWTではネイティブのウィンドウシステムのAPIとJNIメソッドがほぼ一対一に対応するように定義されており、JNIの層が量的・質的に非常に薄い、ということである。

言い換えると、ネイティブのウィンドウシステムのAPIレイヤと、JavaのGUIツールキットクラスライブラリとしてのレイヤの間のセマンティックギャップを埋めるのに、AWTではCコードとJavaコードの両方を使用するのに対して、SWTではCの部分が僅少でありJavaコードが実質的に主体である。

AWTにおいて、下位層のウィンドウシステムのAPIをOSを越えて共通のものにみせかけるための、DLLのエントリとして定義されるインターフェース層は、積極的な存在意義が無く、見通しを悪くしており、2回のセマンティクス変換が効率を悪くする可能性があり、柔軟性にかけ、拡張性に劣る。またJNIを使ったCコードというのは単なるCコードよりもはるかに可読性が悪く、デバッグも難しく、開発効率は極めて低い。

SWTではこのセマンティックギャップ吸収、つまりネイティブレベルの機能とJava APIの間の機能マッピングロジックが見通しよくJavaのみで記述されている。またSWTでは問題の切り分けも容易である(AWTではソースの無いDLL中のエラーは基本的にデバッグ不能。SWTでは生じた問題をネイティブAPIを呼び出す等価なCコードに書き換えることができ、問題の切り分けが容易)。

AWTとSWTのどちらが速いのかは実は良くわからないが、見た目や機能上の制約から現時点でAWTでアプリケーションを書くことはほぼありえない。したがって実用的な意味でSWTと速度比較すべきなのはSwingであり、その比較においては明らかにSWTの方が軽快であるし、アプリケーションがそれを実証している。

※注 J2SE1.4登場前の話。ハードウェアアクセラレーションが施されるようになった1.4.1以降はVMの高速化とJNIが相対的にネックになってきたSWTより快適な場合もわりと多くなってきた。

SWTはEclipseとは独立して、単独でJavaアプリケーションから利用することもできる。

JFace

Template:Main SWTの利用時において、生産性を上げるために、JFaceというクラスライブラリがある。Model View Controllerのプログラミングスタイルを支援する。SWTよりも、より抽象化されたデータの取り扱いを可能にする。JFace自体はPure Javaである。

誤解されやすいが、SWTに対するJFaceは、AWTに対するSwingとは大きく異なる。

主なプラグイン

WTP (Web Tools Platform)
TomcatJava EEなどのウェブ系開発に必要なものが一通りそろっているEclipse.orgで開発されているプラグイン。
JavaScriptHTMLCSSXMLJSPのエディタ、データベースエクスプローラー、サーバエクスプローラーも内蔵。
将来、Ajax開発環境も取り込まれる予定。Lombozプラグインが原型。
VE (Visual Editor)
EclipseでAWT/Swing/SWTのGUI開発ができるEclipse.orgから出ているプラグイン。開発は止まっている。
Tomcatプラグイン
Java ServletJSPコンテナであるTomcatと連携できる。Sysdeoプラグイン、LombozプラグインなどによってもTomcatと連携することができる。
JBoss IDE
Java J2EEアプリケーションサーバのJBossとの連携ができる。
UMLプラグイン
UMLユースケース図クラス図シーケンス図コラボレーション図配置図などを編集、およびクラス図などからJavaコードの生成・双方向編集 (MDA)、リバースエンジニアリングなどを行うことができる。
プラグインとしてはOmondo (EclipseUML) プラグインなどがある。
DoJaプラグイン
iアプリのプロジェクトの作成、ビルド、エミュレータの起動を行うことができる。
AJDT (AspectJ Development Tools) プラグイン
Javaアスペクト指向プログラミング言語として拡張したAspectJによるプログラミングを行うことができる。
CDT (C/C++ Development Tooling)
C/C++の開発をできるようにするプラグイン。
DTP (Data Tools Platform)
RDBMSなどによるデータ中心のアプリケーション開発をサポートするプラグイン。
TPTP (Test & Performance Tools Platform)
テスト、モニタリング、トレーシング、プロファイリングなどを可能にするプラグイン。
BIRT (Business Intelligence and Reporting Tools)
レポート、帳票作成をサポートするプラグイン。
DSDP (Device Software Development Platform)
組み込みデバイスソフトウェア開発を支援するプラグイン。
STP (SOA Tools Platform)
SOA(Service Oriented Architecture サービス指向アーキテクチャ)開発を支援するプラグイン。
Checkstyleプラグイン
コーディングスタイルをチェックするCheckstyleをEclipseで使うことができる。
FindBugsプラグイン
Javaソースコードからバグパターンを検出するプラグイン。
Subclipseプラグイン
Eclipseに内蔵されているCVS支援機能のようにSubversionEclipseで使うことができるプラグイン。
Papilioプラグイン
Eclipse上でバグ管理システム (BTS) を実現したプラグイン。従来の代表的なBTS(BugzillaやScarabなど)と違いWebサーバやDBサーバを構築する必要がない。
ByteCode Outline プラグイン
Javaソースコードを編集中にリアルタイムでそのソースコードバイトコードを表示するプラグイン。
m2eclipse
EclipseプロジェクトMaven 2のプロジェクトとしても使うことができ、マウスによるMavenの実行、Mavenリポジトリからライブラリのの自動ダウンロード、自動インストールを可能にするプラグイン。
Maven Repo Search プラグイン
Mavenリポジトリを検索し、検索結果から表示されたライブラリリストからライブラリに合わせた<dependency>タグを生成し、クリップボードに貼り付けるプラグイン
EPIC Perlプラグイン
Perl開発を可能にするプラグイン。
PHPプラグイン
PHP開発を可能にするプラグイン。主なプラグインとしては、PDT (PHP Development Tools)、PHPEclipse、PHP-IDE、TruStudioなどがある。
RDT (Ruby Development Tools)
Ruby開発を可能にするプラグイン。
RadRails プラグイン
Ruby on Rails開発環境を提供するプラグイン。
PyDev
Python開発を可能にするプラグイン。
Monalipse
Eclipseで2ちゃんねるを閲覧できる2ちゃんねるブラウザプラグイン。
EclipseFP
HaskellObjective Caml開発を可能にするプラグイン。Objective Caml関連は、OCaml Development Toolsに引き継がれた(後述)。
OCaml Development Tools(ODT)
Objective Caml開発を可能にするプラグイン。
ADT (Android Development Tools) プラグイン
Google社が開発した携帯電話用プラットフォームであるAndroid用のプロジェクトの作成、ビルド、エミュレータの起動を行う。
Google Plugin for Eclipse
Google社が開発したGoogle Web ToolkitGoogle App Engineによるウェブアプリケーションのプロジェクト作成、ローカルサーバーでの実行、Googleのインフラストラクチャへのデプロイなどを行う。
Force.com IDE
Salesforce.com社の提供するクラウドプラットフォームのForce.com上で動作するForce.comアプリケーションの開発を可能にするプラグイン。

日本語化

Pleiades (Eclipse プラグイン日本語化プラグイン)
AOP により動的に日本語化するプラグイン。
Eclipse 日本語化言語パック (サードパーティ版)
以前は、IBMが無償で日本語パックを提供していたが、提供されなくなったためBlancoプロジェクトにより作成されている。翻訳内容は、Pleiadesの内容と同じ。

その他

  • WTPVisual Editorなどのプラグインを含むAll-In-One-Eclipseが公開されている。
  • Java EEを用いた商用アプリケーション開発におけるサーバ固有の機能などについてJBuilder、Sun ONE Studioとは比較できない。
  • Javaを使用しているためガベージコレクションが機能するまで莫大なメモリを消費する傾向にあり、快適な開発を行なうには 開発用マシンの搭載メモリ容量に注意する必要がある。

ライセンス

Eclipse Public License (EPL)が適用される[1]。EPLは、OSI オープンソース・コンソーシアムからオープンソースの認定を受けている。EPLは、Common Public License(CPL)から派生したライセンスである。

外部リンク

Template:Portal

ca:Eclipse cs:Eclipse (vývojové prostředí) da:Eclipse (program) de:Eclipse (IDE) en:Eclipse (software) es:Eclipse (software) eu:Eclipse fi:Eclipse (IDE) fr:Eclipse (logiciel) he:Eclipse hu:Eclipse id:Eclipse (perangkat lunak) it:Eclipse (informatica) ko:이클립스 lt:Eclipse (kompiuterinė programa) nl:Eclipse (software) nn:Utviklarplattformen «Eclipse» no:Eclipse pl:Eclipse pt:Eclipse (IDE) ro:Eclipse (software) ru:Eclipse (среда разработки) sk:Eclipse sv:Eclipse tr:Eclipse (yazılım) uk:Eclipse vi:Eclipse (môi trường phát triển tích hợp) zh:Eclipse

個人用ツール