Eclipse (統合開発環境)
Eclipse(「イクリプス」または「エクリプス」)は、IBMによって開発された統合開発環境 (IDE) の一つ。高機能ながらオープンソースであり、Javaをはじめとするいくつかの言語に対応する。Eclipse自体はJavaで記述されている。
名称のEclipseとは「食(蝕)」の意の英語で、日食や月食を指し、Javaを開発した米Sun Microsystems(太陽)との関係を想起させる。
目次
歴史
Eclipseの歴史は、1990年代後半から始まる。当時の状況は、JBuilder、テンプレート:仮リンク、そしてIBMのVisualAge、PFUのteikadeなど第1世代のJava開発ツールが存在している。IBMは様々なプラットフォームの製品を抱えていることから、Javaのマルチプラットフォームの可能性に注目していた。単なるVisualAgeの代替ではなく、IBMや他社のツールを統合するための共通プラットフォームの開発という基本構想の下、1998年11月にIBMカナダでプロジェクトが開始された。開発に携わったのは、VisualAgeの開発を行ったObject Technology International (OTI) 研究所である。
その後、IBMはこのプラットフォームに搭載するツールの開発のために組織の編成を行い、さらにオープンソース化することで新しい開発者の引き込みを図った。2001年11月、IBMはEclipseをオープンソース化するとともに、他の組織 (Borland、テンプレート:仮リンク、QNX Software Systems、Rational Software、Red Hat、SuSE、テンプレート:仮リンク、テンプレート:仮リンク) と共同で初期の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と呼ばれている。現在では毎年6月に同時リリース (Simultaneous Release)、その後9月と2月にそれぞれSR1とSR2 (Service Release) が行われている。同時リリースにはコードネームが付与されており、3.4まではガリレオ衛星に因んだ名が付けられていたが、3.5で予定されていたIoはI/Oと誤認されるおそれがあるため、ガリレオ衛星発見者のガリレオ・ガリレイよりとった名称であるGalileoへと変更された。また、2010年リリースの3.6はHelios(ギリシア神話の太陽神であるヘーリオス)と名付けられている。なお、Galileoからは頭文字がアルファベット順となるような名称が投票で選ばれている。
Eclipse 3.8は存在するが、3.7のバグフィクス版であること、すでに4.2のリリースが決まっていたことなどからWeb上では公表されていない。
バージョン | リリース日 | コードネーム | 由来 |
---|---|---|---|
3.2 | 2006/06/30 | Callisto | 木星の第4衛星カリスト。ガリレオ衛星の1つ。 |
3.3 | 2007/06/29 | Europa | 木星の第2衛星エウロパ。ガリレオ衛星の1つ。 |
3.4 | 2008/06/25 | Ganymede | 木星の第3衛星ガニメデ。ガリレオ衛星の1つ。 |
3.5 | 2009/06/24 | Galileo | ガリレオ衛星の発見者ガリレオ・ガリレイ。 |
3.6 | 2010/06/23 | Helios | ギリシア神話の太陽神ヘーリオス。 |
3.7 | 2011/06/22 | Indigo | ニュートンがプリズムによって光を7色に分解できることを発見したときに紫の内側の色に付けた名前。藍色。 |
4.2 | 2012/06/27 | Juno | ローマ神話に出てくる、女性と結婚を守護する女神ユーノー。ユーピテル (Jupiter) の妻であり、6月を意味する"June"の由来。 |
4.3 | 2013/06/26 | Kepler | 「ケプラーの法則」で有名なドイツの天文学者ヨハネス・ケプラー。 |
4.4 | 2014/06/25 | Luna | 月を意味する。 |
Eclipseの機能
Eclipseの主な機能は以下のとおり。
プラグイン
機能統合環境にプラグインとしてさまざまな機能を組み込むことができるよう設計されている。その拡張性は非常に高く、Java開発環境自体が標準添付のプラグインとして実装されているほどであり、プラグイン次第でC++やPHP、Perl、C#、D言語、TeX、Python、Ruby、JavaScript、COBOL、AspectJ、Mathematica など多様な言語への対応が可能となっている。
プラグインはJavaで記述され、プラグイン開発環境自体もEclipseに標準で付属している。これは、Emacsがその主要機能を搭載したLisp言語で記述できることと対比できる。Lispの代わりにJavaを用いるEmacsのようなものなのだと例えられることもある。
Eclipse3.0より、プラグインの機構にはOSGiフレームワークの実装であるEquinoxを採用している(Equinox自身もEclipse Foundationの傘下にあるサブプロジェクトである)。このため、EclipseプラグインはOSGiフレームワークに規定されているbundle形式で配布される。この機構はEclipse RCP (Rich Client Platform) においても同様である。
主なプラグインは後述する。
デバッグ・ステップ実行
EclipseにはJava Debug Interface (JDI) を用いたグラフィカルデバッガが含まれている。
バージョン管理システム連携
バージョン管理システムのCVSやSubversion, Git等を使ってソースコード管理を行うことができる。EclipseのCVS機能はコマンドラインのcvsコマンドを呼び出すフロントエンドとして動作するのではなく、自前のコードで直接CVSサーバと通信する(ssh、pserverの両方が利用可能)。
JUnit連携
Javaソースコードから、JUnitテストコードの自動生成、テスト実行を行うことができる。Eclipse 3.2からは、Java SE 5のアノテーションに対応したJUnit 4を使うことが可能になった。
Ant連携
ビルドシステムAntと連携できる。Antは、UNIX系のコマンドmakeを置き換えるプログラムで、Makefileに相当する各ソースコードの依存関係をXMLにより記述する。Antは、Java で書かれており、ウェブサーバで知られるApache Software Foundationプロジェクトで開発されている。EclipseはAntをデフォルトで同梱している。
リファクタリング
getter, setterメソッドの自動生成や、try-catchの自動追加、テンプレート:Javadoc:SEによる文字列の外部化、クラス名・メソッド名・変数名の変更(それを参照している部分も自動的に書き換わる)、メソッドの移動や抽出などをウィザード形式で行ってくれる。
コード編集支援
クラス名・メソッド名・変数名の補完や、import文の整理・自動生成、必要なthrows節の自動追加、必要なメソッドスケルトンの自動生成などさまざまな編集支援機能を持つ。
Eclipse Compiler for Java (ECJ)
JavaDevelopmentToolsに使用されているEclipse独自のJavaコンパイラ。 この為EclipseはJDKが無くてもJavaファイルのコンパイルが可能である。
SWT
テンプレート:Main 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より快適な場合もわりと多くなってきた。
SWTはEclipseとは独立して、単独でJavaアプリケーションから利用することもできる。
JFace
テンプレート:Main SWTの利用時において、生産性を上げるために、JFaceというクラスライブラリがある。Model View Controllerのプログラミングスタイルを支援する。SWTよりも、より抽象化されたデータの取り扱いを可能にする。JFace自体はPure Javaである。
誤解されやすいが、SWTに対するJFaceは、AWTに対するSwingとは大きく異なる。
主なプラグイン
- 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)
- 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ソースコードからバグパターンを検出するプラグイン。
- 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
- Haskell、Objective 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 ToolkitとGoogle App Engineによるウェブアプリケーションのプロジェクト作成、ローカルサーバーでの実行、Googleのインフラストラクチャへのデプロイ、などを行う。
- Force.com IDE
- Salesforce.com社の提供するクラウドプラットフォームのForce.com上で動作するForce.comアプリケーションの開発を可能にするプラグイン。
- Wolfram Workbench
- ウルフラム・リサーチ社の提供する、Mathematica 開発環境を提供するプラグイン。有償。
日本語化
- Babel
- 多言語化のためのEclipseのIncubationプロジェクト。
- Pleiades(Eclipse プラグイン日本語化プラグイン)
- AOP により動的に日本語化するプラグイン。
- Eclipse 日本語化言語パック(サードパーティ版)
- 以前は、IBMが無償で日本語パックを提供していたが、提供されなくなったためBlancoプロジェクトにより作成されている。翻訳内容は、Pleiadesの内容と同じ。
ライセンス
Eclipse Public License (EPL) が適用される[1]。EPLは、OSI オープンソース・コンソーシアムからオープンソースの認定を受けている。EPLは、Common Public License (CPL) から派生したライセンスである。
外部リンク
テンプレート:Integrated development environments テンプレート:FOSS テンプレート:Webオーサリングソフト