.NET Tools

.NETでもEclipseを使ってみる

株式会社ピーデー 川俣 晶
2004/08/07

Page1 Page2 Page3 Page4

C# Pluginのそのほかの機能

 C#コンパイラとEclipseは、C# Pluginによってシームレスに統合されている。

■コンパイル・エラーを表示する「Tasks」

 例えば、コンパイル・エラーが発生した場合、それはEclipseの持つ「Tasks」の表示を経由して見ることができる。以下の画面のソース・コードの下部がそれに当たる。

コンパイル・エラーを表示する「Tasks」
ソース・コードのコンパイル時にエラーが発生した場合には、エラーの内容が画面下部にあるTasks部分に表示される。エラー表示部分をダブル・クリックすれば、エラーが発生している行に移動することができる。

 Tasksからは、エラーの発生場所に直接飛ぶこともでき、エラー発生からソース・コードの修正までの流れを円滑に処理することができる。もちろん、その程度のことはどの統合開発環境でも当たり前のように実現可能であるのだが、この事例の場合は、まるで水と油のように相反するものと思われることが多いマイクロソフトのコンパイラとオープンソースの統合開発環境が一体となって動いているところが興味深い。

■入力支援機能「Content assistant」

 さて、EclipseにはContent assistantと呼ばれる入力支援機能があるが、C# PluginではC#のキーワード入力時に、これをサポートする機能を提供している。ソース・コード編集中に、[Ctrl]+[スペース]キーを入力するとC#で使用可能なキーワードがリストされる。

入力支援機能「Content assistant」
ソース・コードの編集時に[Ctrl]+[スペース]キーを入力するとC#で使用可能なキーワードがリストされる。

 この中からキーワードを選べば、そのフルスペルをタイプすることなく入力できる。また、キーワードを途中まで入力してから[Ctrl]+[スペース]キーを入力すると、そこまで入力した文字列に当てはまるものだけがリストされる。

 ここで使われるキーワードのリストには、C#で使用されるキーワードのみがリストされている。C#のソース・コードを編集している状態で動作するのは基本的にC#用の機能だけで、ほかのプログラミング言語のためのプラグインが入っていても、ここでそれらは機能していない。

 しかし、Visual Studio .NETのIntelliSenseに相当するこの機能が可能な処理はここまでであり、宣言した変数に対して、その型が持つメソッドやプロパティを列挙するといったことはできない。

まとめ:Visual Studio .NET、Eclipse上のJavaと比較して

 さて、実際にEclipseでC#プログラミングを行うというのは、Visual Studio .NET上でのC#プログラミングと比較して、あるいはEclipse上のJava開発と比較して、どうだろうか。

 冒頭で「Eclipseに関する2つの大きな誤解」という話題を書いているが、そこでは2つの誤解のうちの1つ(EclipseはJava用の統合開発環境と思われているがそうではない)だけしか説明しなかった。残りのもう1つの誤解を説明することが、これに対する答えになるだろう。

 ではもう1つの誤解とは何か。Eclipseの特徴と呼ばれる項目はいろいろあるが、その中には以下の2つのものがある。

  • Eclipseがプログラミング言語を問わない統合開発環境のプラットフォームを提供する
  • 豊富なプラグインが提供され、リファクタリングやUMLモデリングなどの強力な機能が使用できる

 最初の誤解を突破した人たちがしばしば陥る誤解は、この2つの特徴を組み合わせて、「Eclipseを使えばC#でも豊富なプラグインが使える! リファクタリングもできる!!」などと思ってしまうことである。これが、もう1つの誤解である。

 実際、ここではEclipseとC# Pluginを組み合わせて可能となることをすべて紹介したわけではないが、これがほぼすべてと思ってもよいぐらいのレベルである。つまり、この程度の機能しか使用することができない。例えば、Eclipse SDKをインストールすると、それにリファクタリング機能は含まれているので、Javaソース・コード上で右クリックすると、[Refactor]という項目が現れる。しかし、C#ソース上で同じ操作をしてもそれは現れない。

 この誤解は、本来異なる対象について示した特徴を混同したことにより発生している。Eclipseがプログラミング言語を問わない統合開発環境のプラットフォームを提供する、というのは正確にはEclipse Platformの特徴である。Eclipse Platformは特定のプログラミング言語だけを特に優遇したりはしない。しかし、Eclipse Platform上で動作する多くのプラグインが、あらゆるプログラミング言語に対して有効であるかというと、それはまた別の問題である。

 今回のC# Pluginのような特定のプログラミング言語のサポートを提供するプラグインがC#という特定言語専用であるのはいうまでもないが、ほかの多くのプラグインも特定のプログラミング言語を決めて開発されているということである。そして筆者の見る限り、それらのプラグインが想定する対象言語はJavaである。Eclipseの膨大なプラグイン文化のほんの片隅しか垣間見ていない筆者が断言することは不適切だと思うが、恐らくはEclipseを用いたJava開発の強力さ、便利さの大半は、Eclipseを用いたC#開発では味わうことができないものだろうと思う。

 ここまでの話で容易に推測できると思うが、Visual Studio .NET上のC#開発と比較して、Eclipse+C# PluginによるC#開発の使い勝手はどうか、という問いにはほとんど意味がない。WebアプリケーションやWebサービスの開発のための専用機能も備えていないし、デバッグ機能もない。Visual Studio .NETとEclipseはライバル関係にある統合開発環境だと思うが、ライバルとして比較可能になるのは、Eclipse側に膨大なプラグインがあるJava開発であればこそである。それら膨大なプラグインの大半の支援を受けられないC#開発では、比較段階にも達しないだろう。

 しかし、比較にならないからといって、何の意味もないと思うのは早計である。C# Pluginというソフトウェアを通じて見えてくるのは、単純な対立の図式が世界のすべてではないということであり、もっと別の可能性が常にあるという事実である。それは、最悪の破滅のシナリオを回避する可能性を示しているといえる。

 例えば、マイクロソフト対オープンソースといった対立の図式がしばしば語られることも多い。このような対立は半ば宗教的な雰囲気、あるいは正義のための聖戦という雰囲気も持つ。正義のために相手を滅ぼすまで戦う、というような態度は、本人には心地よいかもしれないが、一般のパソコン利用者はパソコンを安く快適に使えればよいのであって、別に戦いたいわけではないのである。

 そして、どのような理由であれ、過剰な対立は相互運用性を低下させ、利用の快適さを低めてしまう。最悪の破滅のシナリオは、対立が激化することによって相互運用性が完全に失われることである。そうなれば、利用者は相互に互換性のない2つのシステムを用意する必要に迫られ、不便極まりない。

 しかし、C#のように標準化団体により標準化されたプログラミング言語があり、一方でEclipseのように高い自由度を持った統合開発環境があれば、あとはユーザー側の努力によって、それらを結び付けて運用できる可能性が示されたわけである。どちらの勢力の味方でもない、真にユーザーの味方となる開発者集団がいれば、双方の勢力間を橋渡しするプログラムを作れるだろう。そして、そうやって相互運用性を維持し続けることができれば、たとえ最悪のシナリオどおりに事態が進行したとしても、破滅を回避することができる。End of Article

 

 INDEX
  [.NET Tools]
  .NETでもEclipseを使ってみる
     1.EclipseでC#の開発を可能にする「Improve C# Plugin for Eclipse」
     2.EclipseとImprove C# Plugin for Eclipseのインストール
     3.Eclipse上でC#プログラムを作成する
   4.C# Pluginのそのほかの機能とVisual Studio .NETとの比較
 
インデックス・ページヘ  「.NET Tools」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間