# アクセス解析の導入とレポートの見方

コンテンツの訪問、読了、メディアの配信レポートを確認します。

機能の全体像は[ウェブサイト・コンテンツ・メディアのアクセス解析](/ja/analytics/)をご覧ください。このガイドでは、トラッカーの導入、イベントの送信、レポートの見方を説明します。

組織の **Analytics** を開き、公開したコンテンツとメディアの反応を確認できます。**Overview** は組織全体の概要、**Content** と **Media** はそれぞれの詳しいレポートです。

## Content レポートを見る

期間を選び、コンテンツスペースで絞るか、ファイルを選択します。ファイルを選ぶと、そのスペースも選ばれます。スペースを変更するとファイルの絞り込みは解除され、**All Spaces** で組織全体に戻ります。

| 指標               | 意味                                                             |
| ------------------ | ---------------------------------------------------------------- |
| Views              | トラッカーが記録したページの訪問                                 |
| Reads              | ページを累計10秒以上表示し、記事の表示上の末尾まで到達した訪問   |
| Likes              | ウェブサイトの連携から送信した、明示的ないいね操作               |
| Estimated visitors | 匿名のブラウザー識別子に基づく推定値。個人の実人数ではありません |

日別の推移と参照元・国別の内訳で、流入の傾向を把握できます。Files には記録されたページタイトルがあれば表示し、その下にスペースとリポジトリのパスを示します。コンテンツのパスがないテンプレートのページは、Files に出なくても合計に含まれます。

読了は末尾への到達を示すもので、内容を理解した証明ではありません。いいねはサイト側の操作が必要です。トラッカーがボタンを追加したり、スクロールから推測したりすることはありません。

<figure>
  <img
    src="/images/screenshots/analytics/content-breakdowns.jpg"
    width="1440"
    height="900"
    alt="Prosefly Analytics のファイル一覧、参照元、国別の内訳。"
    loading="lazy"
  />
  <figcaption>
    サンプルデータのレポートです。ファイルにはページタイトル、コンテンツスペース、リポジトリのパスが表示されます。
  </figcaption>
</figure>

## 月間のイベント枠

ウェブサイトの解析イベントは、組織内のすべてのコンテンツスペースで共有します。

| プラン   | 月間イベント数 |
| -------- | -------------- |
| Personal | 100K           |
| Team     | 1M             |
| Business | 5M             |

請求間隔にかかわらず枠は同じです。ページの閲覧、読了、いいねを各1イベントとして数えます。タイトル、ファイルパス、端末などの属性で数は増えません。トラッカーのダウンロードとレポートの取得は対象外です。音声・動画のリクエストは、別の転送量枠を使います。

超過しても収集とレポートの閲覧は継続します。2か月連続で超過した場合は、プラン変更をご案内します。超過による自動アップグレード、自動の超過請求、サービス停止はありません。

## ウェブサイトを接続する

**Analytics → Content → Install tracking script** を開き、コンテンツスペースを選んでコードをコピーします。ダイアログが組織のスラッグとコンテンツスペースの UUID を入力します。レポートの絞り込みを変えたり、サイトに自動インストールしたりするものではありません。

<figure>
  <img
    src="/images/screenshots/analytics/tracking-script.jpg"
    width="1440"
    height="900"
    alt="コンテンツスペースを選び、生成されたスクリプトを表示する Install tracking script ダイアログ。"
    loading="lazy"
  />
  <figcaption>
    組織スラッグとコンテンツスペース UUID
    をプレースホルダーにした例です。自分のコンテンツスペースを選んで、生成されたコードをコピーしてください。
  </figcaption>
</figure>

公開したコンテンツが読まれるサイトでトラッカーを読み込みます。組織のスラッグとコンテンツスペースの UUID を使い、ビルドで取得した正確なリポジトリ相対のソースパスを出力します。

```html
<script
  defer
  src="https://analytics.prosefly.com/tracker.js"
  data-org="YOUR_ORGANIZATION_SLUG"
  data-space="YOUR_CONTENT_SPACE_ID"
  data-filepath="src/content/blog/ja/hello.mdx"
></script>
```

YOUR_ORGANIZATION_SLUG を組織のスラッグ（例：prosefly）に、YOUR_CONTENT_SPACE_ID をコンテンツスペースの UUID に置き換えてください。生成されたコードには、これらの値が入力済みです。ファイルパスも、スペースのルートの接頭辞がある場合はそれを含め、リポジトリに合わせます。トラッカーはページ URL から Git のパスを推測できません。コンテンツファイルのないテンプレートのページでは、`data-filepath` を省略します。

Astro では外部スクリプトに `is:inline` を付け、データ属性と通常のスクリプトの動作を保ちます。テストの訪問を含めないため、ローカル開発では読み込まないようにします。必要に応じて、記事の CSS セレクターを `data-content` に指定できます。初期設定では、指定のコンテンツコンテナー、`article`、`main` の順で探します。

Content Security Policy を使う場合は、収集先のオリジンをスクリプトと接続の両方で許可してください。スクリプトは1ページに1回追加し、サイトに適用されるプライバシー上の要件に従います。クライアント側ルーティングでは、次のページを描画した後、そのページのパスで `window.proseflyAnalytics.page({ filepath, location, content })` を呼びます。通常のページ遷移では、スクリプトが改めて読み込まれます。

```js
window.proseflyAnalytics?.page({
  filepath: 'src/content/blog/ja/next.mdx',
  location: window.location.href,
  content: 'article',
});
```

新しい記事の実際のパスを使います。テンプレートのページでは `filepath` を省略してください。前の記事のパスは引き継がれません。`page()` の前にページタイトルも更新します。

## いいねを計測する

サイトの「いいね」ボタンのクリック処理から、`window.proseflyAnalytics?.track('like')` を呼びます。現在のページ情報を使い、指定されていればスペースとファイルパスも含めます。

```html
<button id="like-button" type="button">いいね</button>
```

ボタンを描画した後に、クリック処理を登録します。

```js
document.getElementById('like-button')?.addEventListener('click', () => {
  window.proseflyAnalytics?.track('like');
});
```

1回の呼び出しで、いいねを1件記録し、1イベントに数えます。トラッカーはボタンの追加、連打の防止、いいね済み状態の保存、取り消しを提供しません。ボタンの無効化や連打を抑える処理など、サイト側で状態を管理してください。

## 日付とレポートの状態

レポートの日付は UTC です。プリセットは当日を含むため、深夜付近では現地の日付とずれる場合があります。当日や直近のデータは処理・修正中の場合があり、リアルタイムとは限りません。

読み込み中、記録なし、取得不可は異なる状態です。取得不可では **Retry** を使います。保存データの時刻がある場合は前回のレポート、不完全な結果の通知がある場合は取得できた行に制限があることを示します。空のレポートだけでは、訪問がなかったとは判断できません。

## メディアは別のレポート

**Media** は独自の絞り込みとファイルの詳細で、音声・動画の配信を計測します。本文の閲覧とメディアの配信開始は別のイベントで、推定訪問者数も合算しません。メディアの指標と限界は[メディアライブラリ](/docs/ja/media/#メディアのアクセス解析)をご覧ください。
