MPS 2022.3 の新機能

MPS 2022.3 には、制約ルールの改善、MPS 拡張機能との同期の移行、JVM 用の Kotlin スタブなどが含まれます。

制約ルールに関する更新
お客様からのご提案

制約言語の不備を解消するため、制約ルール言語が作られました。 このリリースでは制約ルールがさらに前進し、言語のユーザビリティが改善されています。

  • 制約ルールの定義を NodeTestCases から参照できるようになりました。 これまでは不可能なことでした。
  • 実験的な制約ルールの定義では、ログに記録するメッセージを Inspector(インスペクター)ウィンドウで指定することで、より質の高いトレースとデバッグを行えるようになりました。
  • 制約ルールのエラーメッセージは、特定ノードのプロパティまたは参照を対象とすることができます。 ノード全体にエラーのハイライトを適用するのではなく、プロパティまたは参照のみをハイライトするように構成できます。

モジュールクラスの読み込みの改善

MPS モジュールには、言語を色々と試すためのサンドボックスから、MPS または IntelliJ IDEA プラットフォームの動作を変更するためのアクティブなプラグインコードまで、さまざまな目的があります。 MPS 2022.3 では、これらすべてを 1 つのカテゴリで導入しました。 ソリューションモジュールの Java Facet(Java ファセット)ページが改修され、すべての関連する設定を集約し、一般的なシナリオを特定して、言語デザイナーとユーザーがモジュールの意図した用途を簡単に認識できるようになりました。 IDE プラグインモジュールファセットが非推奨となり、今後は使用されなくなりました。 ソリューションモジュールのみの設定を公開しました。言語モジュールとジェネレーターモジュールの両方で同じ方法を採用していますが、これらの設定は暗黙的に構成されています。 詳細はこちらを参照してください

MPS 拡張機能との移行の同期

MPS にはエコシステムに価値をもたらす活発なコミュニティが常に存在しており、JetBrains は製品の機能を強化する外部ライブラリの使用をユーザーに常に推奨してきました。 Third-party libraries, such as MPS Extensions, have been key to improving the user experience for products built with MPS. サードパーティライブラリはコミュニティに多くのメリットをもたらしますが、MPS のバージョンをアップデートするのにサードパーティライブラリの移行を待たなければならないという大きな欠点があります。 よりスムーズに製品の最新バージョンへ移行できるように、JetBrains の公式パートナーであり MPS 拡張機能の主管理者である itemis と協力し、リリースを同期させることに取り組んでいます。

言語定義のユーティリティメソッドの追加

言語デザイナーが何度も使用されるコードを定義ルートノード内のヘルパーメソッドに抽出することで、その量を減らせるようになりました。 これらの追加メソッドは以下の場所で定義できます。

  • 制約
  • 変換および置換アクション
  • 推論とチェックルール
  • クイックフィックス
  • インテンション

インテンションは、execute メソッドで使用される isApplicable メソッドで計算される値を保持するための追加フィールドにも使用できます。

JVM 用の Kotlin スタブ

JVM 用の Kotlin スタブ

コンパイル済みの Kotlin/JVM ライブラリからスタブをインポートできるようになりました。これまでは、Kotlin/Common ライブラリしかインポートできませんでした。 この改善に伴い、モジュールオプションの Kotlin JVM モデルルートを通じて JVM(Java、Kotlin、または混合)にコンパイルされたライブラリを使用することができます。 詳細はこちらを参照してください

Kotlin 編集の改善

この新しいバージョンの MPS には、複数の軽微な変更と改善が取り込まれています。

  • Kotlin クラスがルート化できるノードになり、独自のアイコンが付与されました。
  • Kotlin コードから Java 列挙型エントリを参照できるようになりました。
  • this 式からラベル(this@SomeClass など)を正しく参照できるようになりました。
  • ビルドスクリプトの withKotlin フラグが従来のハードコードされていた場所ではなく、$kotlinc_home マクロを要求するようになりました。
  • 以下のようにスタブが改善されています。
    • スタブオプションでパッケージを除外する/含める動作が Java スタブと同じように機能するようになりました。
    • 不安定な ID を持つために参照が破損してしまういくつかのメソッドが修正されました。
型からコンストラクターを作成する変換

型からコンストラクターを作成する変換

セルの右側に左丸括弧を入力して変換を使用することで、特定の呼び出しのコンストラクター呼び出しを作成できるようになりました。 これは、この演算をサポートするすべての Kotlin 型に機能します(この機能はユーザー型に拡張可能です)。また、関数型インターフェース型からラムダを作成する場合など、特定の型のデフォルト式の作成が簡単になります。

scopes の拡張関数の改善

スコープ内の拡張関数の改善

スコープ内の拡張関数がスコープ内の互換性のあるメソッドを除外しないように変更されました。 これには、現在のタイプのシステム実装のパフォーマンスが原因で適用できない項目がスコープ内に含まれてしまう難点があります。

適用できない関数が選択された場合、参照は、関数参照の自動解決によって修正されます。

classpath と VM オプションをリセットする新しいインテンション

classpath と VM オプションをリセットする新しいインテンション

新しいインテンションは MPSStartupScript ノートを更新し、VM オプションと classpath 値を現在の MPS 値に設定します。 MPS VM オプションと claspath の値は新しいリリースごとに変化します。 以前はユーザーがスタンドアロン型 IDE のビルドプロジェクトを手動で更新する必要がありました。

移行ガイド

各メジャーリリースでは、旧バージョンの MPS から円滑に移行できるような移行手順を準備しています。 必要な手順をよく確認してください。