**Reading Time** 機能は、ドキュメントの読了にかかる時間を推定し、その値をコンパイル済みの MDX モジュールに注入します。これは純粋な**ページデータ機能**です。DOM 要素は一切出力せず、スタイルを当てるマークアップやセレクターもありません。値はページテンプレートから利用でき、表示するかどうか・どう表示するかは利用者が決めます。

:::note Opt-in 機能

`zfb.config.ts` の `readingTime` キーで有効化します。

```ts
// zfb.config.ts
export default defineConfig({
  markdown: {
    features: {
      readingTime: true,
    },
  },
});
```

:::

## ライブデモはありません

このカテゴリーの他の機能と異なり、Reading Time はページ上に**何も**描画しません。ウィジェットもバッジも、いかなる要素も挿入しません。代わりに、コンパイル済みモジュールに名前付きエクスポートを追加し、TSX のページコードがそれを読み取って好きなように描画できます。

## 値の現れ方

この機能は、コンパイル済みの MDX モジュールに `export const readingTimeMinutes = N;` を名前付きエクスポートとして注入します。TSX ページでは、MDX ファイルから直接インポートして読み取ります。

```tsx
import { readingTimeMinutes } from "./my-page.mdx";

<p>{readingTimeMinutes} min read</p>;
```

値は分単位の整数で、最小値は `1` です。

:::info このプロジェクトでは未表示

zudo-doc の現在のドキュメントレイアウトは `readingTimeMinutes` をどこにも表示していないため、このサイトでは値は計算済みだが未使用のメタデータです。表示するには、レイアウトコンポーネントがこのフィールドを読み取って描画する（たとえばページタイトルやドキュメント履歴ブロックの横に）必要があります。

:::

## オプション

```ts
// zfb.config.ts — カスタムの words-per-minute
readingTime: {
  wpm: 250, // デフォルトは 200
},
```

## 単語のカウント方法

- ラテン文字テキストは空白で分割され、1 トークン = 1 単語として数えます。
- CJK 文字（中国語・日本語・韓国語）は 1 文字ごとに 1 単語として数えます。
- コードブロックとインラインコードはカウントから除外されます。

推定値は、総単語数を設定した words-per-minute で割り、切り上げて、最小 1 分としたものです。