EclipseからIntelliJ IDEAに乗り換えた話

私はこれまで Java の開発に Eclipse を使ってきました。Eclipse にコードネームとして星の名前が付くよりも前 たしか Eclipse 2.1 からだったでしょうか。かれこれ 15 年以上 Eclipse を使い続けてきました。

長年 Eclipse を愛用してきた私が JetBrains IntelliJ IDEA に乗り換えました。これまで私は IntelliJ IDEA のことを勘違いしていて IntelliJ IDEA は商業主義的だと否定的に捉えていました。しかし これは大きな勘違いでした。JetBrains はオープンソース開発コミュニティーに対してとても寛容で オープンソース開発を支える存在でもあったのです。

そのことについてお話しましょう。

ここ数年 新しいバージョンがリリースされるたびに Eclipse は壊れていっていると私は感じていました。本体の変更に追従できていないのか正しく動作しないプラグインがあったり 日本語が文字化けしたり…。以前は 毎年 6 月の Eclipse リリースを楽しみにしていました。とてもワクワクしたものです。

それが 最近は Eclipse を新しいバージョンに入れ替えるときに不安を感じるようになっていました。Eclipse はちゃんと起動するだろうか? プラグインはちゃんと動くだろうか? こんな不安を抱えながらのバージョンアップは精神衛生上もよろしくありません。リリースサイクルが変更になったこともあり これが年に 4 回も訪れます。

日本語が文字化けするように

Eclipse 2018-09 くらいからでしょうか Java のソースコードに含まれる日本語が部分的に文字化けするようになってしまいました。

ウェブで検索すれば 文字化けの直し方は簡単に見つかります。設定で日本語フォントを指定すればよいのです。

しかし 日本語フォントを指定すると 英数字の表示にも日本語フォントが使われてしまいます。これでは 英数字は Consolas 他の文字はシステムのフォントで代用するという振る舞いになりません。

文字化けを直すために Consolas が使えなくなるなんてあんまりだと思います。

IntelliJ IDEA はフォントを 2 つ指定できます

Eclipse で不自由なフォント選択を迫られる中 IntelliJ IDEA はフォントを 2 つ指定することができます。IntelliJ IDEA にはメインのフォントとは別にフォールバック用のフォントを指定する設定があります。メインのフォントに Consolas フォールバック フォントに メイリオ を指定しておけば 英数字の表示には Consolas が使われ そこに含まれない日本語等については メイリオ が使われるようになります。

痒いところに手が届く IntelliJ IDEA 素敵です 😍

Subversive プラグインの動作がおかしい

私は これまで Eclipse Subversion プラグインとして Subversive を使ってきました。最近は Eclipse 本体のバージョンアップに追従できていないのか Subversive の挙動がおかしくなることが増えました。コミット後にエラーが発生して Subversion 管理プロジェクトとして認識されなくなるなど 次第にストレスを感じるように…。

Subversive Eclipse 公式プラグインであると謳っていたはずですが いまは資金不足で開発が止まっています。スポンサー募集中だそうです。公式プラグインであっても スポンサーの付いていないプラグラインは開発が止まってしまうのですね…。このような状況では Subversive の動作が改善する可能性は低いと思います。

IntelliJ IDEA には Subversion プラグインがバンドルされています

IntelliJ IDEA には Subversion プラグインが標準でバンドルされているので 本体とプラグインのバージョン違いで動作不良を起こす可能性は低いです。プラグインを追加せずに使えるというのも楽です。ただし IntelliJ IDEA は外部コマンドとして svn を呼び出すため 別途 Subversion クライアントを導入しておく必要があります。

JavaFX アプリケーション開発ができない

これも Subversive と同様にプラグインの開発が止まってしまった話です。Eclipse には e(fx)clipse という JavaFX アプリケーション開発をサポートするプラグインがあったのですが 残念ながらこれも開発が滞っています。JavaFX 8 には対応しているものの JavaFX 11 に追従できていません。

e(fx)clipse JavaFX 11 の組み合わせでは JavaFX 独自の CSS プロパティー名が認識されず 入力補完機能も働きません。

また Eclipse 2018-09 の既定のアップデートサイトで 利用可能なソフトウェア として e(fx)clipse 3.3.0 が表示されるのですが 実際にこれをインストールしてしまうと Eclipse が起動不能になるという致命的なバグもありました。プラグインの数が膨大で検証しきれていないのでしょうね…。

IntelliJ IDEA JavaFX にも対応しています

