コンテンツにスキップ

レンダリングルールの詳細

このページでは EpoCanvas Docs のレンダリングルールを完全に説明します。1 つの Markdown ファイルがどの処理段階を経るのか、各構文がどんな見た目にレンダリングされるのか、どの構文が非対応なのか。ドキュメントを書く前に一通り読んでおくと、ほとんどのレイアウトの問題を避けられます。


レンダリングパイプライン:.md ファイルから公開ページまで

EpoCanvas Docs の Markdown レンダリングパイプラインの模式図:Markdown ソースの走査、GFM AST 解析、コードハイライト、7 つのカスタムコンポーネントによるレイアウトの組み立て、静的 HTML と Pagefind インデックスの生成までの全 5 ステップの流れ

図:Markdown レンダリングパイプラインの 5 ステップ。各ステップはビルド時に順番に実行され、ビルド成果物は純粋な静的ファイルで、クライアント側に実行時のフレームワークオーバーヘッドはありません。

1 つの Markdown ファイルは、保存されてから読者の目に触れるまで、次の 5 つの段階を経ます。

  1. コンテンツの収集:Astro は起動時またはビルド時に src/content/docs/ ディレクトリを走査し、各 .md / .mdx ファイルをコンテンツエントリーとして登録し、Frontmatter を検証します(title がないとその場でエラーになります)。
  2. Markdown のコンパイル:本文は Markdown コンパイラー(GFM 拡張を含む)によって HTML に変換されます。テーブル、タスクリスト、取り消し線などの拡張構文はこの段階で有効になります。
  3. コードブロックのハイライト:すべてのコードフェンスは Expressive Code に渡され、シンタックスハイライト、タイトルバー、行番号、コピーボタン付きのコードブロックとして生成されます。
  4. サイトレイアウトの適用:コンパイル済みの HTML は Starlight のページ骨格に組み込まれます。トップバー、左側のサイドバー、右側の目次は、いずれも src/components/starlight/ 配下のカスタムコンポーネントがレンダリングします。
  5. インデックスと静的ファイルの生成:pnpm run build の実行時に Pagefind がすべての成果物ページを走査して全文検索のインデックスを抽出します。最終的に dist/ ディレクトリ内の純粋な HTML は、どんな静的サーバーにもそのままホストできます。

Frontmatter のルール

  • title は必須で、欠けているとビルド時に InvalidInputError が出ます。
  • description は記入を推奨します。検索エンジンの結果やシェアカードに表示されます。
  • Frontmatter はファイルの先頭にある有効な YAML ブロックでなければならず、ハイフン 3 つの行はどれも省略できません。

見出しのルール

ルール説明
本文ではレベル 1 見出し # を書かないFrontmatter の title がすでにページの大見出しとしてレンダリングされるため、本文でさらに # を書くと大見出しが 2 つ並んでしまう
本文はレベル 2 見出し ## から始める## と ### は右側の「目次」に自動的に入る
#### 以下は目次に入らないより深いレベルは本文のスタイルとしてだけレンダリングされる
見出しのテキストからアンカーが生成される日本語見出しのアンカーは日本語の文字そのものになる。例:#見出しのルール

吹き出し(コールアウト)のルール (Asides)

吹き出し(コールアウト)は Starlight のコロン 3 つの構文を使用し、4 種類に対応しています。

:::note
補足説明のヒント。
:::
:::tip
効率を上げるちょっとしたコツ。
:::
:::caution
注意すべきリスクやミスしやすい操作。
:::
:::danger
データ損失や不可逆な操作にかかわる危険度の高い警告。
:::

また、タイプの後にカスタムタイトルを付けられます::::tip[インストールの高速化]。

4 種類のカラー吹き出しの実際のレンダリング結果

図:4 種類の吹き出し(コールアウト)を上記の構文で書いたときの実際の表示。吹き出し・コードブロック・図表の例 ページから抜粋。


コードブロックのルール

コードフェンス(バッククォート 3 つ)は Expressive Code でレンダリングされ、以下の注記に対応しています(最初の行のバッククォートの後に書きます)。

注記の書き方役割例
言語識別子シンタックスハイライトの方式を決める```ts
title="..."ファイル名のタイトルバーを表示する```ts title=“src/config/site.ts”
{2} / {2-4}指定した行をハイライトする```ts {2}
lang="diff" または diff追加・削除行を赤と緑の対比で表示する```diff
bash / sh などのターミナル言語ターミナル風の枠でレンダリングする```bash

すべてのコードブロックには自動的にワンクリックのコピーボタンが付きます。コードのテキストは Pagefind によって検索インデックスに収録されるため、コード内のキーワードを直接検索できます。


画像のルール

  • 画像は一括して public/images/canvas/ に置き、絶対パスで参照します:![説明](/images/canvas/ui-docs-reading.png)。
  • アーキテクチャやフローの模式図は .svg ベクター形式、画面のスクリーンショットは圧縮した .png を使います。
  • 説明文(alt)は必ず記入します。画像の読み込みに失敗したときの代替テキストであり、アクセシビリティの根拠にもなります。
  • 現在のバージョンでは Mermaid 図表のレンダリングは組み込まれていません:```mermaid フェンスは通常のコードブロックとしてソースを表示するだけです。フローチャートが必要な場合は、まず mermaid.live などのツールで SVG を書き出し、画像として挿入します。

リンクのルール

  • サイト内リンク:完全なパスを使い、/ で始まり / で終わる形にします(例:/canvas/deployment/)。ドキュメントのパスを変更した後は、旧パスを astro.config.mjs の redirects テーブルにリダイレクトとして登録します。
  • アンカーリンク:/canvas/rendering/#コードブロックのルール でこのページのセクションへ直接移動できます。
  • 外部リンク:完全な URL を書けばよく、本文中ではテーマカラーで表示されます。

その他のレンダリング挙動

構文レンダリング結果
**太字**、*斜体*、~~取り消し線~~対応する文字スタイル
インラインコードテーマカラーの等幅フォントのカプセル
Ctrl+K の書き方キーキャップ風のキー表示
GFM テーブル枠線とホバー時のハイライト付きのデータテーブル
- [x] タスクリスト視覚的なチェックボックス(無効状態)
[^名前] 脚注本文の上付き番号 + ページ下部の脚注リスト。クリックで往復移動できる
Markdown 引用ブロック >左側にテーマカラーの縦線 + 薄い背景色
区切り線 ---本文エリアを貫く細い分割線