The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Visual Studio Code用Quarkus Tools - 1.10.0リリース

Quarkus Tools for Visual Studio Code 1.10.0が VS Code MarketplaceOpen VSX でリリースされました。すべての変更点のリストについては、 変更履歴を参照してください。

前回のQuarkus Tools for VS Codeのリリースから約8ヶ月が経ちました。8ヶ月!?本当に長い時間ですね。1.10.0では、いくつかの新機能を導入しています。

Quteテンプレートエンジン のサポートが導入されたため、リリースの安定化に多くの時間を費やしました。私たちは、そのために耐障害性のあるパーサーを書き、様々な診断、コードアクション、補完を提供し、JavaソースファイルとQuteテンプレートファイル間の統合が非常にスムーズになるように最善を尽くしました。実際、非常に多くの新機能があるので、Quarkusエクステンション内のQuteサポートについては、別の記事を作成する予定です。しかし、Quarkusのツールにも、基盤となるMicroProfileのツールにも、多くの改良点があります。

Quarkus側の1.10.0に期待出来ることは、以下の通りです。

設定の全貌

これまで、プロパティのプレフィックス(例: %dev.name )によって設定プロファイルをサポートしていましたが、今回、プロファイルを意識したファイルもサポートするようになりました。MicroProfile 2.0 のリリースでは、この他にも多くの機能をサポートするようになりました。

Support for configuration profiles

JREを裏に隠す

TL;DR : Windows、Linux、またはMacOS(x86_64またはARM64アーキテクチャ)では、VS CodeでQuarkusツールを実行するためにJREを提供する必要はありません。

Quarkus Toolsとその依存関係を実行するには、以前はJRE(Java Runtime Environmentバージョン11以降)が必要でした。これは、言語サービスがJavaベースであるためです。しかし、最近のアップデートにより、私たちの基盤となるJavaツールサポートは、独自のJavaランタイムを win32-x64, linux-x64, linux-arm64, darwin-x64, および darwin-arm64 で提供しています。つまり、このようなシステムを使用している場合、エクステンションがJava 11のいずれかのバージョンを検出できるようにする必要はありません。

すべてのアノテーションのサポート

ちょっと大げさかもしれませんが、この新しいリリースで導入されたもののひとつに、さまざまなアノテーションのための優れた診断をすばやく書くことを容易にする小さなフレームワークがあります。本当に簡単な例として、 @Scheduled アノテーションの delay メンバ値の検証をサポートするために必要なコードを紹介します。

<extension point="org.eclipse.lsp4mp.jdt.core.javaASTValidators">
      <!-- Java validation for the Quarkus @Scheduled annotation delay member-->
      <annotationValidator annotation="io.quarkus.scheduler.Scheduled" source="quarkus">
         <attribute name="delay" range="0" /> <!-- x >=0 -->
      </annotationValidator>
   </extension>

これにより、本当に簡単な検証の多くを処理し、複雑なものを正しくすることに時間を割くことができるようになりました。

私たちの生活が楽になるだけでなく、より多くのコントリビューターにエクステンションを開放することができるのです。

@Bulkhead, @Timeout, @Asynchronous, @Scheduled のアノテーションの基本的な検証をサポートするようになりました。

Asynchronous annotation validation support

@Scheduled の場合、 @ConfigPropertyname メンバと同様に、cron 式をアプリケーションのプロパティ定義にリンクします。このような場合、Java ソースファイルを Quarkus 設定ファイルに簡単に関連付けることができます。

それは、些細なことです

既存の機能については、より既存のユースケースをカバーし、問題点を簡単に指摘し、解決策を提案できるようにしたいと思いました。

たとえば、Quarkusアプリケーションの起動時に、コードレンズURLエンドポイント( microprofile.tools.codeLens.urlCodeLensEnabled 設定により有効)は @ApplicationPath をサポートし、その値が考慮されるようになりました。

ApplicationPath annotation on a type declaration

この例では、 @ApplicationPath/api に設定されており、メソッド宣言上のコード(下記)はそれを考慮して URL を生成しています。

Code lens on method declaration respects the value of ApplicationPath

また、 @Retry のようなアノテーションでは、技術的には許されていても、望ましくない使用方法について、時間をかけてユーザーに警告しています。

Retry annotation validation support

この例では、メソッドを再試行するまでの遅延時間と、再試行を試みるまでの最大時間が同じです。これは、これらの設定が意図したとおりに使用されていないことを意味します。 jitterjitterDelayUnit のようなメンバ値を使用してさらに複雑にした場合、これらの警告は不適切に設定された値を示す良い指標となります。

@ConfigProperty アノテーションでは、安全性を高めるために、 defaultValue のメンバをフィールド宣言に対して検証するようにしました。

Validation for ConfigProperty defaultValue

defaultValue を使用せず、アプリケーションのプロパティでプロパティが定義されていない場合、同様に自動生成するコードアクションを用意しています。

Code action defaultValue

コード補完もあります!

結局のところ、誰もが、よくわからない設定を追い求める時間を減らし、ロジックの開発に時間をかけたいと思うものなのです。

Javaソースのメソッドに @CacheResult アノテーションを使用している場合、設定ファイルからそのメソッドを構成するために利用可能な設定を自動的に提案します。また、変更に対してかなり敏感に反応するので、何か問題が発生したときにいつでも知ることができます。

Completion support for CacheResult

@ConfigMapping は、アプリケーションのプロパティを補完するだけでなく、いくつかの基本的な検証もサポートされるようになりました。

Completion support for ConfigMapping

VS Code エクステンションをお試しいただき、フィードバックをお待ちしています。 redhat-developer/vscode-quarkus, redhat-developer/vscode-microprofile, redhat-developer/quarkus-ls, eclipse/lsp4mp, redhat-developer/vscode-java そして eclipse/eclipse.jdt.ls の多くの貢献者に感謝します。新たに追加されたQuteの機能についての投稿をお楽しみに。