Docsbook
概要

測定の仕組み

ドキュメントの分析では、通常、次の4つの点で誤った結果が出ます。クローラーを読者として数えること、バックグラウンドのタブを閲覧として数えること、所有者自身の訪問をオーディエンスとして数えること、そしてごく少数の訪問を基にパーセンテージを示すことです。このページでは、その仕組みを詳しく説明します。数値に基づいて行動する前に、これらの点を自分で一つずつ確認できます。

得られるもの#

Docsbookの分析パネルに表示されるすべてのグラフは、互いに食い違う可能性のある独立したカウンターの集合ではなく、1つのイベントストリーム、1つの訪問の定義、そして1人の人間の定義に基づいています。数値を正直に示せない場合は、ダッシュ、「未計測」というラベル、または非表示のパーセンテージが表示され、確信に満ちた 0 が表示されることはありません。また、これらを実現するために読者のブラウザに何かが保存されることもありません。

収集されるものと、意図的に収集されないもの#

Docsbookは、ドキュメントサイト上で名前付きの36個のdocs.*イベントを記録します。ページ ビュー、閲覧時間のセグメント、表示範囲までスクロールされた見出し、検索、AIチャット アクション、コピー、ナビゲーションのクリック、外部リンクのクリック、フィードバックへの投票、離脱などです。 全リストは追跡イベントのリファレンスにあります。

各イベントには、所属するプロジェクト、ページパス、そして該当する場合は次の情報が含まれます。秒数、見出しアンカー、リファラー、送信先ホスト、言語、 User-Agent、エッジがリクエストから解決した国/地域/市区町村/座標です。読者のIPは、ブラウザーではなく、取り込みエンドポイントで サーバー側に付加されます。

収集されないもの 理由
Cookie、localStorage、または分析用のブラウザー側識別子 読者をカウントするために読者のデバイスへ何かを保存する必要がないため、何も保存されません
サイト間またはプロジェクト間の識別情報 訪問者ハッシュにはプロジェクト独自の名前がソルトとして使用されるため、2つのDocsbookサイトで同じIPを使用しても、互いに無関係な2つのIDが生成されます
デバイスフィンガープリンティング(canvas、フォント、音声) トラッカーのどこにも実装されていません
フォーム入力、キーストローク、セッションリプレイ、マウスの軌跡 そのような収集機能は存在しません
レポート、エクスポート、またはMCPレスポンス内の生のIP IPはイベントストアに残り、それ以降のすべての処理ではハッシュが使用されます
イベントに漏洩するシークレット 生イベントの読み取りはレダクターを通過し、キーまたは値がトークン、キー、JWT、認証ヘッダーのように見えるフィールドをマスクします

訪問者と訪問の定義#

訪問者とは、sha256(secret salt + project + IP)を16桁の16進数文字列に切り詰めたものです。 それがアイデンティティのすべてです。これは安定しており、翌週に同じ人物が訪れても同じハンドルが得られます。またスコープも限定されています。ソルトはサーバー側の秘密情報であり、プロジェクト名が入力の一部となるため、このIDを別のサイトのトラフィック(別のDocsbookプロジェクトを含む)と結び付けることはできません。

訪問はセッションCookieで追跡するのではなく、イベントから再構成されます。 1人の訪問者のイベントを時刻順に並べ、30分を超える間隔がある箇所で分割します。これは意図的に、固定された時間帯ではなく非アクティブ時間の間隔を基準にしています。時間帯で区切ると境界をまたぐ訪問が分割されてしまうためです。たとえば、12:29から12:31までアクティブだった読者は、そうしなければ2回の訪問として報告されてしまいます。

ボットとクローラーのフィルタリング#

フィルタリングは、2つの独立した層で実行されます。どちらか一方だけでは 失敗することが分かっているためです。

  1. User-Agent。 クローラー、スパイダー、ヘッドレスブラウザー、 スクリプト化されたHTTPクライアント、SEOスイート、リンクプレビュー取得ツールに加え、 分類器のテーブルにあるすべてのAIボットを対象とする正規表現です。通常のスマートフォンを 装って大量にクロールしていることが確認されたため、2つのUA文字列はリテラル値として 固定されています — Googlebot Smartphoneのリファレンスデバイスと、古いiOSビルドです。
  2. 動作。 JavaScriptランタイムだけが生成できるイベントを1つも発生させなかった 訪問 — 読了時間セグメント、見出しビュー、離脱、クリックのいずれもない場合 — は JavaScriptを実行しておらず、User-Agentが何を示していてもクローラーです。

