IntelliJ プラットフォーム SDK プラグイン開発ガイド

ページを編集 (英語)

IntelliJプラットフォームとは何ですか?

IntelliJプラットフォームは、それ自体は製品ではありませんが、IDEを構築するためのプラットフォームを提供します。IntelliJ IDEA(英語)などのJetBrains製品に電力を供給するために使用されます。また、オープンソースであり、サードパーティがGoogleのAndroid StudioなどのIDEを構築するために使用できます。

IntelliJプラットフォームは、これらのIDEが豊富な言語ツールサポートを提供するために必要なすべてのインフラストラクチャを提供します。これは、ツールウィンドウ、ツリービュー、リスト(高速検索をサポート)の作成、およびポップアップメニューとダイアログを作成するための、高レベルのユーザーインターフェースツールキットを備えた、コンポーネント駆動のクロスプラットフォームJVMベースのアプリケーションホストを提供します。

また、イメージエディターとフルテキストエディターが含まれており、構文強調表示、コードフォールディング、コード補完、その他のリッチテキスト編集機能の抽象実装を提供します。

さらに、プロジェクトモデルやビルドシステムなどの一般的なIDE機能を構築するためのオープンAPIも含まれています。また、言語に依存しない高度なブレークポイントのサポート、コールスタック、ウォッチウィンドウ、式の評価など、非常に豊富なデバッグエクスペリエンスのためのインフラストラクチャも提供されます。

しかし、IntelliJプラットフォームの真の力はプログラム構造インターフェース(PSI)から来ています。これは、ファイルを解析し、コードの豊富な構文モデルおよび意味モデルを構築し、このデータからインデックスを構築するために使用できる一連の機能です。これにより、ファイル、タイプ、シンボルへのクイックナビゲート、コード補完ウィンドウの内容の検索、用途の確認、コードインスペクションおよびコードの書き換え、クイックフィックスまたはリファクタリング、その他の多くの機能が強化されます。

IntelliJプラットフォームには、パーサーと多数の言語用のPSIモデルが含まれており、その拡張可能な性質により、他の言語のサポートを追加することが可能です。

プラグイン

IntelliJプラットフォームで構築された製品は拡張可能なアプリケーションであり、プラットフォームはコンポーネントの作成とクラスへの依存関係のインジェクションを担当します。IntelliJプラットフォームはプラグインを完全にサポートし、JetBrainsは1つ以上の製品をサポートするプラグインを配布するために使用できるプラグインリポジトリ(英語)をホストします。独自のリポジトリをホストし、プラグインを個別に配布することもできます。

プラグインは、単純なメニュー項目の追加から完全な言語、ビルドシステム、およびデバッガのサポートの追加まで、さまざまな方法でプラットフォームを拡張できます。IntelliJプラットフォームの既存の機能の多くは、最終製品のニーズに応じて含めることも除外することもできるプラグインとして書かれています。詳しくはクイック・スタート・ガイドを参照してください。

IntelliJプラットフォームは、主にJavaとKotlinで書かれたJVMアプリケーションです。IntelliJプラットフォームをベースにした製品用のプラグインを作成するには、これらの言語、それらで書かれた大規模なライブラリー、それらに関連するツール、および大規模なオープンソースプロジェクトに精通している必要があります。現時点では、IntelliJプラットフォームを非JVM言語で拡張することはできません。

ソースを開く

IntelliJプラットフォームはApacheライセンス(英語)でオープンソースであり、GitHub(英語)ホストされています(英語)

このガイドではIntelliJプラットフォームを別のエンティティとして説明していますが、“ IntelliJプラットフォーム”のGitHubリポジトリはありません。代わりに、このプラットフォームはIntelliJ IDEA Ultimateの無料のオープンソース版であるIntelliJ IDEA Community エディションとほぼ完全に重複していると考えられています(上でリンクされたGitHubレポジトリはJetBrains / intellij-community(英語)レポです)。

IntelliJプラットフォームのバージョンは、IntelliJ IDEA Community エディションの対応するリリースのバージョンによって定義されています。例:IntelliJ IDEAに対してプラグインをビルドする(v2019.1.1、)#191.6707.61をビルドする、同じビルド番号タグを指定して intellij-community リポジトリから正しいIntellijプラットフォームファイルを取得することを意味します。バージョン番号に対応するビルド番号の詳細については、ビルド番号範囲のページを参照してください。

通常、IntelliJプラットフォームに基づくIDEはGitサブモジュールとして intellij-community リポジトリを含み、intellij-communityからのどのプラグイン、どのカスタムプラグインが製品を構成するかを記述するための設定を提供します。IDEA Ultimateチームはこのようにして動作し、カスタムプラグインとIntelliJプラットフォームの両方にコードを提供します。

IntelliJプラットフォームに基づくIDE

IntelliJプラットフォームは、多くのJetBrains IDEの基礎となっています。IntelliJ IDEA UltimateはIntelliJ IDEA Community エディションのスーパーセットですが、クローズドソースプラグインが含まれています( この機能の比較を参照してください(英語) )。同様に、WebStormやDataGripなどの他の製品はIntelliJ IDEA Community エディションに基づいていますが、他のデフォルトのプラグインを含めたり除外したりするプラグインのセットが異なります。これにより、各製品にはベース機能とIntelliJ IDEA Community エディションリポジトリからの選択されたプラグインが含まれるため、プラグインは複数の製品をターゲットにできます。

以下のIDEはIntelliJプラットフォームに基づいています。

Rider

JetBrains Rider(英語)は、IntelliJプラットフォームを他のIntelliJベースのIDEとは異なる方法で使用します。IntelliJプラットフォームを使用して、標準のIntelliJエディター、ツールウィンドウ、デバッグエクスペリエンスなどを備えたC#および.NET IDEのユーザーインターフェースを提供します。また、標準の使用箇所の検索およびSearch Everywhere UIに統合され、コード補完、構文の強調表示などを利用します。

ただし、Riderでは、C#ファイル用の完全なPSI(構文および意味)モデルは作成されていません。代わりに、言語機能を提供するためにReSharper(英語)を再利用します。すべてのC# PSIモデル、すべてのインスペクション、およびクイックフィックスやリファクタリングなどのコードの書き換えは、ReSharperのコマンドラインバージョンではプロセス外で実行されます。つまり、Rider用のプラグインを作成するには、IntelliJの「フロントエンド」にあるユーザーインターフェースを表示するプラグインと、ReSharperの「バックエンド」にあるC# PSIを分析して作業するプラグインがあります。

Riderはインスペクションとコード補完の結果を表示するため、IntelliJ UIコンポーネントを必要としない多くのプラグインを記述することができます。詳細については、製品固有のセクションを参照してください。

最終更新日: