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

Qute Templating Engineのサポート - Quarkus Tools for Visual Studio Codeで提供開始

Quarkus Tools for Visual Studio Codeのバージョン1.10.0が VS Code MarketplaceOpen 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 サポート機能の恩恵を受けることができます。現在のファイルがサポートされているかどうかを確認するには、「 言語モードの選択」オプションで、以下のいずれかが選択されていることを確認してください。

Qute languages

図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 エクステンションを追加するオプションがあります。

RESTEasy Qute Extension

図2: _Quarkusの_拡張ステージにおけるQuteエクステンションオプション _:Quarkusプロジェクトの生成_コマンド

Quteのテンプレートを自分で始めてみたいですか? 方法については こちらを参照して下さい。

JavaとQuteのテンプレートファイル間の統合

Quteのテンプレートを生成したり、アクセスするための迅速で簡単な方法は、CodeLensのサポートを利用することです。 qute.codeLens.enabled 設定は、Qute CodeLens を表示するかどうかを制御します。

CodeLens Setting

図3:Qute CodeLensの設定画面

これで、どの Template 属性にも、対応する Qute テンプレートを生成するか、既存のテンプレート・ファイルに移動するかのオプションが表示されるようになりました。

CodeLens Template Inject

図4:Template を用いた、CodeLensによるQuteテンプレート・ファイルの生成とナビゲーション

さらに、 @CheckedTemplate のアノテーションが付いた Java ファイルは、その TemplateInstance フィールドに、対応する Qute テンプレートを生成するか、既存のテンプレート・ファイルに移動するかのオプションが表示されます。

CodeLens Checked Template

図5:`@CheckedTemplate`を用いたQuteテンプレート・ファイルへのナビゲーションとCodeLensの生成

テンプレートファイルは常にプロジェクトの既存の src/main/resources/templates ディレクトリの下に作成されます。なければ、テンプレートを格納するために必要なディレクトリを作成します。

対応するJavaリソースと組み合わされた全てのQuteファイルは、定義への移動、ホバー、オートコンプリートなど、多くの言語クライアント機能をサポートしています。これらのそれぞれについて、記事の中でさらに掘り下げていきます。

Java to Template Navigation

図6:Java-to-templateインタラクションの概要

これらの機能は、Quteのテンプレートを効率的に使い始め、複数のテンプレートファイルを操作するのに便利です

Quteテンプレートにおけるメソッドパラメータのサポート

Qute言語サーバーは、ビルトインおよびユーザー定義のJavaクラスをサポートしており、そのメソッドに対するパラメータ補完や検証を行うことができます。これを利用して、Javaに関連するミスを簡単に回避してください。

Method Parameter Support

図7:組み込みJavaメソッドとQuarkus Javaファイルのメソッドパラメータのサポート

QuteテンプレートのJavaタイプホバーサポート

Java補完と検証のサポートに加え、組み込みおよびユーザー定義のJavaクラスに対するタイプホバーリングもサポートしています。

Java Type Hover

図8:組み込みJavaクラスとユーザー定義クラスのJavaタイプホバーサポート

Quteテンプレートにおけるリンクされた編集範囲のサポート

多くの言語クライアントと同様に、Quteテンプレートでも連動編集がサポートされ、複数のパラメータ式の名前を同時に変更することができるようになりました。この機能を有効にするには、 settings.json で、 editor.linkedEditing を true に設定する必要があります。

Linked Editing

図9:Quteテンプレート連動編集サポート

Quteセクションの補完

Quteのテンプレートは、テンプレート言語のセクションを使用して、コンパイルと表示時に必要なロジックを実行します。これをサポートするために、拡張のQuteサポートは、利用可能なすべてのQuteセクションと、それらが取るパラメータ、およびその使用方法の小さなコードスニペットを補完リストに入力します。

Section Completion

図10:セクションスタートによるQuteのセクション補完

Quteの各セクションについては、 こちらをご覧ください。

Qute Validationのサポート

Quarkus Tools for Visual Studio Codeを使用したQuteテンプレートには、JavaおよびQuteの検証が含まれており、診断やクイックフィックスの提案が行われます。

Parameter Quick Fix

図 11: パラメータ宣言 Qute クイックフィックスの提案

qute.validation.enabled は、現在のワークスペースのグローバルな検証を制御し、 qute.validation.excluded は、検証を無視すべき Qute テンプレートを入力することができます。

Enable/Disable Qute Validation Settings

図 12: Qute のグローバルおよびローカルな検証を有効にするための設定

利用可能な検証のいずれかが、開発の妨げになっている場合、Qute テンプレートを開 く際にエディタバーの右上に表示されるボタンを使って、現在のファイルの Qute 検証 をワンクリックで無効にするか、Qute 関連の診断に毎回表示される「クイックフィックス」 を使ってワークスペース全体の検証を無効にしてください。

Enable/Disable Qute Validation

図 13: ファイル単位およびグローバルでの Qute 検証の有効化/無効化

Qute Value Resolversの補完

対応するJavaメソッドと対になって、組み込みのJavaクラスは、Quteテンプレートエンジンによって利用可能になった組み込みのQute値リゾルバを持ち、評価されて値を出力、または値に解決します。Quarkus Tools for Visual Studio Codeは、これらの組み込み値リゾルバの補完、ホバー、スニペット生成をサポートしています。

Value Resolver Completion

図14:take、orEmpty、orなどの組み込みのQute value resolverのサポートとJavaドキュメント

これらのQute値リゾルバの一覧は こちらをご覧ください。

TemplateExtension メソッドのサポート

テンプレート拡張メソッドは、データオブジェクトのアクセス可能なプロパティのセットを拡張するために使用されます。Quarkus Tools for Visual Studio Code の Qute サポートでは、マーク付きの @TemplateExtension Java メソッドをサ ポートしており、与えられたデータモデルを拡張することができます。

@TemplateExtension Support

図 15: @TemplateExtension データモデルメソッドのサポート

詳しくは こちら@TemplateExtension )をご覧ください。

QuteテンプレートへのBeanの直接注入のサポート

@Named でアノテーションされた CDI Bean は、cdi および/または inject 名前空間を通して、任意のテンプレートで参照することができます。Quarkus Tools for Visual Studio Codeは、Beanの補完と定義ナビゲーションのサポートを提供します。

Injecting Beans Directly into Qute Templates

図16: @Named アノテーションの使用により、Quteテンプレートに対するBeanインジェクションのサポートが可能になります。

Beansインジェクションについて詳しくは こちらをご覧ください。

次のステップ

この記事では、Quarkus Tools for Visual Studio CodeのQuteテンプレートサポートが提供する注目すべき機能のいくつかを紹介出来ていると嬉しく思います。次回Quarkusプロジェクトで作業を行う際に、これらを試してみることをお勧めします。

ご意見・ご感想はこちらお気軽に GitHub issueをオープンしてください

Quteテンプレートエンジンに多くの実験的な機能が追加されているため、Qute言語サポートの更新を継続し、世界中のQuarkus開発者や意欲的な開発者にQuteを試してもらうことを目指しています。