それに加えて、あなたのチーム自身は、すべての読者数から除外されます。 このプロジェクトについて、過去30日以内に同じIPから管理者セッションのビーコンも送信した 訪問者は所有者としてフラグ付けされ、読者メトリクスから除外されます — 実在する人間では あるものの、対象読者ではないため、ボットフラグとは分けて扱われます。必要に応じて、 サーバー側のIP許可リストにより、内部トラフィックが一度も記録される前に除外されます。

ボットと所有者の訪問は削除されず、保持され、ラベル付けされます。そのため、 パネルには数字をひそかに減らすのではなく、内訳を表示できます。

読了時間の実際の計算方法#

トラッカーはページがマウントされた時点で計時を開始し、読者が 離れた時点で読み取ります — pagehide の時点、iOS では visibilitychange → hidden の時点(pagehide が信頼できないため)、およびサイト内 ナビゲーション時です。読み取りのたびに1つの docs.read_time セグメントが送信され、計時がリセットされるため、ページに戻った場合は 二重にカウントされた1つの滞在時間ではなく、2つのセグメントが生成されます。3秒未満の セグメントは一切送信されません。

データはnavigator.sendBeaconによって同一オリジンのエンドポイントに送信され、1回のビーコンに 最大100件のイベントがまとめられます。通常のログ記録用トランスポートは fetch 経由で2秒間デバウンスしますが、これはタブを閉じると保持されません — 読了時間、見出しの 表示、離脱は保持する必要があるイベントであるため、代わりにビーコン経路が使用されます。

その後、合計を計算する前に、すべてのセグメントが300秒で切り詰められます。これは このページで最も重要な単一の数値です。デスクトップのタブがバックグラウンドにある間もエミッターは カウントを続けます。7つのワークスペースにわたる実際の11,176セッションを調査したところ、2時間を超えた個別の セグメントは40件、99パーセンタイルは81,342秒であり、生のセグメントを合計すると読了時間の合計は およそ30倍に膨れ上がりました — 切り詰め前は1,268,422秒でしたが、切り詰め後は42,160秒でした。 同じ切り詰め処理が時間の数値を示すすべての画面で適用されるため、パネル、 ページごとの列、目標レイヤー、MCPツールの間で値が食い違うことはありません。

ページごとの平均読了時間は、訪問回数ではなくセグメント数で切り詰め後の合計を割ります。 タブから離れて戻ってきた読者は、1回の訪問に対して2つのセグメントを追加するため、訪問回数で平均すると、 その訪問を2回分として計上することになります。

AIアシスタントのトラフィックと人間のトラフィックを見分ける方法#

リクエストは、決して統合されない3つのグループに分類されます。

グループ エージェントの例 あなたにとっての意味
回答 — 現在、人間に回答している ChatGPT-User, Perplexity-User, Claude-Web, DuckAssistBot あなたのページが人に引用されました。これは有望なトラフィックで、通常はリファラーなしで到着します
インデックス作成 — アシスタントが検索するコーパスを構築している OAI-SearchBot, PerplexityBot, Bingbot, Applebot, GoogleOther 引用されるための前提条件
トレーニング — 大量収集 GPTBot, ClaudeBot, CCBot, Google-Extended, Bytespider 許可するかどうかという1つの判断にのみ影響します

認識されないAIボット名はトレーニングとして扱われます — これは、あなたにとって最も期待できない主張です。分類はUser-Agentによって、最初に一致したものを優先する順序で行われるため、 Applebot-ExtendedApplebotに取り込まれることはありません。

サンプリング、上限、保持#

サンプリングはありません。 パネル内のどの数値も、トラフィックの一部から外挿されたものではありません。代わりに存在するのは厳格な上限です。セッション再構成では、1つのウィンドウあたり最大で 50,000件のイベントまで読み取り、その上限に達すると結果に truncated フラグが付与されます。切り捨てられたウィンドウに基づいて計算された率は正しくないため、利用者はこのフラグを表示しなければなりません。失敗したクエリもゼロではなく失敗として報告されます。空のダッシュボードと読み取りの失敗は異なる結果です。

