Eclipse (統合開発環境)
出典: フリー百科事典『ウィキペディア(Wikipedia)』
開発元: | Eclipse Foundation |
---|---|
最新版: | 3.2.2 / 2007/2/12 |
プラットフォーム: | クロスプラットフォーム |
種別: | 統合開発環境 |
ライセンス: | Eclipse Public License |
公式サイト: | www.eclipse.org |
Eclipse(「イクリプス」または「エクリプス」)は統合開発環境(IDE)の一つ。 高機能ながらフリーソフトウェアであり、Javaをはじめとするいくつかの言語に対応する。 Eclipse自体はJavaで記述されている。 名称のEclipseとは「食(蝕)」の意の英語で、日食や月食を指し、Javaを開発した米Sun Microsystems(太陽)との関係を想起させる。
現在のバージョンは3.2.2で、WTPやVisual Editorなどのツールが含まれた、All-In-One-Eclipseが公開されている。
[編集] 歴史
Eclipseの歴史は、1990年後半から始まる。当時の状況は、JBuilder、VisualCafe、そしてIBMのVisualAgeなど第1世代のJava開発ツールが存在している。IBMは様々なプラットフォームの製品を抱えていることから、Javaのマルチプラットフォームの可能性に注目していた。単なるVisualAgeの代替ではなく、IBMや他社のツールを統合するための共通プラットフォームの開発という基本構想の下、1998年11月にIBMカナダでプロジェクトが開始された。開発に携わったのは、VisualAgeの開発を行ったObject Technology International(OTI)研究所である。
その後、IBMはこのプラットフォームに搭載するツールの開発のために組織の編成を行い、さらにオープンソース化することで新しい開発者の引き込みを図った。2001年11月、IBMはEclipseをオープンソース化するとともに、他の組織(Borland、MERANT、QNX Software Systems、Rational Software、Red Hat、SuSE、TogetherSoft、Webgain)と共同で初期の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++やPHP、Perl、C#、D言語、TeX、Python、Ruby、JavaScript、COBOL、AspectJなど多様な言語への対応が可能となっている。
プラグインは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の自動追加、java.util.ResourceBundle
による文字列の外部化、クラス名・メソッド名・変数名の変更(それを参照している部分も自動的に書き換わる)、メソッドの移動や抽出などをウィザード形式で行ってくれる。
[編集] コード編集支援
クラス名・メソッド名・変数名の補完や、import文の整理・自動生成、 必要なthrows節の自動追加、必要なメソッドスケルトンの自動生成などさまざまな編集支援機能を持つ。
[編集] SWT
Eclipseは他のJavaで記述されたIDE(JBuilderやSun 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より快適な場合もわりと多くなってきた。機能的にも比べるのはJFaceである。
SWTはEclipseとは独立して、単独でJavaアプリケーションから利用することもできる。
[編集] 主なプラグイン
[編集] WTP(Web Tools Platform)
Tomcat, Java EEなどのウェブ系開発に必要なものが一通りそろっているEclipse.orgで開発されているプラグイン。 JavaScript, HTML, CSS, XML, JSPのエディタ, データベースエクスプローラー、サーバーエクスプローラーも内蔵。 将来、Ajax開発環境も取り込まれる予定。 Lombozプラグインが原型。
[編集] VE(Visual Editor)
EclipseでAWT/Swing/SWTのGUI開発ができるEclipse.orgから出ているプラグイン。
[編集] Tomcatプラグイン
Java Servlet・JSPコンテナである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)
[編集] 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支援機能のようにSubversionをEclipseで使うことができるプラグイン。
[編集] 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開発を可能にするプラグイン。 主なプラグインとしては、PHPEclipse, PHP-IDE, TruStudioなどがある。
[編集] RDT(Ruby Development Tools)
Ruby開発を可能にするプラグイン。
[編集] RadRails プラグイン
Ruby on Rails開発環境を提供するプラグイン。
[編集] PyDev
Python開発を可能にするプラグイン。
[編集] Monalipse
Eclipseで2ちゃんねるを閲覧できる2ちゃんねるブラウザプラグイン。
[編集] 他の統合環境との比較
- Java EEを用いた商用アプリケーション開発については現時点ではJava EEアプリケーションサーバ固有の機能などについてJBuilder、Sun ONE Studioとは比較できない。
- Javaを使用しているためガベージコレクションが機能するまで莫大なメモリを消費する傾向にあり、快適な開発を行なうには 開発用マシンの搭載メモリ容量に注意する必要がある。
[編集] ライセンス
Eclipse Public License (EPL)が適用される[1]。EPLは、OSI オープンソース・コンソーシアムからオープンソースの認定を受けている。EPLは、Common Public License(CPL)から派生したライセンスである。
[編集] 外部リンク
- http://www.eclipse.org/ - Eclipse 公式サイト
- http://groups.yahoo.co.jp/group/eclipse-ml/ - Eclipse 日本語メーリングリスト
- http://www.eclipsewiki.net/eclipse/ - Eclipse 日本語Wiki 「エクリプス」