Contribute to Quarkus documentation

QuarkusのWebサイトポータルでコンテンツが正常にレンダリングされるように、推奨されるコンテンツタイプ、ステップ、ワークフロー、スタイルガイダンスを使用して、ドキュメントに貢献します。

Quarkusのドキュメントには、 AsciiDoc のマークアップが使用されています。

前提条件

Quarkus docsのソースファイルの場所を確認する。

  • AsciiDocファイルが、Quarkus GitHub リポジトリー. の docs モジュール内の src/main/asciidoc ディレクトリーにある。

  • Quarkus ドキュメントテンプレートは、Quarkus GitHub リポジトリー の docs モジュール内の src/main/asciidoc/_templates ディレクトリーにあります。

  • 設定ドキュメントは、Javaソースファイル内のJavaDocコメントから生成されます。

  • JavaやYAMLなどのソースファイルをAsciiDocのファイルから 参照 することも可能です。

  • Quarkusのドキュメント メニューページは、doc indexページとも呼ばれ、 quarkusio.github.io リポジトリにソースがあります。

QuarkusのコンテンツをAsciiDocで作成

Quarkusドキュメントホームページ にコンテンツが正しく表示されるようにするには、次のステップを使用します:

  1. 投稿するコンテンツに最適な Diataxis のコンテンツタイプを決めましょう。

    To help you decide, see the content type descriptions in Titles and headings on the "About Quarkus documentation" page.
  2. src/main/asciidoc/_templates ディレクトリに移動し、選択したコンテンツタイプに対応するテンプレートのコピーを作成します。必ず、以下のようにしてください:

    • ファイル名の構文は <category> -<titlekeyword> -<titlekeyword> .adoc。たとえば、 security-basic-authentication.adoc です。

    • 必要に応じて、ダイアタキシスの種類 (概念、ハウツー、リファレンス、チュートリアル) をファイル名に含めます。 たとえば、 telemetry-micrometer.adoc はリファレンスであり、 telemetry-micrometer-tutorial.adoc はチュートリアルです。

    • quarkus リポジトリの docs/src/main/asciidoc フォルダに保存してください。

  3. 次の例に示すように、Web サイトポータルとドキュメントのホームページでコンテンツが正しく表示されるように、最低限必要なヘッダー情報を設定します。

    [id="security-basic-authentication"] (1)
    = Secure a Quarkus application with basic authentication (2)
    include::_attributes.adoc[] (3)
    :diataxis-type: howto (4)
    :categories: security,web (5)
    (6)
    1 id 値をファイル名と同じ (拡張子なし) に設定します。
    2 各コンテンツタイプに適したタイトルの作成方法については、「Quarkusスタイル・コンテンツガイドライン」ページの タイトルと見出し を参照してください。
    3 属性が解決され、目次が生成されるようにするには、 _attributes.adoc include が必要です。
    4 concept、 howto、 reference、または tutorial から diataxis のタイプを指定します。
    5 Quarkusドキュメントのホームページ でコンテンツが検索できるように、少なくとも1つのカテゴリーを設定してください。Quarkusのカテゴリのリストについては、「Quarkusスタイル・コンテンツガイドライン」ページの ドキュメントの属性と変数 を参照してください。
    6 すべてのドキュメント属性の後、要約の前に空白行を挿入します。

    ドキュメント ID とタイトル、属性 include (include::_attributes.adoc[])、およびその他のドキュメント属性の宣言 (:attribute:) の間に空白行がないことを確認します。

  4. ガイドの目的を説明する要約を追加します。

    Quarkusガイド のホームページに自動的に表示されるため、要約の最初の文は、コンテンツの価値と何らかの利益を27単語以内で説明する必要があります。また、要約の前後で改行する必要があります。

ヘッダーの最小要件の詳細については、「Quarkusスタイル・コンテンツガイドライン」ページの ドキュメント構造 を参照してください。

前提条件セクションの追加

方法やチュートリアルのトピックの場合は、要約の直後に前提条件のセクションを含めます。 前提条件を宣言すると、方法のコンテンツとチュートリアルコンテンツの両方がどこから始まるのかが明確になります。 知識のあるユーザーにとっては明確なことであって、前提条件は含めてください。

An example prerequisite with callout explanations
.Prerequisites (1)

:prerequisites-time: 30 minutes (2)
include::{includes}/prerequisites.adoc[] (3)
* <an additional prerequisite> (4)
1 前提条件のセクション見出し
2 オプション: 前提条件を変更する属性
3 prerequisites.adoc ファイルの include ステートメント
4 オプション: 属性でカバーされていない追加の前提条件
デフォルトの前提条件

デフォルトでは、 include::./_includes/prerequisites.adoc[] は次の asciidoc を挿入します。

To complete this guide, you need:

* Roughly 15 minutes
* An IDE
* JDK 11+ installed with `JAVA_HOME` configured appropriately
* Apache Maven {maven-version}
* Optionally the xref:cli-tooling.adoc[Quarkus CLI] if you want to use it
* Optionally Mandrel or GraalVM installed and xref:building-native-image.adoc#configuring-graalvm[configured appropriately] if you want to build a native executable (or Docker if you use a native container build)
属性を使用した前提条件の変更

オプションで、 include::./_includes/prerequisites.adoc[] マクロ の前の行に次の属性を挿入することで、デフォルトの前提条件を追加、削除、または変更できます。

  • {prerequisites-time} :<number of minutes> ` はデフォルト値の 15 分を上書きします。たとえば、 `{prerequisites-time}: 30 は *約 30 分 を追加します。

  • {prerequisites-no-maven} は * Apache Maven <maven version> を削除します。

  • {prerequisites-docker} は *動作するコンテナランタイム(Docker, Podman) を追加します。

  • {prerequisites-docker-compose} は Docker および Docker Compose または Podman、および Docker Compose を追加します。

  • {prerequisites-no-cli} は、 *CLI を使用する場合は Quarkus CLI を使用する を削除します。

  • {prerequisites-no-graalvm} または {prerequisites-graalvm-mandatory} は *ネイティブ実行可能ファイルをビルドする場合、MandrelまたはGraalVM(あるいはネイティブなコンテナビルドを使用する場合はDocker)をインストールし、 適切に設定している を削除します。

  • {prerequisites-graalvm-mandatory} は、MandrelまたはGraalVMがインストールされ、 適切に設定されていること を追加します。

これらの属性の詳細は、 docs/src/main/asciidoc/_includes/prerequisites.adoc ファイルの内容を確認してください。

既存のQuarkus AsciiDocソースファイルの削除とリダイレクト

コンテンツの進化に伴い、既存のQuarkusコンテンツを1つまたは複数のコンテンツタイプに再編成し、既存のAsciiDocソースファイルを破棄したい場合があります。

公開済みの Quarkus AsciiDoc ソースファイルを廃止または名前変更する場合は、再構築によって既存のブックマークや元のコンテンツへのリンクが壊れないように注意してください。 次の手順に従って、Quarkus.io Web サイト GitHub リポジトリーで URL リダイレクトを設定します。

  1. Switch to the quarkusio/quarkusio.github.io repository, and open the _redirects/guides folder.

  2. 破棄したい元のAsciiDocのソースファイル名と一致するファイル名のリダイレクトファイルをMarkdown形式で作成します。

  3. Markdownリダイレクトファイルに、以下の内容を追加します:

    ---
    link: /guides/<original_asciidoc_filename>/index.html (1)
    newUrl: /guides/<new_asciidoc_filename> (2)
    ---

    以下の場合:

    1 廃止する元の AsciiDoc ソースファイルの名前 (.adoc ファイル拡張子なし)。
    2 リダイレクト先の AsciiDoc ソースファイルの名前 (.adoc ファイル拡張子なし)。
Table 1. 例
元のAsciiDocソースファイル名 リダイレクト先となるファイル名 リダイレクトファイル プルリクエストの例

security-getting-started

security-overview-concept

security-getting-started.md

PR #1579

アンカーを使用したファイル内およびファイル間のコンテンツの相互参照

アンカー (ID とも呼ばれます) は、セクションタイトル、個別の見出し、段落、イメージ、区切られたブロック、インラインフレーズなど、ドキュメント内のほぼどこにでも定義できます。

これらのアンカーのコールアウト関数は、ローカル ID を呼び出すか、別のファイルの ID を呼び出すかによって異なりますが、アンカー ID の作成は同じままです。

