# YAML front matter の使用

YAML frontmatter では、バージョン管理の定義、メタデータの追加、記事のレイアウトの制御を行うことができます。

## YAML frontmatter について

YAML frontmatter は、Jekyll によって普及しているオーサリング規則であり、ページにメタデータを追加するのに使えます。
これは、 GitHub Docs内のすべての Markdown ファイルの先頭に存在するキー値コンテンツのブロックです。 詳しくは、[YAML フロントマターのドキュメント](https://jekyllrb.com/docs/front-matter/)をご覧ください。

## YAML frontmatter の値

次のフロントマッター値には、 GitHub Docsの特別な意味と要件があります。
また、すべてのページの frontmatter を検証するためにテスト スイートが使用するスキーマもあります。
詳細については、「[`lib/frontmatter.ts`](https://github.com/github/docs/blob/main/src/frame/lib/frontmatter.ts)」を参照してください。

* [`versions`](#versions)

* [`redirect_from`](#redirect_from)

* [`title`](#title)

* [`shortTitle`](#shorttitle)

* [`intro`](#intro)

* [`permissions`](#permissions)

* [`product`](#product)

* [`layout`](#layout)

* [`children`](#children)

* [`childGroups`](#childgroups)

* [`featuredLinks`](#featuredlinks)

* [`showMiniToc`](#showminitoc)

* [`allowTitleToDifferFromFilename`](#allowtitletodifferfromfilename)

* [`changelog`](#changelog)

* [`defaultPlatform`](#defaultplatform)

* [`defaultTool`](#defaulttool)

* [`journeyTracks`](#journeytracks)

* [`type`](#type)

* [`communityRedirect`](#communityredirect)

* [`effectiveDate`](#effectivedate)

### `versions`

* 目的: ページが適用される [バージョン](https://github.com/github/docs/blob/main/src/versions/lib/all-versions.ts)を示します。
  さまざまな種類のバージョン管理について詳しくは、「[バージョン管理に関するドキュメント](/ja/enterprise-server@3.22/contributing/writing-for-github-docs/versioning-documentation)」をご覧ください。
* 型: `Object`。 許可されているキーは製品名にマップされており、<c2>内の<c0 /> オブジェクトに見つかります。
* この frontmatter 値は、現在、**すべてのページに必要**です。
* `*` は、該当バージョンのすべてのリリースを示すために使用されます。
* すべての `index.md` ファイルに存在する必要がありますが、実際の値は子に基づいて実行時に計算されます。

この frontmatter 値は、ドキュメント サイトで記事の各バージョンに対して "permalinks" を生成するために使用されます。 詳細については、[Permalinks](/ja/enterprise-server@3.22/contributing/writing-for-github-docs/using-markdown-and-liquid-in-github-docs#permalinks) を参照してください。

Free、Pro、Team そしてGitHub Enterprise Server バージョン 3.11 以降に適用される例:

```yaml
title: About your personal dashboard
versions:
  fpt: '*'
  ghes: '>=3.11'
```

GitHub Enterprise Serverにのみ適用される例:

```yaml
title: Downloading your license
versions:
  ghes: '*'
```

また、リリースの範囲に対してページをバージョン管理することもできます。 これにより、Free、Pro、\&Team、および GitHub Enterprise Server バージョン 3.1 および 3.2 のページのみがバージョン管理されます。

```yaml
versions:
  fpt: '*'
  ghes: '>=3.1 <3.3'
```

### `redirect_from`

* 目的: このページにリダイレクトする URL を一覧表示します。
* タイプ: `Array`
* 省略可能

例:

```yaml
title: Getting started with GitHub Desktop
redirect_from:
  - /articles/first-launch
  - /articles/error-github-enterprise-version-is-too-old
  - /articles/getting-started-with-github-for-windows
```

詳しくは、「[リダイレクトを構成する](/ja/enterprise-server@3.22/contributing/writing-for-github-docs/configuring-redirects)」をご覧ください。

### `title`

* 目的: レンダリングされたページの `<title>` タグで使用するわかりやすいタイトルと、ページの上部にある `h1` 要素を設定します。
* タイプ: `String`
* **必須**。

### `shortTitle`

* 目的: パンくずリストやナビゲーション要素で使用するための、ページ タイトルの短縮版。
* タイプ: `String`
* 省略可能。 省略した場合は、 `title` が使用されます。

| 記事の種類    | 最大文字数 |
| -------- | ----- |
| 記事       | 31    |
| カテゴリー    | 27    |
| マップ トピック | 30    |

例:

```yaml
title: Contributing to projects with GitHub Desktop
shortTitle: Contributing to projects
```

### `intro`

* 目的: ページの概要を設定します。 この文字列は `title` の後にレンダリングされます。
* タイプ: `String`
* 省略可能。

### `permissions`

* 目的: 記事のアクセス許可ステートメントを設定します。 この文字列は `intro` の後にレンダリングされます。
* タイプ: `String`
* 省略可能。

### `product`

* 目的: 記事の製品コールアウトを設定します。 この文字列は `intro` と `permissions` ステートメントの後にレンダリングされます。
* タイプ: `String`
* 省略可能。

### `layout`

* 目的: 適切なページ レイアウトをレンダリングします。
* 型: サポートされているレイアウトの名前と一致する `String` 。 権限のあるリストについては、`layoutNames`の`src/frame/lib/frontmatter.ts` (`discovery-landing`、`journey-landing`、`bespoke-landing`、`category-landing`、`toc-landing`、`inline`など) を参照してください。
* 省略可能。 省略した場合、`DefaultLayout` が使われます。

### `children`

* 目的: product/category/map トピックに属する相対リンクを一覧表示します。 詳細については、「[インデックス ページ](#index-pages)」を参照してください
* 型: `Array`。 既定値は `false` です。
* `index.md` ページで必須

### `childGroups`

* 目的: 子をホーム ページ上のグループにレンダリングします。 詳細については、「[Homepage](#homepage)」を参照してください。
* 型: `Array`。 既定値は `false` です。
* ホームページ `index.md` で必須

### `featuredLinks`

* 目的: リンクされた記事のタイトルと紹介を製品のランディング ページとホームページに表示します。
* 型: `Object`。
* 省略可能。

人気のあるリンクの一覧は、ランディング ページ上でタイトル「Popular」の下に表示されるリンクです。 または、 `featuredLinks.popularHeading` プロパティを新しい文字列に設定し、「Popular」というタイトルをカスタマイズすることもできます。

例:

```yaml
featuredLinks:
  gettingStarted:
    - /path/to/page
  startHere:
    - /guides/example
  popular:
    - /path/to/popular/article1
    - /path/to/popular/article2
  popularHeading: An alternate heading to Popular
```

### `showMiniToc`

* 目的: 記事の残りのコンテンツの上にミニ目次 (TOC) を表示するかどうかを示します。 詳しくは、「[自動生成されたミニ TOC](#autogenerated-mini-tocs)」を参照してください。
* 型: `Boolean`。 既定値は記事では `true` で、マップ トピックと `false` ページでは `index.md` です。
* 省略可能。

### `allowTitleToDifferFromFilename`

* 目的: ページがファイル名と異なるタイトルを持つことを許可するかどうかを示します。 たとえば、`content/rest/reference/orgs.md` は `Organizations` ではなく `Orgs` というタイトルです。 frontmatter が `true` に設定されているページは、テストでフラグが設定されたり、`src/content-render/scripts/reconcile-filenames-with-ids.ts` によって更新されたりすることはありません。
* 型: `Boolean`。 既定値は `false` です。
* 省略可能。

### `changelog`

* 目的: [GitHub Changelog](https://github.blog/changelog/) から取得された項目の一覧を製品ランディング ページ (`components/landing`) に表示します。 1 つの例外は Education で、<https://github.blog/category/community/education> からプルします。
* 型: `Object`、プロパティ。
  * <c0 /> -- が存在し、<c1>GitHub Changelog</c1> で使用されるラベルに対応している必要があります。
  * `prefix` -- 省略可能な文字列。各変更ログ タイトルの、ドキュメント フィードでは省略する開始文字を示します。 たとえば、プレフィックス `GitHub Actions: ` を指定すると、`GitHub Actions: Some Title Here` などの変更ログ タイトルはドキュメント フィードで `Some Title Here` としてレンダリングされます。
* 省略可能。

### `defaultPlatform`

* 目的: ページの最初のプラットフォーム選択をオーバーライドします。 この frontmatter を省略すると、閲覧者のオペレーティング システムに一致するプラットフォーム固有のコンテンツが既定で表示されます。 この動作は、個々のページに対して変更でき、手動で選択する方が適切です。 たとえば、ほとんどの GitHub Actions ランナーは Linux を使用し、そのオペレーティング システムはリーダーのオペレーティング システムに依存しません。
* 型: `String`。次のいずれかです: `mac`、`windows`、`linux`
* 省略可能。

例:

```yaml
defaultPlatform: linux
```

### `defaultTool`

* 目的: ページの最初のツール選択をオーバーライドします。このツールは、リーダーがGitHub (GitHub.com の Web UI、GitHub CLI、GitHub Desktop など) またはGitHub API を操作するために使用しているアプリケーションを参照します。 ツール セレクターについて詳しくは、「[GitHub Docs での Markdown と Liquid の使用](/ja/enterprise-server@3.22/contributing/writing-for-github-docs/using-markdown-and-liquid-in-github-docs#tool-tags)」をご覧ください。 このフロントマッターを省略すると、GitHub Web UI に一致するツール固有のコンテンツが既定で表示されます。 ユーザーが (ツール タブをクリックして) ツールのユーザー設定を行った場合は、既定値ではなくそのユーザー設定が適用されます。
* 型: `String`。次のいずれかです: `webui`、`cli`、`desktop`、`curl`、`codespaces`、`vscode`、`importer_cli`、`graphql`、`powershell`、`bash`、`javascript`
* 省略可能。

```yaml
defaultTool: cli
```

### `journeyTracks`

* 目的: ジャーニーのランディング ページ用のジャーニーを定義します。
* 型: 次のプロパティを持つ`Array`オブジェクト。
  * `id` (必須): ジャーニーの一意識別子。 ID は、1 つの体験ランディング ページ内の体験に対してのみ一意である必要があります。
  * `title` (必須): 体験のタイトルを表示する (Liquid 変数をサポート)
  * `description` (省略可能): 体験の説明 (Liquid 変数をサポート)
  * `timeCommitment` (省略可能): 体験を完了するための推定時間 (たとえば、 `2-4 hours`)。 記事数の横にバッジとしてレンダリングされます。
  * `guides` (必須): この体験を構成するガイド オブジェクトの配列。 各ガイドオブジェクトには次の要素があります。
    * `href` (必須): 記事へのパス
    * `alternativeNextStep` (省略可能): ユーザーを体験の代替パスに導くカスタム テキスト。 Liquid 変数と `[AUTOTITLE]`をサポートします。
* `layout: journey-landing` と共に使用された場合にのみ適用されます。
* 省略可能。

例:

```yaml
journeyTracks:
  - id: 'getting_started'
    title: 'Getting started with GitHub Actions'
    description: 'Learn the basics of GitHub Actions.'
    timeCommitment: '2-4 hours'
    guides:
      - href: '/actions/quickstart'
      - href: '/actions/learn-github-actions'
        alternativeNextStep: 'Want to skip ahead? See [AUTOTITLE](/actions/using-workflows).'
      - href: '/actions/using-workflows'
  - id: 'advanced'
    title: 'Advanced GitHub Actions'
    description: 'Dive deeper into advanced features.'
    guides:
      - href: '/actions/using-workflows/workflow-syntax-for-github-actions'
      - href: '/actions/deployment/deploying-with-github-actions'
```

### `type`

* 目的: 記事の種類を示します。
* 型: `String`。次のいずれかです: `overview`、`quick_start`、`tutorial`、`how_to`、`reference`、`rai`
* 省略可能。

### `communityRedirect`

* 目的: フッターの `Ask the GitHub community` リンクのカスタム リンクとリンク名を設定します。
* 型: `Object`。 プロパティは `name` と `href` です。
* 省略可能。

### `effectiveDate`

* 目的: サービス使用条件に関する記事の発効日を設定して、エンジニアリング チームがユーザーに条項の確認を自動的に求め直すことができるようにする
* 型: `string` YEAR-MONTH-DAY (例: 2021-10-04 は 2021 年 10 月 4 日)
* 省略可能。

> \[!NOTE]
> `effectiveDate` frontmatter 値は、GitHubスタッフのみが使用します。

## 単一引用符をエスケープ処理する

YAML frontmatter で、単一引用符が 1 つ表示されている (`''`) はずの場所に 2 つの単一引用符が連続している場合 (`'`)、それは YAML で単一引用符をエスケープする際の推奨方法です。

別の方法として、frontmatter フィールドを囲む単一引用符を二重引用符に変更し、内部の単一引用符をエスケープせず残すこともできます。

## 自動生成されたミニ TOC

すべての記事には、ミニ目次 (TOC) が表示されます。これは、自動生成された、記事内のすべての `H2` へのリンクが含まれる「この記事の内容」セクションです。 ミニ TOC には `H2` ヘッダーのみが含まれます。 特定のセクションのみが特定のタスクに関連するよう情報を分割するために、記事で `H3` または `H4` ヘッダーを使用する場合は、[セクション TOC](/ja/enterprise-server@3.22/contributing/style-guide-and-content-model/style-guide#sectional-tocs) を使用すると、ユーザーが最も関連性の高いコンテンツに移動できます。

[
`showMiniToc`
](#showminitoc) frontmatter 値 を `false` に設定すると、ミニ TOC が記事に表示されないようにすることができます。

ミニ TOC は、製品のランディング ページ、カテゴリのランディング ページ、またはマップ トピック ページには表示されません。

Markdown ソースにハードコードされた「この記事の内容」セクションを追加しないでください。追加すると、ページに重複したミニ TOC が表示されます。

## ファイル名

新しい記事を追加する際は、記事の [](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles)frontmatter で使用するタイトルを`title`にしたものをファイル名にしてください。 タイトルに句読点 ("GitHub の課金プラン" など) がある場合、これは難しい場合があります。 テストでは、タイトルとファイル名の不一致にフラグが設定されます。 特定の記事のこの要件をオーバーライドするには、[`allowTitleToDifferFromFilename`](#allowtitletodifferfromfilename) frontmatter を追加します。

## インデックス ページ

インデックス ページは、ドキュメント サイトの目次ファイルです。 すべての製品、カテゴリ、およびマップ トピック サブディレクトリには、コンテンツの概要とすべての子記事へのリンクを提供する `index.md` ファイルがあります。 各 `index.md` には、製品、カテゴリ、マップ トピックの子ページへの相対リンクのリストを持つ `children` frontmatter プロパティが必要です。 インデックス ページには、`versions` フロントマッター プロパティが必要であり、実際の値は子記事のバージョンに基づいて実行時に計算されます。

> \[!NOTE]
> サイトは、`children` frontmatter に含まれるパスについてのみ認識します。 ディレクトリまたは記事が存在していても \*\*\*\* に含まれて`children`場合は、そのパスは 404 を返します。

## ホームページ

ホームページは、ドキュメント サイトのメインの目次ファイルです。 ホームページには、すべての`children`と同様に完全な [](#index-pages) リストが必要ですが、メイン コンテンツ領域で強調表示される `childGroups` frontmatter プロパティも指定する必要があります。

`childGroups` は、グループのための `name`、オプションのグループの `icon`、および `children` の配列を含むマッピングの配列です。 配列の `children` は、frontmatter プロパティの `children` に存在する必要があります。