Visual Studio ユーザーのための Eclipse 入門

Visual Studio と Eclipse を比較対照する

Microsoft Visual Studio を使用する開発者にとって Eclipse は新しい世界であり、Eclipse を使い始める際には混乱しがちです。プラグインによるアーキテクチャーやワークスペース中心のプロジェクト構造、そして自動ビルドなどの新しい概念は、最初は直感に反しているように思えます。これらの概念について、またその他 2 つの環境の間でのさまざまな違いについて学び、Eclipse を気軽に使いこなせるようになりましょう。

Genady Beryozkin (mail@genady.org), Software Developer, OCSolutions

Genady BeryozkinGenady Beryozkin は 9 年以上の経験を持つソフトウェア開発者です。彼はさまざまな C++ プロジェクトや C# プロジェクトに Visual Studio を使用したことがあり、また 2001年に最初の 1.0 がリリースされる以前から Java 開発に Eclipse を使ってきています。2002年には Eclipse 用の RMI プラグインを作成しました。これを利用することで、Java の RMI (Remote Method Invocation) 技術を使用したアプリケーションの開発や、デバッグ、実行を効果的に行うことができます。彼はイスラエルの Haifa にある Technion でコンピューター・サイエンスの学位 (summa cum laude: 最優等) と修士号を取得しています。



2007年 8月 21日

IDE (integrated development environment: 統合開発環境) はどれも同じ目的のために作られているため、どの IDE も似ています。しかし、それぞれの IDE の間には違いもあります。その一部はアプリケーションの領域での違いによるものですが、一部は IDE の設計の違いによるものです。

当然ですが、Microsoft Visual Studio と Eclipse は異なっています。Java™ プログラミング言語は C/C++/.NET と異なり、また Java は Eclipse でサポートされた最初の言語でした。両者の違いは、Eclipse が「すべてのものを対象に、特定のものに限定しない」IDE を目的とし、汎用的でカスタマイズ可能な機能を導入していることにも理由があります。また Eclipse は、さまざまなオペレーティング・システムで利用可能です。しかしこの記事の目的は、Eclipse と Visual Studio との間の違いをすべて列挙することではありません。

この記事では IDE の設計の哲学には深入りせず、この 2 つの IDE の間の主な違いを解説します。またこの記事は、これまで Visual Studio を使ってきて Eclipse を使い始めた人なら誰もが対象です。ここでは Eclipse での Java プログラミングを教えるわけではなく、Java 専用の機能に焦点を絞るわけでもありません (Java 専用の機能については「参考文献」に優れたチュートリアルをあげました)。この記事では、両者の間の一般的な違いについて解説します。

Eclipse のワークスペース

ワークスペースのディレクトリー

Eclipse のワークスペースはファイルシステムの中のディレクトリーであり、専用の .metadata サブディレクトリーを含んでいます。.metadata ディレクトリーは、そのワークスペースのすべてのプライベート情報 (設定やキャッシュなど) を含んでいます。通常、.metadata ディレクトリーのファイルは、どれも変更してはいけません。またワークスペース・ディレクトリーは、Eclipse の新しいプロジェクトのデフォルトの場所でもあります。

一般的な意味では、Eclipse のワークスペースは、Visual Studio のソリューションと同じ目的を持った役割を果たしており、最上位レベルにあるプロジェクト、フォルダー、そしてファイルを階層構造で体系づけています。しかし、両者の間にはいくつか大きな違いがあります。Visual Studio のソリューションでは、ソリューションに含まれるプロジェクトを、相互依存関係や構成、バージョン管理情報などによって単純にリストするにすぎません。

Eclipse のワークスペースは、それよりもはるかに多くのことをし、プロジェクト以外の情報 (グローバル・プリファレンス (設定) やウィンドウの配置、検索やナビゲーションの履歴など) の大部分を管理します。Eclipse はワークスペースがないと起動できず、また Visual Studio のソリューションを閉じるようにワークスペースを閉じることはできません。Eclipse ではワークスペースを切り替えることはできますが、多くのユーザーは、すべてのプロジェクトを含む 1 つのワークスペースを使います。