アンカー ID の作成

参照する新しいファイルまたはセクションの ID を作成するには、次のようにアンカー ID を挿入します。

  • 小文字を使用してください。

  • 各単語をダッシュ文字で区切ります。

  • ID を二重の角括弧で囲みます。

アンカー ID の作成例

このセクションでは、デモンストレーションの目的でレベル 2 の見出しの上に作成されたアンカーを使用します。

[[title-heading]]
== Title heading

同じファイル内のアンカー ID の呼び出し

同じファイルに作成されたアンカーを呼び出すには、 <<>> xref マクロにアンカーIDを挿入してください。

Inter-document anchored ID call example
<<title-heading>>

このマクロは、アンカーされた見出し、セクション、または表から自動的に取得された名前を指定して URL を作成します。

Do not use the <<>> format with the verbatim heading or section description, such as <<Title heading>>.

URL にデフォルト以外のキャプションを指定する場合は、アンカー ID と希望の名前を空白なしで , で区切って指定します。

Anchor with a custom URL caption example
<<title-heading,Title heading description that fits the context of your content>>

別のファイルからアンカー ID を呼び出す

別のファイルで作成されたアンカーを呼び出すには、アンカーを xref マクロに挿入し、ホスティングファイルの完全な名前と目的のアンカー ID を指定します。

Cross-document anchored ID call example
xref:<other-file-name>.adoc#title-heading[Title heading]