閲覧者イベントは、すべてのプランで30日間保持されます。 30日という期間はデータの終端であり、ティアではありません。これはイベントストアの保持期間です。プロダクト内の期間選択はすべて同じ定数を参照するため、データで埋められない期間を選択肢として提供することはできません。AI利用台帳は別のストアで、より長く保持されます。毎日削除処理が行われる90日間保持なので、レポートに表示されなくなった後でも、異議のある請求を再構成できます。ただし、どのレポートでもこのデータを30日を超えて表示することはできません。

データの保存場所#

データ 保存場所 保存期間
docs.* リーダーイベント(ハッシュを生成する元の生のIPを含む) Axiom(サードパーティのイベントウェアハウス) 30日間
目標、ファネル、およびその定義、AIとMCPの請求台帳、ワークスペース設定 Docsbook独自のPostgresデータベース 目標とファネルはアーカイブするまで、AI台帳は90日間(毎日削除)、MCP呼び出しの行は現在削除されていません
チャット回答の判定 会話ごとに1回書き込まれるDocsbookのPostgresデータベース 会話とともに

パネルに表示されるSearch Consoleの数値は、承認した接続を通じてGoogleから取得されるものであり、 DocsbookのデータではなくGoogleのデータです。

プライバシーとGDPR — 技術的事実とは何か、そして判断するのはあなた#

サイトの動作で検証可能な技術的事実:

  • Docsbookのドキュメントサイト分析は、読者のデバイスに何も書き込まず、 そこから何も読み取りません。分析Cookieはなく、ブラウザに保存されるIDもありません。
  • 読者の識別情報は、プロジェクトごとに限定された、サーバー側でのキー付きハッシュによって IPから導出されます。ハッシュは一方向であり、生のIPがレポート、 エクスポート、またはMCPツールによって公開されることはありません。
  • プロジェクト間で識別子が共有されることはなく、販売、シンジケーション、 またはサイト横断的なプロファイルの構築に使用されることもありません。
  • 保持期間は30日であり、レポートのフィルターではなく、ストアによって適用されます。

主張していないこと。 Docsbookは、これを実行することでサイトが 同意不要、GDPR準拠、またはいずれかの国の規則の適用除外になるとは主張しません。以下の2点は、 あなた自身の法務担当者が判断する必要があります:

  1. ePrivacyの同意ルールが適用されるかどうか。 指令 2002/58/EC(改正後)の第5条第3項は、「端末機器への情報の保存、または すでに保存されている情報へのアクセス」を同意の取得を 条件としています。Docsbookはデバイス上に何も保存せず、何も読み取りません。これは同項が 挙げる適用の契機に該当しますが、EDPBのArt. 5(3)の技術的範囲に関する ガイドライン2/2023には、「IPのみを基盤とするトラッキング」に特化した 節があります。そのため、「Cookieがないので同意も不要」という見解は、 確定した回答ではなく、一つの論拠として扱ってください。
  2. GDPRに基づく適法な根拠がなお必要かどうか。 読者を 識別するIPアドレスは、Cookieに関する問題とは無関係に個人データです。そのため、 通知、法的根拠、上記ベンダーとの処理者契約は、あなたが設定するものです。 ここでは、CNIL独自のオーディエンス測定に関する免除基準が有用なチェックリストになります。 Docsbookはそのいくつか(単一の発行者、サイト間の関連付けなし、オーディエンス測定に 限定された目的)を満たしますが、すべてではありません。特に、保存前に IPの最後のバイトを切り捨てません

これが正しい方法である理由#

