Eclipseのメリットを知ってほしい

 高機能なIDEを使え、という話題になった場合にはだいたい決まった反論がある。それは確かにIDEの欠点の部分で、要するにIDEを使うかどうかは、そのメリット・デメリットを秤にかけて傾いた方を選ぶべきだ。

 私は仕事では主にJavaの開発をやっているのだけど、どうにもEclipseの機能を使えていない人が多い。もちろん、私もそれほどEclipseをマスターしているというわけではないのだけども、それでもテキストエディタでの開発に戻らないだけの十分な理由がある。そこを伝えたかったのがEclipseからテキストエディタに戻れない10の理由 - プログラマーの脳みそだ。

 こうした大きな恩恵があるにも関わらず、「そんな恩恵があるなんて知らなかったから」という理由でEclipseを使わないなんて選択をして欲しくない。Javaの父たるジェームズ・ゴスリン氏もIDEの重要性を訴えている。もっとも彼が推すのはNetBeansの方だけども。Emacsの開発に大きな貢献をしたジェームズ・ゴスリン氏がEmacsは死なねばならないと言ったということは示唆深いものである。

 そういえばviを作ったビル・ジョイ氏はジェームズ・ゴスリン氏と一緒にJavaの開発を行ったのだった。Javaというのは前世紀のエディタを作ってきたハッカー達が描いた未来だった。僕らはその描かれた未来の上で彼らの過去の遺産をどう見つめるべきだろう?

Eclipseのデメリット

 IDEの立ち上げは重い。起動には相応に時間がかかる。このデメリットが大きいか小さいかというのは開発スタイルによって変わる。私のように業務でがりがりとコードを書くような場合、一日の仕事の始まりにマシンを起動してEclipseを立ち上げたら、仕事を終えて帰宅の途につくまでEclipseは起動しっぱなしである。デメリットは極小さいものである。起動したり落としたりを繰り返すような前提下ではデメリットは大きくなる。LL好きの人もこのデメリットを大きく評価する傾向があるけど、みんな片手間にプログラムしているのかな?なんでこの項目を重視するのかは僕にはよくわからない。

 近年の高度なIDEの機能は、ハードのパワーが上がったがゆえに可能になったという側面も大きい。Eclipse2系では構文解析を伴うシンタックスハイライトはオプションだったが、3系では標準になった。もしあなたが5年前のマシンを使っているのだとしたら、最新のEclipseを使わないだけの十分な理由となりうる。

 もっとも、たかだか10万そこそこの機械への出資をケチって最新のエディタの大きな恩恵を捨てるなんてのは愚の骨頂だと思う。もっともその辺の生産性とかをマシン購入の決定権を持つ非技術者に説明して納得させられるかというのは難しい問題かもしれない :-P

Java以外の言語について

 EclipseJava以外の言語の開発もできるわけなんだけど、一番手厚いのがJavaだ。というか、Javaの開発環境は異常に充実していると言わざるを得ない。

id:wiseler 次はどうしてVisual StudioではなくEclipseなのかについて。

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/Nagise/20081219/1229706501

 たぶん、非Java使いの人なんだと思うが、まず私が断っておかなければならないのは、EclipseでのC/C++/C#の開発は私はほとんどやったことがないということ。C#のコードを書く時はVisual Studioを使うのだが、EclipseJava開発の環境より劣ると感じている。私はリファクタリング大好きの設計マニアなのだが、Visual Studio上でのC#ではツールのサポートが弱くて抽象度の高いコードを書こうとした場合、かなり不便な思いをする。もっとも日常的に使うJavaに比べC#の熟練が足りない状況にあるため、主観的であることは断っておく。

 自分は.NET系の人ともコミュニティでよく話をするのだけども、そちらをメインにしている人はJavaの開発環境には疎い人が多い。「機械化によって前提が変わる」と言ったが、その前提がなかなか噛み合わない。Eclipse - Javaの機能が素晴らしすぎる、Visual Studio - C# はもっとがんばるべきみたいなことを言っても、恩恵側を理解してもらえないのでは議論にもならない。20年前の人にインターネットの素晴らしさを説くような難しさがある。

 LLのエディタもEclipseにはそろっているが、動的言語の場合はその性質上、コード補完などが弱い。静的型付け言語特有の手厚い自動補完、型チェック、リファクタリングの恩恵を得られない。IDEを前提にした場合、LLにあまり快適さを感じられない。これらの恩恵を得られないぐらいならきっちり型について宣言する方がマシだと私は判断する。このあたりも人によって価値の重みづけは異なるだろうから一概には結論できないところだろうが。

 HTMLやXMLなどのエディタも標準で揃っているので、とりあえずEclipseが入っていれば作業には困らない。私などはLinuxに関してはタコなのだけど、Eclipseさえインストールしておけばなんとかなる。まぁタコなので、Linuxをマスターしている人にしてみればそんな理由?とか言われそうだけども。

テストについての補足

id:bonlife 重要じゃない部分だと思うけど、"プログラムがろくに書けない奴にはテストコードの作成でもやらせておけ!"ってそういうもんなのかな。違和感あり。

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/Nagise/20081219/1229706501

 テストコードといっているのは、JUnitによる自動テストのコードのことを指す。これらは直接の納品物にはならない。リリースされるシステムには組み込まれないコードであるから、ある程度品質が低くても目を瞑ることができる。

 テストケースの策定にはスキルが必要なので、それはテストケースを策定できる程度の能力を持つ人間にやってもらうしかない。そのテストケースをJUnitの自動テストのコードに起こす作業は、業務の簡単なビジネスロジックしか書けません、という使えないコーダになんとかやらせることができる仕事で、かつ、システム本体に悪影響を与えさせないという安全な仕事なのである。

 自動テストのコードを書く過程で、テスト対象となるコードを眺めることになる。新人にやらせる作業としてはちょうどいいのではないかな。