プロジェクトの構造

Eclipse のプロジェクトの構造の起源

プロジェクトの構造とそのファイルシステムの配置が厳密に対応している点は、Java パッケージ群とファイルシステム上でのそれらの配置とが必ず対応している必要があることに影響されたもののようです。Java 言語では、クラス p1.p2.p3.Class1 はディレクトリー p1/p2/p3 になければなりません。

Visual Studio の言語 (C/C++/C#、そしてさらには J# も) は、そうしたディレクトリー構造を強制しません。その結果、プロジェクトの構造とファイルシステム上でのそれらの配置との対応は、Visual Studio ではそれほど厳密ではありません。

Eclipse のプロジェクトと Visual Studio のプロジェクトは、ベースとなるファイルシステムとの関係が異なります。Visual Studio では、プロジェクトはファイルシステム上でのプロジェクトの配置に強く結びつけられていません。c:\temp\ のファイルを d:\work にあるプロジェクトに追加することができ、そして Visual Studio は新しいファイルへの参照を記録し、新しいファイルを他の任意のファイルと同じように開くことができます。フォルダー (例えば「ヘッダー・ファイル」など) は、ファイルシステムのフォルダー (内部的にはそうしたフォルダーはフィルターと呼ばれます) とは対応しません。

Eclipse では、プロジェクトの要素群の構造は、ベースとなるファイルシステムでの要素群の配置に対応している必要があります。例えば、Eclipse のプロジェクト HelloWorld (図 1) が c:\eclipse\workspace\HelloWorld にあるとすると、README.TXT は c:\eclipse\workspace\HelloWorld\src\README.TXT にあります。

図 1. 単純な HelloWorld プロジェクト
単純な HelloWorld プロジェクト

また Eclipse では、プロジェクトのディレクトリーの下にあるファイルとも同期する必要があります。Eclipse のファイルあるいはフォルダーを削除すると、そのファイルあるいはフォルダーはファイルシステムからも削除されます。しかし同じファイルを Windows® Explorer を使って追加したり削除したりすると Eclipse の関連リソースは同期が失われ、一部の操作では Eclipse の動作がおかしくなるかもしれません。そうした場合には、そのプロジェクトの右クリック・メニューから Refreshを選択し、手動でプロジェクトを更新する必要があります。自動的にファイルシステムと同期するように Eclipse に命令するには、Eclipse のプリファレンス (設定) で Refresh automatically オプションを選択します。

Eclipse にリソースをリンクさせる

厳密なワークスペース構造が、すべての出発点でした。ワークスペース・ディレクトリーの外にプロジェクトを保存することはできますが、Eclipse の初期のバージョンでは外部ファイルを開くことすらできませんでした (現在のバージョンでは File > Open File を使います)。UNIX® ユーザーはシンボリック・リンクを使うことで柔軟なプロジェクト構造をエミュレートできるので幸運でしたが、Windows ユーザーにはそうした特権はありませんでした。今日では、Eclipse は IDE レベルでリンク・リソースをサポートしています。

Eclipse でのリンク・リソースは、UNIX のシンボリック・リンクとほとんど同じように動作します。例えば、テスト用の大きな入力ファイルを、元々の場所からコピーせずにプロジェクトに追加するためには、File > New > File を選択し、その結果開かれるウィンドウで Advanced をクリックします (図 2)。リンク・リソースが追加されると、それらのリソースのアイコンの上に小さな矢印が付きます (図 3)。

図 2. リンク・ファイルを追加する
リンク・ファイルを追加する
図 3. HelloWorld プロジェクトのリンク・ファイル
HelloWorld プロジェクトのリンク・ファイル

ヒント: リンク・リソースを使ってパフォーマンスを改善する

リンク・フォルダーを Java 出力フォルダーとして使う

リンク・フォルダーを既存プロジェクトの Java 出力フォルダーとして使うためには、そのプロジェクトがソースと .class ファイルに別々のフォルダーを使っていることを最初に確認する必要があります (別々のフォルダーを使っていない場合には、ソース・ファイルを別のフォルダーに移動する必要があります)。次に Navigator ビューを開き、自動ビルドをオフにし、古い出力フォルダーを削除し、それと同じ名前で新しいリンク・フォルダーを作成し、再度自動ビルドをオンにし、そしてそのプロジェクトを Project > Clean を使ってリビルドします。

リンク・フォルダーは、リモートの場所にある大規模なプロジェクト (ファイル・サーバーや ClearCase の動的ビューなど) を扱う際に便利です。ソース・ファイルは、適切にバックアップされ、その他の管理も適切に行われるというメリットはありますが、生成される .class ファイルをそうしたリモートのストレージに保存する理由はほとんどありません。ソース・ファイルが数百を超えるプロジェクトでは、生成されるファイルをローカル・マシンに保存することで、多くの操作のパフォーマンスを劇的に改善することができます。

Visual Studio の C++ プロジェクトでは、ローカルの場所に中間ディレクトリーを設定することでビルドのパフォーマンスを改善することができます。それと同じ効果を Eclipse で得るには、ローカル・マシンのディレクトリーを指す、リンク出力フォルダーを使います。

「参考文献」には、これらの他に、変数を使って (例えば UNIX では /tmp、Windows では c:\temp の一時ディレクトリーを使って) プラットフォームに依存するリンク・ターゲットを定義する方法などをあげてあります。

ワーキング・セットを使って乱雑さを軽減する

先ほど触れたように、多くの開発者はすべてのプロジェクトを 1 つの Eclipse ワークスペースにロードします。こうすると便利ですが、乱雑になりすぎてしまうことがあります。それを防ぐためには、不必要なプロジェクトを閉じる他に、ワーキング・セット (プロジェクトやフォルダー、クラスなど要素のグループ) を定義する方法があります。Eclipse は、さまざまなビュー (例えば Package Explorer ビューなど) や操作 (例えば検索など) でワーキング・セットを使うことができます。詳しくは「参考文献」を参照してください。

ローカル履歴 (local history)

Eclipse で最も優れた機能の 1 つで Visual Studio にはない機能は、ローカル履歴です。ファイルやクラス、あるいはメソッドを変更するごとに、Eclipse はその変更をローカル履歴に記録します。これによって、あるファイルを、数分前、数時間前、あるいは数日前の状態と比較することができます。もしファイルが削除されている場合には、そのファイルの親のコンテキスト・メニューから Restore from Local History を呼び出すことで、そのファイルを元に戻すことができます。

ローカル履歴はバージョン・コントロールを置き換えるものではなく、履歴日数と割り当てられた保存容量の制限を構成できる、優れたアンドゥ・エンジンのようなものです。


プロジェクトを作成する

Visual Studio の方法では、1 つのプロジェクトが 1 つのプロジェクト・タイプ (C++/C#/J#) を持ちますが、これとは逆に Eclipse のプロジェクトは、ゼロ、1 つ、あるいは複数のネイチャーを持つことができます。例えば、Eclipse の Java プロジェクトは Java ネイチャーを持ち、動的 Web プロジェクト (Eclipse WTP を使って作成されます。「参考文献」を参照) は Java ネイチャーと、(例えとしての) Web ネイチャーを持ちます。プロジェクトのネイチャーは、プロジェクトのビルド中に実行されるビルダーのリストを定義します。例えば、Java ネイチャーは Java ソース・ファイルを .class ファイルにコンパイルするビルダーを追加し、また Web ネイチャーは XML ファイルと HTML ファイルを検証するビルダーを追加します。

プロジェクトを自動的に作成する

Java 以外のプロジェクトを作成する

Java プロジェクトにとって、自動ビルドは完璧です。内部のインクリメンタル・コンパイラー (Eclipse は javac を使いません) が小さなコード変更を素早く処理してくれるからです。ビルドはバックグラウンドで実行されますが、小さな更新によって長々としたコンパイルがトリガーされる場合もあるプロジェクト・タイプ (CDT プロジェクトなど) では、自動ビルド (Project > Build Automatically) をオフにしたいことがあるかもしれません。自動ビルドをオフにした場合には、手動でビルドを実行 (Project > Build All) するか、あるいはアプリケーションを実行する前に Eclipse にビルドさせます。

多くの人は Eclipse に初めて出会うと、Buildコマンドを探します。しかしそうした人達は驚くかもしれませんが、Build コマンドは見つからないか、あるいは無効にされています。これは、Visual Studio や他のいくつかの IDE とは異なり、Eclipse には自動ビルド機能があるためです。Java プロジェクトの場合、Eclipse は Java ファイルが変更されるごとに、その変更によって間接的に影響されるファイルを含めて、関連するファイルをコンパイルします。自動ビルドは、他のファイルに影響するコンパイル・エラーを素早く発見するための素晴らしい方法です。Java 検索など多くの操作は、これらのビルドの結果に依存しています。

カスタム・ビルド

Visual Studio のプロジェクト (主に C++ プロジェクト) は、カスタムのビルド手順を使って標準外ビルド・タスクを実行することがよくあります。カスタムのビルド・コマンドは Visual Studio プロジェクトの単純なコマンドライン命令です。一方 Eclipse では、スタンドアロンのプログラムと Ant ビルド・スクリプトを実行します。例えば、Ant スクリプトを使うことで、プロジェクトのクラスを含む JAR (Java Archive) ファイルをそのプロジェクトがリビルドされるたびにビルドし、デプロイすることができます。また、Ant の build.xml ファイル用のエディターが含まれています。

プロジェクトの properties ウィンドウの Builders ページでカスタムのプロジェクト・ビルダーを構成することができ、また Run > External Tools を選択することで、グローバルなスクリプトを定義して実行することができます。


実行してデバッグする

言語とエントリー・ポイント

Visual Studio の言語 (C++/C#) は 1 つの実行可能ファイルに対して 1 つのエントリー・ポイントしか持つことができません (エントリー・ポイントはリンク時に決定されます)。Java プログラミング言語では、コンパイル時に複数のエントリー・ポイント (main メソッド) を持つことができます。エントリー・ポイントは、プログラムが起動する際にコマンドラインで決定されます。

Eclipse には Visual Studio とは違って起動プロジェクトの概念がありません。この違いを言語の違いによるものとすることもできますが、Visual Studio はプロジェクトごとに 1 つの実行可能プログラムのみを生成し、また、異なるプロジェクト構成に対してのみ、異なる起動パラメーター (コマンドライン引数など) を許可することで、さらにユーザーを制限しています。単に異なるコマンドライン引数を持つためだけに複数の構成を管理するという考え方は、ほとんどの状況では適切ではありません。

Eclipse は、アプリケーションを起動するために使用するパラメーターを、起動構成 (launch configuration) を使って収集します。Java プログラムの場合、そうしたパラメーターは、main() クラスの名前とコマンドライン引数です。Eclipse のプロジェクトの中では、main() メソッドを持つ任意のクラスに対して別々の起動構成を持つことができます。新しい構成は、新しい main クラスを持つアプリケーションを Run > Run As コマンドを使って起動する際に自動的に作成されます。また、Run ウィンドウ (Run > Run) を使って起動構成を作成、削除することもできます。

デフォルトで、起動構成はそのワークスペース専用であり、プロジェクトの一部ではありません。これはつまり、起動構成は他のチーム・メンバーとは共有されないということです。プロジェクトの中に起動構成を保存するためには、Run ウィンドウの Common タブを使います (図 4)。

図 4. 起動構成の場所を変更する
起動構成の場所を変更する

Debug パースペクティブ

Eclipse にはデバッグ・モードがなく、他のパースペクティブと切り替えながら使用できる Debug パースペクティブしかありません。メインの Debug ビューは、実行中の、あるいはデバッグ中の、すべてのプログラムをリストします。またこのビューを使うと、いくつかのプログラムを同時にデバッグすることができます (これは Visual Studio ではもっと困難です)。Eclipse が提供するデバッグ機能の詳細を学ぶために、「Eclipse Platformを使ってデバッグする」(「参考文献」を参照) を読んでください。


Eclipse のプラグイン

Eclipse の最も重要な特徴は、無料でオープンソースの素晴らしい Java IDE であること (これが Eclipse の成功の大きな理由です) に加え、アーキテクチャーがオープンで拡張可能なことです。Eclipse の機能の大部分は拡張可能であるか、あるいはプラグインによるコントリビューションを受け付けます。実際、Eclipse の多くの機能が使用している拡張可能なアーキテクチャーは、一般的に利用可能なアーキテクチャーと同じです。

Eclipse が使用している、ビジネスにとって使いやすいオープン・ソースのライセンスによって、商用のプラグインやオープンソースのプラグインの開発が促進されます。それを考えれば、Eclipse Plugin Central の正式なプラグイン・マーケットに 800 を超えるプラグインがリストされていることは驚くには当たりません。

既存の Eclipse システムに統合できるプラグインの他に、いくつかの会社が Eclipse をベースにした古機能の IDE を構築しています (すべての IBM® Rational® ツールやCodeGear JBuilder 2007、そして Genuitec MyEclipse など)。通常、これらの製品は、モデリングや Web 開発、ビジュアル・デザインなどのためのツールを提供しています。これらの製品やプラグインの一覧は「参考文献」を参照してください。

その他の Eclipse プロジェクト

Eclipse の基本的な SDK (software development kit) には、Java IDE しか含まれていません。他の言語 (C/C++ や PHP) のためのツールキットやモデリング・ツール、その他の拡張機能は、Eclipse という枠組みの中で開発されており、Eclipse プラグインとしてインストールすることができます。「参考文献」には、2007年の上位 21 位までの Eclipse プロジェクトの最新同時リリースである Europa と、その前の、2006年の 6月に上位 10 位までのプロジェクトをリリースした Callisto についての情報をあげてあります。

アップデート・マネージャー

Eclipse を初めて、あるいはアップグレードとしてダウンロードすると、必ず単純な圧縮ファイルになっているので、これを空のディレクトリーに解凍します。何かを構成したりデスクトップにショートカットを作成したりするインストーラーはありません。しかし Eclipse には、プラグイン用にUpdate Manager (Help > Software Updates) があり、これがインストールと更新の両方の処理を行います。またアップデート・マネージャーは、Visual Studio で Add-in Manager が行うのと同じように、プラグインを有効にしたり無効にしたりすることもできます。

Update Manager は、プラグインのインストールあるいは更新を、(ローカルの、あるいは Web 上の) アップデート・サイトから行います。新しいプラグインをインストールするためには、そのベンダーの Web サイトでアップデート・サイトの URL を見つけ、それを Update Manager のウィンドウに手動で入力する必要があります。(一部のベンダーは、背後でアップデート・マネージャーとやり取りするフル機能のインストーラーを作成しています)。

また、Update Manager による方法ほど充実してはいませんが、 Eclipse はプラグインを適当なディクトリーに手動コピーすることでインストールする方法もサポートしています。これは推奨の方法ではなく、この方法では Eclipse の構成に矛盾が生じるおそれがあります。詳しくは「基本的なトラブルシューティング」を見てください。


ヘルプが必要な場合には

Eclipse が初めての場合には、いくつかの質問があるはずです。また Eclipse をしばらく使ってみると、いくつかのバグを見つけることや、あるいは新しい機能を提案したくなるかもしれません。このセクションでは、さまざまなサポート・オプションを調べます。

基本的なトラブルシューティング

誰もが知っているように、場合によると IDE の動作がおかしくなることがあります。Visual Studio では、コマンド・プロンプトで devenv /setup と入力すれば、すべてを工場出荷時の状態にリセットすることができます。Eclipse にも同じようなコマンドライン・スイッチがあります。コマンドラインで eclipse.exe -clean を実行することで、インストールされたプラグインに関する大部分の情報がリビルドされます。-clean オプションは、新しいプラグインをインストールしたにもかかわらずそれが表示されない時に便利です。

Eclipse の動作がおかしい場合には、エラー・ログをチェックする必要もあるかもしれません。Error Log ビューを開くには、Window > Show View > Error Log を選択します。生のログは <workspace dir>/.metadata/.log ファイルの中にあります。

ニュースグループ

これまで Microsoft 製品を扱ってきた人であれば、MSDN (Microsoft Developer Network) のフォーラムやニュースグループでヘルプが得られることを知っているでしょう。Eclipse コミュニティーには独自のニュースグループ (「参考文献」を参照) があり、Eclipse を常に使っている多くの人達が手助けしてくれます。

バグの報告と新しい機能の要求

Microsoft はカスタマー・サポートを提供するために Microsoft Connect Web サイトでフィードバック機能を提供していますが、Eclipse Bugs はそれとは異なり、Eclipse 開発者が使用する実際のバグ追跡システムです。Eclipse Bugs ではバグに関する検索や報告、投票を行えるだけではなく、皆さん自身を CC として他の誰かのバグ情報に追加し、誰がその修正を担当しているか、またバグを修正しなければならないバージョンなど、さまざまな情報を見ることができます。また、同じインターフェースを使って機能への要求も投稿することができます (「参考文献」を参照)。

プレミアム・サポート

一部の会社では、Eclipse Bugs のオープンソース精神とコミュニティーによるヘルプに加え、その会社の開発チームのための商用レベルのサポートを必要とします。Eclipse をベースに作成されている製品を購入する場合には、その製品のベンダーが、ベースとなる Eclipse コンポーネントを含めて製品のサポートを提供しているはずです。基本的な Eclipse SDK を使う場合には、IBM Rational Elite Support for Eclipse プログラムが提供する、全世界向けの24 時間、週 7 日、年間 365 日のサポート・プランを検討してみてください。


まとめ

ここでは、IDE が持つ一般的な原則と機能を Eclipse がどのような方法で実現しているかを解説しました。ワークスペース中心の方法とプロジェクト構造という一面、そして非常に柔軟な UI 設計と起動構成という、もう一方の面からわかるように、Eclipse の IDE の設計はユニークです。そしてオープンで拡張可能なアーキテクチャーによって、Eclipse はサードパーティーによる非常に多様なプラグインや製品のプラットフォームとなります。

チュートリアル「Eclipse for Visual Studio developers」(「参考文献」を参照) をまだ読んでいない人は、ぜひ読んでください。このチュートリアルは、Eclipse での Java 開発を適切に紹介しています。まだこれを読んでいない人は、ぜひ読んでください。しかし Eclipse は Java プログラミング言語専用ではありません。C++ の IDE などの、追加された Eclipse プロジェクトを調べるために、Callisto リリースと Europa リリースをチェックしてください。そして Eclipse Plugin Central を訪れ、よく使われている Eclipse プラグインをいくつかダウンロードしてみてください。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • Eclipse ユーザーによる、そして Eclipse ユーザーのためのオンライン・コミュニティー、EclipseZoneを訪れてください。
  • Eclipse に関するブログを集めたPlanet Eclipseを訪れてください。
  • Eclipse に関する質問を議論するための最初の場所として、Eclipse Platform newsgroupsがあります (このリンクをクリックすると、デフォルトの Usenet ニュース・リーダー・アプリケーションが起動し、eclipse.platform が開きます)。
  • Eclipse newsgroupsには、Eclipse を利用し、拡張することに関心を持つ人達のために、さまざまなリソースが用意されています。
  • developerWorks blogsから developerWorks のコミュニティーに加わってください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=257946
ArticleTitle=Visual Studio ユーザーのための Eclipse 入門
publish-date=08212007