ルール 有効な理由 出典
閲覧時間は生の値を合計せず、クリップする Page Visibility仕様が存在するのは、「Web開発者がWebページを常に表示されているかのように設計してきた」ためであり、非表示中もカウントし続けるページはまさにその誤りに当たる W3C Page Visibility Level 2
本格的なアナリティクスでは、エンゲージメントをフォアグラウンド時間として定義する Google Analytics 4では、エンゲージメントを「誰かがWebページにフォーカスしている状態で費やす時間」と定義している。クリップは同じ意図を近似するものであり、暗黙ではなく明示されている GA4: User engagement
離脱時のイベントは fetch ではなくBeaconで送信する Beaconリクエストは「ページがアンロードされる前に開始されることが保証され、完了まで実行することが許可されている」 W3C Beacon API
pagehide でリッスンし、unload ではリッスンしない unload は「依然として信頼性が低いため、絶対に必要な場合を除いて使用を避けるべき」であり、pagehide は「unload イベントが発生するすべてのケースで発火」し、さらにbfcacheへの移行時にも発火する web.dev: bfcache
User-Agentは身元ではなく申告である Googleがクローラーの検証方法を公開しているのは、「Googleを名乗るスパマーやその他の悪意ある者」が存在するためであり、だからこそ第2の行動ベースのレイヤーが必要になる Google Search Central: verifying Googlebot
「回答」「インデックス作成」「トレーニング」は、3種類の異なる訪問者である OpenAIは3つの異なるエージェントを提供している。GPTBotは「トレーニングに使用される可能性のあるコンテンツをクロール」し、OAI-SearchBotは「検索結果にWebサイトを表示する」ために存在し、「ChatGPT-UserはWebを自動的にクロールする目的では使用されない」。Perplexityも同じ線引きをしており、PerplexityBotは「AI基盤モデル用のコンテンツのクロールには使用されない」 OpenAI botsPerplexity bots
何ページを閲覧したかではなく、訪問が成功したかどうかを測定する 「ユーザーが目標タスクを達成できないなら、それ以外のことはすべて無意味である」(Nielsen & Budiu、2001年、2021年レビュー) NN/g: Success Rate
アナリティクスへの同意は、プロダクト設定ではなく法的判断である 第5条第3項は「端末機器への情報の保存、またはすでに保存されている情報へのアクセスの取得」を基準としており、CNILの適用除外基準では、ファーストパーティの範囲、目的の制限、IPアドレスの短縮も追加される ePrivacy Directive, consolidatedCNIL Sheet 16

限界と未解決の問題#

  • すべての訪問者数は推定値であり、製品自体もそのように説明しています。 ハッシュ化されたIPアドレスでは、1つの企業NATの背後にいる全員が1人の読者としてまとめられる一方、1人の通勤者が複数の読者として分割されることがあります。訪問者数は傾向として読み取り、人数として引用してはいけません。
  • 読了時間は可視性によって判定されるのではなく、上限で切り取られます。 デスクトップでは、バックグラウンドで開いたままのタブが300秒の上限に達して停止するまで秒数を加算し続けます。これは誤差の方向性、つまり読了時間が上方に偏り、上限で制限されることを正直に示すものですが、GA4のフォーカスベースのエンゲージメント時間と同じ測定ではなく、このドキュメントも同じものだとは主張していません。
  • ボットフィルターは、検証手順を伴わないヒューリスティックです。 Docsbookは、クローラーが主張する身元について、逆引きDNSや公開IP範囲のチェックを行わないため、偽装されたUser-Agentも額面どおりに分類されます。行動層はUAの正規表現で見逃す一般的なケースを検出しますが、どちらの層もセキュリティ対策ではありません。
  • 所有者の除外は、1つのビーコンに依存します。 過去30日間にそのIPから管理パネルを開いたことがないチームメイトがドキュメントを読んだ場合、その人は読者としてカウントされます。
  • Geo-IPが解決するのは人ではなくネットワークです。 企業VPNを利用すると、読者はトンネルの終端となる都市に配置されます。モバイルネットワークでは、実際の場所から100キロメートル離れた地点になることもあります。
  • 未解決の問題:「Cookieなし」は「同意不要」と同じではありません。 検証可能なのは、Docsbookのドキュメントサイト分析がブラウザーに何も保存せず、何も読み取らないこと、そして読者の識別情報がソルト付きのサーバー側ハッシュであることです。確定していないのは法的な帰結です。EDPBは第5条第3項に基づくIPのみのトラッキングについて明示的に問題提起しており、ハッシュ化されたファーストパーティの30日間のケースについて結論を示す公開情報はありません。コンプライアンス上の結論は、顧問弁護士が導き出すものと考えてください。
  • 30日間が厳格な上限です。 このデータからは、前年比の比較、季節ごとの読了状況、4週間を超えるコホートのいずれも取得できません。

Updated

このページは役に立ちましたか?