Qute Templating Engineのサポート - Quarkus Tools for Visual Studio Codeで提供開始
Quarkus Tools for Visual Studio Codeのバージョン1.10.0が VS Code Marketplace と Open VSX でリリースされました。
Quarkus Tools for Visual Studio Code - 1.10.0リリース に関するブログポストをまだご覧になっていない方は、この待望のリリースで導入された素晴らしい機能をご覧ください。
1.10.0リリースで追加された主な新機能の1つは、Quarkus固有の テンプレートエンジンであるQute の言語サポートの導入です。これらの新機能により、Quarkusの開発者は、Quarkus Javaプロジェクトに加えた変更を可視化できます。 src/main/resources/templates
にあるすべてのファイルとサブディレクトリの変更と修正が監視され、すぐに可視化されるようになりました。
Quarkus Tools for Visual Studio CodeエクステンションをインストールしたVisual Studio Codeで開く任意のQuarkusプロジェクトでは、 src/main/resources/templates
以下のすべての .html
、 .txt
、 .yaml
、 .json
ファイルにQuteサポートと構文の強調表示が提供されます。さらに、上記の拡張ファイルの前に追加されたすべての .qute.
(すなわち、 *.qute.html
)も、Qute サポート機能の恩恵を受けることができます。現在のファイルがサポートされているかどうかを確認するには、「 言語モードの選択」オプションで、以下のいずれかが選択されていることを確認してください。
図1:対応するQuteの言語モード
Quarkus Tools for Visual Studio コードに含まれる Qute 機能の詳細については、 ドキュメントを参照し てください。また、Qute テンプレーティングエンジンの機能については、 Qute Reference Guideを参照 してください。
現在サポートされているQuteの全機能のリストについては、 変更履歴を参照してください。
それでは、1.10.0リリースで導入された素晴らしいQuteの機能について、さらに深く掘り下げてみましょう。
Quteの新機能
Quarkus Tools for Visual Studio Code 1.10.0に含まれるQuteの注目すべき機能は以下のとおりです。
-
Quarkus Qute Templating Extension入門
-
JavaとQuteのテンプレートファイル間の統合
-
Quteテンプレートにおけるメソッドパラメータのサポート
-
QuteテンプレートのJavaタイプホバーサポート
-
Quteテンプレートにおけるリンクされた編集範囲のサポート
-
Quteセクションの補完
-
Qute Validationのサポート
-
Qute Value Resolversの補完
-
TemplateExtension メソッドのサポート
-
QuteテンプレートへのBeanの直接注入のサポート
Quarkus Qute Templating Extension入門
Quarkus: Generate a Quarkus project コマンドを使用すると、ダウンロードしたQuarkusプロジェクトをQuteテンプレートで初期化するために、 RESTEasy Qute
エクステンションを追加するオプションがあります。
図2: _Quarkusの_拡張ステージにおけるQuteエクステンションオプション _:Quarkusプロジェクトの生成_コマンド
Quteのテンプレートを自分で始めてみたいですか? 方法については こちらを参照して下さい。
JavaとQuteのテンプレートファイル間の統合
Quteのテンプレートを生成したり、アクセスするための迅速で簡単な方法は、CodeLensのサポートを利用することです。 qute.codeLens.enabled
設定は、Qute CodeLens を表示するかどうかを制御します。
図3:Qute CodeLensの設定画面
これで、どの Template
属性にも、対応する Qute テンプレートを生成するか、既存のテンプレート・ファイルに移動するかのオプションが表示されるようになりました。
図4:Template
を用いた、CodeLensによるQuteテンプレート・ファイルの生成とナビゲーション
さらに、 @CheckedTemplate
のアノテーションが付いた Java ファイルは、その TemplateInstance
フィールドに、対応する Qute テンプレートを生成するか、既存のテンプレート・ファイルに移動するかのオプションが表示されます。
図5:`@CheckedTemplate`を用いたQuteテンプレート・ファイルへのナビゲーションとCodeLensの生成
テンプレートファイルは常にプロジェクトの既存の src/main/resources/templates
ディレクトリの下に作成されます。なければ、テンプレートを格納するために必要なディレクトリを作成します。
対応するJavaリソースと組み合わされた全てのQuteファイルは、定義への移動、ホバー、オートコンプリートなど、多くの言語クライアント機能をサポートしています。これらのそれぞれについて、記事の中でさらに掘り下げていきます。
図6:Java-to-templateインタラクションの概要
これらの機能は、Quteのテンプレートを効率的に使い始め、複数のテンプレートファイルを操作するのに便利です
Quteテンプレートにおけるメソッドパラメータのサポート
Qute言語サーバーは、ビルトインおよびユーザー定義のJavaクラスをサポートしており、そのメソッドに対するパラメータ補完や検証を行うことができます。これを利用して、Javaに関連するミスを簡単に回避してください。
図7:組み込みJavaメソッドとQuarkus Javaファイルのメソッドパラメータのサポート
QuteテンプレートのJavaタイプホバーサポート
Java補完と検証のサポートに加え、組み込みおよびユーザー定義のJavaクラスに対するタイプホバーリングもサポートしています。
図8:組み込みJavaクラスとユーザー定義クラスのJavaタイプホバーサポート
Quteテンプレートにおけるリンクされた編集範囲のサポート
多くの言語クライアントと同様に、Quteテンプレートでも連動編集がサポートされ、複数のパラメータ式の名前を同時に変更することができるようになりました。この機能を有効にするには、 settings.json
で、 editor.linkedEditing
を true に設定する必要があります。
図9:Quteテンプレート連動編集サポート
Quteセクションの補完
Quteのテンプレートは、テンプレート言語のセクションを使用して、コンパイルと表示時に必要なロジックを実行します。これをサポートするために、拡張のQuteサポートは、利用可能なすべてのQuteセクションと、それらが取るパラメータ、およびその使用方法の小さなコードスニペットを補完リストに入力します。
図10:セクションスタートによるQuteのセクション補完
Quteの各セクションについては、 こちらをご覧ください。
Qute Validationのサポート
Quarkus Tools for Visual Studio Codeを使用したQuteテンプレートには、JavaおよびQuteの検証が含まれており、診断やクイックフィックスの提案が行われます。
図 11: パラメータ宣言 Qute クイックフィックスの提案
qute.validation.enabled
は、現在のワークスペースのグローバルな検証を制御し、 qute.validation.excluded
は、検証を無視すべき Qute テンプレートを入力することができます。
図 12: Qute のグローバルおよびローカルな検証を有効にするための設定
利用可能な検証のいずれかが、開発の妨げになっている場合、Qute テンプレートを開 く際にエディタバーの右上に表示されるボタンを使って、現在のファイルの Qute 検証 をワンクリックで無効にするか、Qute 関連の診断に毎回表示される「クイックフィックス」 を使ってワークスペース全体の検証を無効にしてください。
図 13: ファイル単位およびグローバルでの Qute 検証の有効化/無効化
Qute Value Resolversの補完
対応するJavaメソッドと対になって、組み込みのJavaクラスは、Quteテンプレートエンジンによって利用可能になった組み込みのQute値リゾルバを持ち、評価されて値を出力、または値に解決します。Quarkus Tools for Visual Studio Codeは、これらの組み込み値リゾルバの補完、ホバー、スニペット生成をサポートしています。
図14:take、orEmpty、orなどの組み込みのQute value resolverのサポートとJavaドキュメント
これらのQute値リゾルバの一覧は こちらをご覧ください。
TemplateExtension メソッドのサポート
テンプレート拡張メソッドは、データオブジェクトのアクセス可能なプロパティのセットを拡張するために使用されます。Quarkus Tools for Visual Studio Code の Qute サポートでは、マーク付きの @TemplateExtension
Java メソッドをサ ポートしており、与えられたデータモデルを拡張することができます。
図 15: @TemplateExtension
データモデルメソッドのサポート
詳しくは こちら( @TemplateExtension
)をご覧ください。
QuteテンプレートへのBeanの直接注入のサポート
@Named
でアノテーションされた CDI Bean は、cdi および/または inject 名前空間を通して、任意のテンプレートで参照することができます。Quarkus Tools for Visual Studio Codeは、Beanの補完と定義ナビゲーションのサポートを提供します。
図16: @Named
アノテーションの使用により、Quteテンプレートに対するBeanインジェクションのサポートが可能になります。
Beansインジェクションについて詳しくは こちらをご覧ください。
次のステップ
この記事では、Quarkus Tools for Visual Studio CodeのQuteテンプレートサポートが提供する注目すべき機能のいくつかを紹介出来ていると嬉しく思います。次回Quarkusプロジェクトで作業を行う際に、これらを試してみることをお勧めします。
ご意見・ご感想はこちらお気軽に GitHub issueをオープンしてください。
Quteテンプレートエンジンに多くの実験的な機能が追加されているため、Qute言語サポートの更新を継続し、世界中のQuarkus開発者や意欲的な開発者にQuteを試してもらうことを目指しています。