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

ページの編集 (英語)

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

IntelliJ プラットフォームは、それ自体の製品ではなく、IDEを構築するためのプラットフォームを提供します。IntelliJ IDEA(英語)WebStorm(英語)RubyMine(英語)DataGrip(英語)Rider(英語)などのJetBrains製品の基盤に使用されます。オープンソースでもあり、第三者がGoogleからAndroid StudioなどのIDEを構築するために使用することができます。

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

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

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

しかし、IntelliJ プラットフォームの真のパワーは、Program Structure Interface(PSI)に由来しています。これは、ファイルを解析し、コードの豊富な構文および意味モデルを構築し、このデータから索引を構築するために使用できる一連の機能です。クイックナビゲートからファイル、タイプ、シンボル、コード補完ウィンドウのコンテンツ、コード・インスペクションのコーディング、コードの書き換え、クイックフィックスやリファクタリングなどの多くの機能が利用できます。

IntelliJ プラットフォームには、多くの言語のパーサーとPSIモデルが含まれており、その構成可能な性質は、他の言語のサポートを追加することが可能であることを意味します。

プラグイン

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

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

IntelliJ プラットフォームはJVMアプリケーションで、主にJavaとKotlinで書かれています。IntelliJ プラットフォームに基づく製品用のプラグインを作成するには、これらの言語や関連するツールに精通している必要があります。現時点では、IntelliJプラットフォームを非JVM言語で拡張することはできません。

ソースを開く

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

このガイドではIntelliJ プラットフォームを別のエンティティとして参照していますが、IntelliJ プラットフォームの GitHubレポはありません。代わりに、このプラットフォームは、IntelliJ IDEA UltimateのフリーでオープンソースのバージョンであるIntelliJ IDEA Community エディション(上記リンクされたGitHubリポジトリはJetBrains / intellij-community(英語)レポです)とほぼ完全にオーバーラップしていると見なされます。

IntelliJ IDEA UltimateはIntelliJ IDEA Community エディションのスーパーセットです。これはコミュニティ版に基づいていますが、クローズドソースのプラグインが含まれています( この機能比較を参照(英語) )。同様に、WebStormやDataGripなどの他の製品はIntelliJ IDEA Community エディションをベースにしていますが、他のデフォルトのプラグインを除き、異なるプラグインのセットが含まれています。

これにより、プラグインは複数の製品をターゲットにすることができます。各製品には基本機能と、IntelliJ IDEA Community エディションレポからのプラグインの選択が含まれているためです。これがIntelliJプラットフォームと呼ばれています

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

もちろん、IntelliJプラットフォームはオープンソースなため、単にソースを開いて表示するのではなく、プラットフォーム自体へのプルリクエスト(英語)も受け付けます。問題追跡はYouTrack (IDEAプロジェクトを使用する)(英語)で管理されます。プラットフォームに貢献したい場合は、変更を加える前に変更を説明する問題を開くことをお勧めします - これによりチームはフィードバックやアドバイスを得ることができます。詳細はIntelliJプラットフォームへの貢献のセクションにあります。

Rider

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

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

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

最終更新日: