IntelliJ IDEA

OSS の IntelliJ IDEA Community 版をビルドしてみよう

こんにちは。JetBrains堀岡です。

IntelliJ IDEA や Android Studio のベースとなっているJetBrains製IDEの基本部分は OSS として公開されていることをご存知でしたか?

IJC_build_banner

さらに、突然ですが、ある程度の大きさのOSSプロジェクトをビルドすることは好きですか?

私は、現在のポジションは技術職ではないので、普段はあまり関わり無いのですが
・新卒後ソフトウェアエンジニアとして配属された職場で、初めての仕事がビルドエンジニアだった(恐らくC言語がほとんど分からなかったため)
・以前、静的解析ツールの仕事で様々なコードをビルドして解析することがあった
ということもあり、時間があるとたまに(年に数回)好奇心からビルドしてみたくなります。

皆さんご存知の方も多いかもしれませんが、JetBrainsのIDEのベースである IntelliJ IDEA や PyCharm の Community版 Apache 2.0 license のOSSとして公開されています。IDEとしてのベースとなる機能やJava関連の機能は、日々コードが更新されています。

一方で、SNS等でIntelliJをビルドしてる人はあまり見かけないような気がします。ビルド出来たら(やる気と技術力があれば)困った時に、自分でデバッグもできるかも?と思いビルドしてみることにしました。

ということで本記事では、Github上の情報を参照しながら、IntelliJ IDEA Community 版ビルドの手順を日本語で紹介したいと思います。なお本記事は定期的に更新していますが、初回作成時(2020年9月9日現在)の古い情報を含む可能性があります。実際にご自身でビルドを試す場合、最新についてはGithub上の情報もご確認ください

必要なもの

ソースコード

Githubにあります。ビルドに必要な情報がReadmeに書かれています。
https://github.com/JetBrains/intellij-community

開発環境

IDE

(2024 年 3月 17日現在)IntelliJ IDEA Community Edition をビルドするためには、

Version 2023.2 or newer of IntelliJ IDEA Community Edition or IntelliJ IDEA Ultimate Edition is required to build and develop for the IntelliJ Platform.

ということで、最新のコードをビルドにするには最新版の IntelliJ IDEA Community Edition または IntelliJ IDEA Ultimate のバージョンが必要です。

JDK:JetBrains Runtime 17

2024年3月17日現在:定期的に変わるので最新情報は Github上の情報 をご確認ください。以前は Amazon Corretto JDKを使うと書かれていた時期もありました。  

JetBrains Runtime はインストールされていない場合、Build Project コマンドを実行するとインストールが提案されるようになっています。または、 IntelliJ IDEA経由でインストールすることが可能です。

(できれば、ビルド用の良い)PC

Readmeでは推奨HW環境は言及されていませんが、イベント等で来日したJetBrainsの開発チームのエンジニアは15/16インチのMacBook Proの人が多かった気がするので、そういうことだと思います。恐らく、2コア、8GBメモリ以下とかだと、パフォーマンス的(ビルドが遅い等)に厳しいかもしれません。

また、ソースをダウンロードしたり、ビルドを走らせると、PCのリソースが30分から数時間占有されることもあるので、(占有されると困る場合は)暇な時に試すか、別のビルド用PCがあると良いでしょう。

ビルドのためのステップ

今回はmacOS環境で紹介しますが、Windows環境でも必要な作業は同じです。

IDE(IntelliJ IDEA)およびJDKのインストールと動作確認

JetBrains Toolbox App から最新の IntelliJ IDEA Community 版をインストールします。

installIJC

次に、IntelliJ IDEA Communityを起動し、Create New Project を選択します。CreateNewProject

ここでJDK環境のセットアップ、Hello Worldで環境の動作確認を行っていきます。

初めはJDKのセットアップです。

DownloadJDK

(2020年6月13日時点では)Amazon Corretto のJDK 11は 11.0.7 が利用可能でしたので、こちらをDownloadします。

コマンドラインアプリのテンプレートを選択

CommandLineAppTemplate

適当にプロジェクト名を入れて、次へ

SpecifyProjecdtName

スケルトンコードが生成されます。

SkeltonCodeGenerated

mainメソッドのなかに「sout<タブ>」でプリント文を入れ、▶︎でコンパイル&実行できる(画面下部のRun結果にHelloが表示される)ことまで確認でできればIDEとJDKの基本的な動作確認はOKです。

Hello

IntelliJをビルドするために必要なJDK設定

続いて、Readmeの「IntelliJ Build Configuration」に記載されているJDKの追加設定を行います。この設定はIntelliJ IDEAのビルドのために必要なものです。

File | Project Structure

Platform Settings | SDKs でインストールされているJDK一覧を確認します(注:corretto-1.8は2020.3以降不要なりました)。

ListSDKs

Configure a JDK named “corretto-11

の箇所に対しては、corretto-11についてはIntelliJでインストールした場合、すでに指定された名前でインストールされているので、ここでは追加作業不要とします。

Appleシリコン向けのJDK等、OS上でインストールされたJDKをIntelliJでコンパイルする時に使用する場合

Project Structure/プロジェクト構造メニューから、IntelliJ上で使用可能なSDKとしてJDKを登録します。

その後、登録されたJDKをプロジェクト用のJDKとして指定します。

ここまででJDKのセットアップは終わりました。

次に、ビルドのパフォーマンスを改善するための設定を行います。

Speed Tip: If you have enough RAM on your computer, configure the compiler settings to enable the “Compile independent modules in parallel” option. Also, set the “User-local build process VM options” to -Xmx2G. These changes will greatly reduce the compile time.

の記述から以下を設定します。
Settings | ビルド、実行、デプロイ | コンパイラ の画面で

  • Compile independent modules in parallel をチェック
  • Build process heap size に 2048 に変更

IDE 自体のJVMメモリ設定の変更

IDEが使用するメモリサイズについても追加設定を行います。

環境によっては、大きなプロジェクトを扱う際にメモリが足りない警告がでてきますので、事前に大きな値(今回は2048を指定)を指定します。

Help – Change Memory Settings

ChangeMemorySetting

memory_settings

指定した値は再起動後有効になりますので、ここでIDEを閉じます

ソースコードの取得

IntelliJ IDEAのコード規模はそれなりに大きいので普通にコマンドラインでgit clone したりIntelliJの新規プロジェクトの”Get from Version control”でソースを取得しようとすると、それなりに時間がかかります。

また、IntelliJ上でgit cloneするとその後、自動的に色んな処理が走ってしまうのですが、大規模コードで、これから色々設定しようと思っている場合、このような自動処理はあまり嬉しくありません。

今回はビルドするだけなので、Readmeの以下のお勧めに従い、
「Speed Tip: If the complete repository history isn’t needed then using a shallow clone (git clone –depth 1) will save significant time.」

ターミナルから以下を実行します。

git clone --depth 1 https://github.com/JetBrains/intellij-community.git

完了後、

IntelliJ IDEA Community Edition requires additional Android modules from separate Git repositories. To clone these repositories, run one of the getPlugins scripts located in the <IDEA_HOME> directory. 

(IntelliJ Communityをビルドするために、Android モジュールのファイルも必要とのことなので)cloneしたファイル群に含まれる

getPlugins.sh(Windowsの場合.bat)

コマンドを実行します。このコマンドにもヒストリ不要にすることにより高速に clone する –shallow オプションがあります(内部的には –depth 1 をつけて git clone してるだけです)

例:

 ./getPlugins.sh --shallow

ビルド

IntelliJ IDEAを起動メニュー、または
File | Open
でgit cloneしたintellij-community ディレクトリを開きます。
自動的にindexing 等が始まるので、終わるまで気長に☕️待ちます。

Indexing
Indexingが終わったら、画面右上のRun/Configに「IDEA」があることを確認し、選択します。その後メニューの

Build | Build Project

でビルドを開始します。再度、気長に🍵待ちます

buildproject
Build Completed Succesfully というメッセージが表示されれば、めでたくビルド完了です。

2024 年 3 月 17 日時点での私の環境 macStudio 2022 M1 MAX では IntelliJ 2024.2 をビルドするのにかかった時間は約 22分 でした。以前は、Windows 10の確認環境(Intel NUC 10世代6コア Corei7 32GB)で試したところ、ビルド時間は約11分でしたので、この記事を最初に書いた 2020年頃よりもビルド対象のコードがだいぶ増えているようです。

ビルドされたIntelliJの実行

画面上部 Run/Config 「 IDEA」の隣の▶︎をクリックして、ビルドされたIDEAを起動します。IntelliJ IDEAのスプラッシュ画面が表示された後、(プロジェクトの移行画面が出る場合もあります)以下のWelcome画面が表示されれば成功👏です。

StartIJC

IDEの起動に使用されるJREの変更

Run/Configのデフォルド設定では、ビルド(コンパイル)に使用したJDKが、ビルドされたIntelliJ Communityを実行するためのJREとして指定されています。
JBR以外でIntelliJを起動すると問題が発生することがあります。そこで、ビルドした(子)IDEの実行に使用するJREを、ビルドに使用したJDKではなく、(親)IDEの(起動のため)同梱されているJBR(JetBrains Runtime)を指定します。

具体的には、

Run/Config のメニューで「 Edit Configurations… 」を選択 します

editconfig

「JRE:」のフィールド右端のフォルダアイコンをクリックし、親IDEのJBRのパスを指定します。

追記:一覧から Bundled を選択すれば以下で説明するJBRのパスの確認・指定は不要です。それ以外のJBR/JDKを使用する場合、以下を参考にしてください。

changeJRE
IDEに含まれるJBRの場所はちょっとわかりにくのですが、macOS上でJetBrains Toolbox Appを使用している場合、JBRの場所は次のように確認できます。

Toolbox App で使用しているIDEのSettingsを開きます。

IJCSettings
Configuration を開き、Install location を確認することで、 IDEがどこにインストールされているかを知ることができます。

ShowInstallLocation

以下のスクリーンショットで示す様に、「IDEのインストール場所」以下にある <IDE>.app/Contents/jbr/Home がJBRのディレクトリです。

SpecifyJBR

Run/ConfigのJREを、上記JBRにして、再度ビルドされたIDEAを起動すると、Japanese Language Pack による日本語表示も問題なくできました🇯🇵

IJC_Japanese

まとめ

OSSであるIntelliJ IDEA Community版をビルドしてみました。

Github上のReadmeを読んで理解できれば、私でもビルドできたので、(少し時間がかかりますが)IntelliJ IDEAをビルドすることは、(比較的)簡単ということが理解できたと思います。

ビルドができれば、IntelliJ IDEAについて(公開されている基本機能においては)ソースレベルで調査したり、デバッグしたりできるようになります。例えばこちらのローカライゼーション関連課題のように、気になったバグについても(興味があれば)調べて報告したり、修正を提案したりするのも面白いかもしれません。

IntelliJ IDEAのビルドやその他技術的詳細について、昔からのユーザやプラグイン開発してる皆さんはもっとご存知かと思いますので、より良いやり方等あれば、フィードバックいただけると幸いです。

image description