IntelliJ IDEA JavaFX にも対応しており JavaFX 固有の -fx で始まる CSS プロパティでも補完機能が働きます。Community Edition CSS をサポートしていないため Ultimate Edition が必要です

別途 Scene Builder を導入しておけば IntelliJ IDEA から Scene Builder を呼び出すこともできます。

IntelliJ IDEA Java の新しい構文を使いやすい

IntelliJ IDEA のコード補完機能は Java の新しい構文への対応が早いです。

Eclipse でコード補完をしていくと匿名クラスの雛形になってしまう状況でも IntelliJ IDEA ならラムダ式やメソッド参照が候補に出てきます。

Eclipse を使っていたときは コード補完で出てくる匿名クラスの雛形を まあいっか とそのままにしていたのですが IntelliJ IDEA に乗り換えてからはラムダ式やメソッド参照を自然と使うようになりました。

Android Studio の親和性

私は Android アプリの開発で Android Studio を使うこともあります。Android Studio IntelliJ IDEA がベースになっていて両者はとても似ています。Java アプリケーションの開発に Eclipse Android アプリの開発に Android Studio と使い分けるよりも IntelliJ IDEA Android Studio を使うほうが学習コストを抑えられます。ショートカットキーの違いなどで混乱することもないでしょう。

IntelliJ IDEA Android アプリの開発にも対応しているということなので もしかすると Android Studio も使わずに IntelliJ IDEA に一本化できるのかもしれません。今はまだ Android アプリ開発には Android Studio を使っており IntelliJ IDEA での Android アプリ開発は試していません

このような理由で 私は Eclipse から IntelliJ IDEA への乗り換えを決断しました。

JetBrains のオープンソース サポートプログラム

最後に 私が IntelliJ IDEA について勘違いしていたことをお話ししましょう。

IntelliJ IDEA はオープンソースで利用できる という話を聞いたことがありました。JetBrains のサイトを見てみると IntelliJ IDEA には Ultimate Edition Community Edition 2 つがあり Community Edition Apache License, Version 2.0 APL でソースコードもバイナリも公開されています。APL であるため Community Edition は無償利用可能で用途も制限されません。Community Edition で開発したアプリケーションを商用販売しても OK です。

なるほど オープンソースライセンスで利用できるというのは Community Edition のことか。無償とはいえ機能制限が多くて Web アプリ開発では実用になりそうもないぞ

私は当初このように理解していたのですが この理解は正確ではありませんでした。実は JetBrains には オープンソース を冠するライセンスがもう 1 つあります。それが オープンソース サポートプログラム です。

これは オープンソースプロジェクトに貢献している開発者に JetBrains の製品の利用を許諾するというものです。このサポートプログラムでは Community Edition ではなく Ultimate Edition が無料で利用可能になります。IntelliJ IDEA だけでなく JetBrains の他の製品群 WebStorm Rider DataGrip なども利用可能になります。太っ腹です 😋

ただし このライセンスは非商用のオープンソース開発に対してのみ与えられており 商用製品の開発に使用することはできません。

ライセンス        説明エディション費用商用利用
Commercial Licenseすべての機能が使える。商用利用可。Ultimate有料
Apache License 2.0機能が制限されているが商用利用可。Community無料
Free Open Source Licenseオープンソース開発限定。審査あり。Ultimate無料×

オープンソース サポートプログラム の適用には審査があります。オープンソースプロジェクトであっても企業や組織がスポンサーになっていて資金提供を受けていたり 有償サポートや有償バージョンを提供して収益化をしていると適用されません。

プロジェクトの規模自体は問わないようです。私が 1 人でやっている小さなオープンソースプロジェクトでも オープンソース サポートプログラム の適用を受けることができました。

この JetBrains の取り組みは オープンソース開発に対してとても寛容で オープンソース開発を促進するものだと感じています。このようなオープンソース開発を支援する取り組みをしていることを知って 私は JetBrains のことを好きになりました 😊

JetBrains コミュニティサポートプログラム

JetBrains は教育機関向けの Free Education Licenses コミュニティに貢献しているユーザーグループやエンジニア向けの Sponsorship も提供しています。マイクロソフトの MVP 保持者や Java チャンピオン Google Developers Experts JetBrains のすべてのデスクトップ製品を利用できる無料のサブスクリプションを申し込むことができます。他社が認定しているエキスパートな人達に無料サブスクリプションを提供するってすごいですね。

この記事を共有しませんか?