プライバシー重視のアクセス解析:セルフホスト型PlausibleとGoogle Search Consoleの設定
GDPRが2018年に発効して以来、アクセス解析の環境は大きく変化しました。現実には、ほとんどの組織はまだWebサイトでGoogle Analytics 4を使用しています—最も優れたツールだからではなく、移行にコストがかかると見られ、代替手段がニッチに見えるからです。当社は2024年半ばにGoogle Analyticsからセルフホスト型のPlausible CEに移行しました。その結果は詳しく記録する価値があります。
Google Analyticsをやめた理由
Google Analytics 4は高機能なプラットフォームです。しかし、規制遵守の負担は相当なものです。実際にGDPRに準拠する構成でGA4を運用するには、Cookie同意バナー、同意管理プラットフォーム、データ処理契約、および分析データを米国のGoogleに移転する際の文書化された法的根拠が必要です。同意バナー自体はデータに偏った欠落をもたらします:同意を拒否した訪問者はすべてデータから欠落し、バナーの設計や訪問者層によっては相当な割合を占めるため、収集するすべての指標に盲点が生まれます。
問題は、これが実務上受け入れがたい二者択一を生むことです。同意した利用者だけの不完全なデータを受け入れるか、同意なしにGA4を運用して法的リスクを受け入れるか。データ品質とコンプライアンスの両方を真剣に考える組織にとって、どちらも明快な解決策ではありません。
Plausible CEは異なる前提のもとに設計されています。トラッキングスクリプトは初期設定ではCookieを使わず、個人を特定できる情報を保存せず、同意バナーなしで動作するよう設計されています。この設計は具体的な技術上の選択に基づいています。PlausibleはCookieを設定せず、セッション間で永続的なユーザー識別子を生成せず、セルフホスティング時には第三者のサーバーにデータを送信しません。ePrivacy指令(英国ではPECR)は、ユーザーの端末に情報を保存したり、端末上の情報にアクセスしたりする場合に同意を求めており、Cookieを使わないスクリプトはこの要件に該当しないことを目指した設計です。ただし、EDPBのガイドライン2/2023では、ピクセルやIPアドレスによるトラッキングなど、Cookieを使わない一部の手法もこの規定の対象になると解釈しているため、自社の運用環境についても評価を確認してください。
アーキテクチャ:分析エンジンとしてのClickHouse
Plausible CEには2つのデータベースが付属しています:イベントストレージ用のClickHouseと設定用のPostgreSQLです。ClickHouseは分析ワークロード向けに構築された列指向データベースです— Yandexが大規模な分析インフラのために構築したエンジンと同じです。月に数万ページビューを受けるサイトにとって、行指向データベースに対する性能上の優位性は実感できません。しかしこのアーキテクチャにより、Plausibleはスキーマ変更やインフラ再設計なしに数億イベントのサイトを処理できます。成長を見込む場合、これは重要です。
Docker Composeのセットアップは簡単です。Plausibleは必要なすべてのサービスを含む公式設定を提供します。当社はヘルシンキのHetzner CX21インスタンス(2 vCPU、4 GB RAM)で、Traefikとともに運用しています。
services:
plausible_db:
image: postgres:16-alpine
restart: always
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
plausible_events_db:
image: clickhouse/clickhouse-server:24.3.3.102-alpine
restart: always
volumes:
- event-data:/var/lib/clickhouse
- ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
ulimits:
nofile:
soft: 262144
hard: 262144
plausible:
image: ghcr.io/plausible/community-edition:v2.1.4
restart: always
command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
depends_on:
- plausible_db
- plausible_events_db
environment:
- BASE_URL=https://plausible.yourdomain.com
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@plausible_db:5432/plausible_db
- CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
- DISABLE_REGISTRATION=true
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
labels:
- "traefik.enable=true"
- "traefik.http.routers.plausible.rule=Host(`plausible.yourdomain.com`)"
- "traefik.http.routers.plausible.entrypoints=websecure"
- "traefik.http.routers.plausible.tls.certresolver=letsencrypt"
- "traefik.http.services.plausible.loadbalancer.server.port=8000"
volumes:
db-data:
event-data:
DISABLE_REGISTRATIONを明示的に設定してください。trueでは初期アカウント作成後に登録が閉じられ、falseでは公開インスタンスのURLを見つけた誰でも登録できます。現在のPlausible CEのドキュメントでは、初期値はinvite_onlyとされています。openssl rand -base64 64でSECRET_KEY_BASEを生成し、バージョン管理の対象外の.envファイルに保管します。
ボリュームセクションで参照される2つのClickHouse XML設定ファイルはログの詳細度を制御します。これらがなければ、ClickHouseは小さなインスタンスのディスクを数日以内に満杯にするレベルでログを記録します。Plausibleのリポジトリにこれらのファイルが含まれています。スタックを起動する前にdocker-compose.ymlの隣のclickhouse/サブディレクトリにコピーします。
トラッキングスクリプトのデプロイ
スタックが稼働したら、サイトへの計測の追加には、HTML <head>内にタグを一つ置くだけです。
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.js"></script>
Plausibleは一つのリクエストにまとめられるオプションのスクリプト拡張を提供しています。当社はファイルのダウンロード計測、シングルページアプリケーション向けのハッシュベースルーティングサポート、外部リンクのクリック計測、カスタムページビュープロパティ、収益の計測、タグ付きイベントを含む構成のスクリプトを使用しています:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js"></script>
まとめたスクリプトの非圧縮サイズは約2.4 KBです。Google Analytics 4スクリプトは約45 KBです。小さな違いではありません—すべてのページロードでダウンロードするJavaScriptの量が約20分の1になり、解析・実行するスクリプトが少なくなることで、低スペックデバイスや低速接続でのCore Web Vitalsが改善する可能性があります。
Google Search Consoleとの連携
GA4を維持する最も強い理由は、自然検索のクエリデータとサイト内の行動を関連付けることができるGoogle Search Consoleとの接続です。Plausibleはこの連携を標準でサポートしており、この機能によってコンテンツを中心とするサイトでも移行が可能になります。
設定にはSearch Consoleプロパティの所有権確認とPlausibleのサイト設定でのOAuth認証が必要です。セルフホスト型のインスタンスでは、Search Console APIを有効にしたGoogle CloudのOAuthクライアントも必要で、GOOGLE_CLIENT_IDとGOOGLE_CLIENT_SECRETを通じてPlausibleに渡します(上記のComposeファイルに設定済みです)。接続後、SourcesでGoogleを選択すると検索クエリとクリック数が表示され、詳細表示ではインプレッション、クリック率、平均掲載順位も確認できます。表示されるのはクリックが1回以上あったクエリだけです。
設定で繰り返し問題になる点があります。選択するGSCプロパティは、Plausibleがトラッキングするドメインを実際にカバーしている必要があります。URLプレフィックス方式を使用してhttps://www.yourdomain.comとして所有権を確認したGSCプロパティは、サブドメインなしでyourdomain.comをトラッキングするPlausibleサイトに接続しません。GSCでは可能な限りドメインプロパティタイプを使用してください—すべてのサブドメインとプロトコルをカバーし、Plausibleとの接続を簡単にします。
PlausibleのGSCデータはリアルタイムではありません。Plausibleのドキュメントでは、Search Console自体と同じく約24〜36時間の遅延があると説明し、2日前のデータを確認するよう勧めています。これはGoogleの制約であり、Plausibleの制限ではありません。運用上のアクセス解析レビューにとって、これは実際の障害になることはほとんどありません。
CookieバナーなしのGDPRコンプライアンス
規制遵守の条件は正確に説明する必要があります。ePrivacy指令の下では、ユーザーの端末に情報を保存またはアクセスする場合に同意が必要です。CookieとlocalStorageはどちらもこの要件の対象です。Plausibleはユーザーの端末に何も保存しません:Cookieなし、localStorageエントリなし、IndexedDB書き込みなし。
Plausibleはセッション間の永続的なユーザー識別子も生成しません。各ページビューは独立して処理されます。ユーザー識別子に最も近い値は、訪問者のIPアドレス、ユーザーエージェント文字列、Webサイトのドメイン、24時間ごとに更新・削除されるサーバー側のソルトから導出される日次ハッシュです。元のIPアドレスとユーザーエージェントは保存されません。Plausibleは、これにより個人データを収集しないと説明しています。ただし、ハッシュの計算時にはIPアドレスを短時間処理するため、GDPR第4条(1)の個人データに該当しないかどうかは法的な評価であり、技術的な保証ではありません。これはtva自身の運用についての当社の評価であり、法的助言ではありません。データ保護の専門家に確認してください。
この評価に基づく実際の結果:同意バナーなし、同意管理プラットフォームなし、同意率の最適化なし、同意拒否によるデータの欠落なし。表示されるアクセス解析データは、計測に同意する一部の訪問者だけを対象とする場合よりも、訪問者全体をはるかによく反映します。ただし、スクリプトをブロックする訪問者は引き続き計測されません。
当社のプライバシーポリシーでは、Plausibleが何を収集し、データをどこに保存するかを、アクセス解析に関する簡潔な一段落で正確に説明できるようになりました。以前のGA4に関する項目は複数の段落にわたり、Googleの標準契約条項とデータ処理条件への具体的な参照が必要でした。法務対応の負担軽減は、小規模な組織にとって大きなものです。
インフラの運用負荷とパフォーマンス比較
GA4からの切り替えの前に60日間両方のツールを並行して実行することで、直接比較が可能になりました。ページビュー数は3%未満しか異なりませんでした。
より示唆に富む違いはユニーク訪問者数でした。Plausibleは同期間で同意を取得したGA4より約12%多いユニーク訪問者を記録しました。これは予想通りです:GA4で同意した利用者群は、広告ブロッカーやプライバシー重視のブラウザーを使用する可能性が低い、利用への関与度が高い訪問者に偏っています。Plausibleは同意取得の負担なしに訪問者をトラッキングすることで、総リーチのより正確な像を提供します。ただし、そのスクリプトをブロックする訪問者は引き続き計測されません。同意モードのGA4は最も関与度の高いユーザーの行動の詳細な姿を提供します。どちらも間違っていません—若干異なる質問に答えているのです。
必要なインフラ資源は少量です。ClickHouseは安定状態で約400 MBのRAMを消費します。PostgreSQLも約80 MBを使用します。CPU使用率は通常運用では無視できるほどで、大量の履歴データインポート時にのみ一時的に上昇します。空き容量のあるHetznerサーバーをすでに運用している組織にとって、既存スタックへPlausibleを追加する増分費用は事実上ゼロです。
しかし現実には、移行判断の中心は、インフラ費用や機能が同等かどうかではありません。どのようなデータを根拠に意思決定するかが問題です。同意を必要とするアクセス解析は体系的に偏ったサンプルを生成します。同意を必要としないCookieレスのアクセス解析は、訪問者ごとの詳細は少なくても、はるかに網羅性の高い全体像を捉えられます。「どのページとソースが問い合わせを促進するか」が主要な質問であるマーケティングWebサイトにとって、より網羅性の高い全体像は自ら同意した一部の訪問者の詳細な姿よりも有用です。