この例を分解すると、 xref マクロを使用して別のファイルを参照しています (xref:<name-of-the-file>.adoc[人間が読めるラベル]) を作成し、ファイル名の直後に対象セクションのアンカー ID (#title-heading) を挿入します。

推奨されるパス属性を含む相互参照の記述に関する詳細なガイドラインについては、相互参照 を参照してください。

Quarkusドキュメントのプレビューとビルド

Pull Request を送信する前に、以下のビルド方法のいずれかを使用して、AsciiDoc ソースの HTML 出力をプレビューしてください:

  • ちょっとしたドキュメントの変更であれば、IDEが提供するAsciiDocのシンタックスハイライトとプレビューを利用することができます。

  • 生成された設定ドキュメントの大幅な変更や更新は、 docs モジュールをローカルでビルドし、以下のセクションで説明するように Vale linter を実行してください。

Build the docs module locally

以下は、Quarkusリポジトリにあるすべてのモジュール(テストモジュールを除く)をビルドし、 `999-SNAPSHOT`バージョンでローカルmavenリポジトリにインストールします:

./mvnw -DquicklyDocs

-DquicklyDocs の実行は以下を生成します:

  • target/asciidoc/generated/config/ ディレクトリに自動生成の設定プロパティを記述したAsciiDoc( adoc ファイル)

  • docs/target/generated-docs/ ディレクトリにAsciiDoc出力( html ファイル)。

  • 全ドキュメント個別のメタデータを含むYAML ( `docs/target/indexByFile.yaml `) とドキュメントタイプ別にグループ化したメタデータを含むYAML ( `target/indexByType.yaml `)。

  • ファイル別にメタデータのエラーをリストアップするYAMLファイル( `docs/target/errorsByFile.yaml `)と、エラーの種類別にメタデータのエラーをリストアップするYAMLファイル( `docs/target/errorsByType.yaml `)

変更をPRで提出し、レビューを受ける前に、結果の出力をレビューし、問題があれば修正を行ってください。

変更を加えると、特に docs モジュールを再構築して、生成された HTML を更新できます。

./mvnw -f docs clean install

エクステンションの設定を更新する場合:

  1. エクステンションのJavadocを改訂する

  2. target/asciidoc/generated/config/ にコンテンツを生成するためにエクステンションをビルドする

  3. docs モジュールをビルドして、レンダリング結果を確認する。

Valeによるドキュメント変更の性的解析

我々は Vale を使用して、英語版ドキュメントの文法、スタイル、単語の使用状況をチェックしています。独自のValeスタイルルールセットを作成し、コンテンツがQuarkusの推奨スタイルガイドラインに沿うようにしました。

  • ValeのQuarkusの設定は、 docs/.vale.ini にあります。

  • Quarkusのスタイルルールは、 docs/.vale/styles ディレクトリにあるYAMLフォーマットです。

コンテナ化されたVale

この方法では、動作するコンテナランタイム(Dockerまたは Podman )が必要です。

docs モジュールには、JUnit 5 テストがあり、コンテナ内で Vale リンターを実行します( Testcontainers を使用)。QuarkusドキュメントのメタデータとValeスタイルルールの両方が検証されます。

以下のいずれかの方法でテストを実行します:

./mvnw -f docs test -Dvale -DvaleLevel=suggestion (1)
./mvnw -f docs test -Dvale=git -DvaleLevel=warning (2)
./mvnw -f docs test -Dvale='doc-.*' -DvaleLevel=error (3)
1 docs モジュールの src/main/asciidoc ディレクトリにあるすべての *.adoc ファイルに対して Vale linter を実行します。結果には提案、警告、エラーが含まれます。
2 docs モジュール内の変更された *.adoc ファイル ( git status )に対して Vale linter を実行します。結果には警告とエラーが含まれます。
3 正規表現(Java Pattern構文)に一致する *.adoc ファイルに対して、Vale linterを実行します。結果にはエラーが含まれます。

Vale CLIの使用

Vale CLI をインストールした場合、設定ファイルとスキャンするファイルのディレクトリまたはリストを指定する必要があります:

# Run from the Quarkus project root
vale --config=docs/.vale.ini --minAlertLevel=warning docs/src/main/asciidoc

# Run from within the docs directory
vale --minAlertLevel=warning src/main/asciidoc

詳しくは、 Vale CLI Manual をご覧ください。

Vale IDE プラグイン

Vale IDEとの連携 には、Vale CLIがインストールされていることが必要です。

各 IDE インテグレーションには独自の設定要件があります。たとえば、Visual Studio Code IDE エクステンションでは、Vale CLI パスの定義が必要です。

"vale.valeCLI.path": "/path/to/vale"

ドキュメント更新のためのプルリクエストの作成

Quarkus リポジトリーの main ブランチに対して、https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork[プルリクエストの作成] を行い、自身の リポジトリーのフォーク から Quarkus のコアドキュメントに変更案を提出します。

コードとドキュメントのレビューには、さまざまな参加者 (重複する場合もある) がいます。 共同レビューを簡素化するには、ドキュメントへの変更を別々の PR に分離するか、PR の目的が 1 つに絞られていることを確認します。例:

  • エクステンションの設定オプションを追加し、変更を説明するために関連資料 (ハウツー、リファレンス) を更新する単一の PR を作成します。

  • ドキュメントのグループに関連する変更に対して単一の PR を作成します。例: 用語の使用法を修正したり、繰り返し発生するエラーを修正したり、共通のコンテンツを共有ファイルに移動したりします。

  • 広範囲なコード変更とドキュメント変更がある場合、ドキュメント変更のために別のPRを作成し、Issueの説明にその関係性を含めてください。

GitHub は、ドキュメントファイルへの変更を含むプルリクエストに area/documentation ラベルを自動的に追加します。

プルリクエストの管理の詳細は、Quarkus でコミットする方向けの情報 を参照してください。

PR diffの自動スタイルチェック

PRが作成または更新されると、Valeのリンタージョブが自動的に実行されます。コンテンツの更新がQuarkusコミュニティの主要なスタイルや用語の好みと一致しない場合、diffタブの更新行にValeの推奨事項の注釈が付きます。コンテンツが承認されるように、リンターのエラー、警告、および提案を修正してください。

Quarkusのドキュメントスタイルガイドラインに関するご意見をお待ちしております。

Valeの結果に同意できない場合は、黄色のPRラベル needs-vale-rule-tweak を付けてください。

QuarkusのWebサイトでdocの変更点をプレビューする

After your PR is merged to main and the branch is synchronized with the Quarkus.io website repository, you can preview the resulting build output on the Main branch (SNAPSHOT) documentation page of the Quarkus site.

quarkus リポジトリの main ブランチは、毎日グリニッジ標準時の午前1時に同期されるため、次のサイト更新が行われるまで、 Main ブランチ(SNAPSHOT )での変更をプレビューすることはできません。