Eclipse (統合開発環境)

提供: miniwiki
移動先:案内検索


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

名称のEclipseとは「食(蝕)」の意の英語で、日食月食を指すが、Javaを開発した米Sun Microsystems(太陽)とは無関係である[1]

歴史

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

その後、IBMはこのプラットフォームに搭載するツールの開発のために組織の編成を行い、さらにオープンソース化することで新しい開発者の引き込みを図った。2001年11月、IBMはEclipseをオープンソース化するとともに、他の組織 (ボーランドMERANTEnglish版QNX Software SystemsラショナルソフトウェアレッドハットSuSETogetherSoftEnglish版WebgainEnglish版) と共同で初期の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で予定されていたIoI/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 を意味する。
4.5 2015/06/24 Mars 火星を意味する。
4.6 2016/06/22 Neon 元素の一つ、ネオンを意味する。
4.7 2017/06/28 Oxygen 元素の一つ、酸素を意味する。
4.8 2018/06/27 Photon 光子を意味する。

Eclipseの機能

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

プラグイン

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

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

Eclipse 3.0より、プラグインの機構にはOSGiフレームワークの実装であるEquinoxを採用している(Equinox自身もEclipse Foundationの傘下にあるサブプロジェクトである)。このため、EclipseプラグインはOSGiフレームワークに規定されているbundle形式で配布される。この機構はEclipse RCP (Rich Client Platform) においても同様である。

主なプラグインは後述する。

デバッグ・ステップ実行

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

バージョン管理システム連携

バージョン管理システムCVSSubversionGit等を使ってソースコード管理を行うことができる。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

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

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)
サービス指向アーキテクチャ (Service Oriented Architecture, SOA) 開発を支援するプラグイン。
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
HaskellObjective Caml開発を可能にするプラグイン。Objective Caml関連は、OCaml Development Toolsに引き継がれた(後述)。
OCaml Development Tools (ODT)
Objective Caml開発を可能にするプラグイン。
ADT (Android Development Tools) プラグイン
Googleが開発した携帯電話用プラットフォームであるAndroid用のプロジェクトの作成、ビルド、エミュレータの起動を行うためのプラグインであり、Googleから公式IDEとして認定されていたが、2015年6月に、同年末で開発・サポートを終了することが発表され[2]、実際に開発・サポートが終了した。
Google Plugin for Eclipse
Googleが開発したGoogle Web ToolkitGoogle App Engineによるウェブアプリケーションのプロジェクト作成、ローカルサーバーでの実行、Googleのインフラストラクチャへのデプロイ、などを行う。
Force.com IDE
セールスフォース・ドットコムの提供するクラウドプラットフォームの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) から派生したライセンスである。

出典

  1. Darryl K. Taft (2005年5月20日). “Eclipse: Behind the Name”. eWeek.com. Ziff Davis Enterprise Holdings. . 2014閲覧.
  2. グーグル、「Eclipse」での「Android」アプリ開発のサポートを2015年末で終了”. ASAHI INTERACTIVE, Inc (2015年6月30日). . 2015-8-24閲覧.

外部リンク

テンプレート:Integrated development environments テンプレート:FOSS テンプレート:Webオーサリングソフト


* カテゴリ:Java開発ツール カテゴリ:統合開発環境 カテゴリ:オープンソースソフトウェア