AI

ウェブ解析OSS比較:Plausible vs Umami vs PostHog でGoogle Analytics代替をセルフホスト

オープンソースラボ編集部2026年6月13日

ウェブ解析OSS比較:Plausible vs Umami vs PostHog でGoogle Analytics代替をセルフホスト

Google Analytics 4はプライバシー規制(GDPR・CCPA)への対応が複雑で、EU圏ではGA4の使用自体に問題があるケースもあります。PlausibleUmamiPostHogはCookieなし・プライバシーファーストのウェブ解析をセルフホストで実現し、イベント追跡・ファネル分析・A/Bテストも対応します。

ウェブ解析ツールの選定理由

  • プライバシーコンプライアンス: GDPRでCookieバナーを不要にしたい(Plausible・Umamiはcookieレス)
  • データ所有: アクセスログを自社サーバーに保持してGoogleに渡したくない
  • ページビュー以上の分析: ボタンクリック・フォーム送信・購入完了などのイベントを追跡したい
  • 製品分析: DAU・リテンション・ファネル・セッション録画などプロダクトアナリティクスが欲しい
  • コスト削減: Amplitudeは月$499〜、PostHog有料は高額、セルフホストで無料化したい

主要ツールの概要

Plausible

Elixir製のシンプルでプライバシーファーストなウェブ解析ツールです。GitHubスター21k+。スクリプトが1KBと軽量でCookieを使わないため、GDPR・CCPA対応でCookieバナーが不要です。ページビュー・訪問者数・直帰率・デバイス・国別など基本指標を美しいダッシュボードで確認できます。

# Plausibleをdocker-composeで起動
version: "3"
services:
  plausible:
    image: ghcr.io/plausible/community-edition:v2
    restart: always
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    ports:
      - "8000:8000"
    environment:
      BASE_URL: https://analytics.yoursite.com
      SECRET_KEY_BASE: "your-64-char-secret-key"
      # メール設定(管理者招待等に使用)
      MAILER_EMAIL: "analytics@yoursite.com"
      SMTP_HOST_ADDR: "email-smtp.ap-northeast-1.amazonaws.com"
      SMTP_HOST_PORT: 465
      SMTP_USER_NAME: "your-ses-username"
      SMTP_USER_PWD: "your-ses-password"
      SMTP_HOST_SSL_ENABLED: "true"
    depends_on:
      - plausible_db
      - plausible_events_db

  plausible_db:
    image: postgres:16-alpine
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: postgres

  plausible_events_db:
    image: clickhouse/clickhouse-server:24-alpine
    restart: always
    volumes:
      - event-data:/var/lib/clickhouse
    ulimits:
      nofile:
        soft: 262144
        hard: 262144

volumes:
  db-data:
  event-data:
<!-- Next.jsにPlausibleのトラッキングスクリプトを追加 -->
<!-- app/layout.tsx -->
<script
  defer
  data-domain="yoursite.com"
  src="https://analytics.yoursite.com/js/script.js"
/>

<!-- カスタムイベントの追跡 -->
<script>
  // ボタンクリックを追跡
  window.plausible = window.plausible || function() {
    (window.plausible.q = window.plausible.q || []).push(arguments);
  };
</script>
// Next.jsでPlausibleのカスタムイベントを送信
// lib/analytics.ts
export function trackEvent(name: string, props?: Record<string, string | number>) {
  if (typeof window !== "undefined" && window.plausible) {
    window.plausible(name, { props });
  }
}

// 使用例
trackEvent("Signup", { plan: "free", source: "homepage" });
trackEvent("Purchase", { amount: 4980, product: "pro-plan" });
trackEvent("Article Viewed", { slug: "open-source-analytics", category: "devops" });

Umami

Node.js製のミニマルなウェブ解析ツールです。GitHubスター23k+。Plausibleと同様Cookieレスでプライバシーファースト。PostgreSQLまたはMySQLで動き、スクリプトサイズがさらに小さい(2KB未満)です。SaaS版(Umami Cloud)も提供しています。

# UmamiをDockerで起動
version: "3"
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:umami_pass@db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: "your-random-secret"
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: umami_pass
    volumes:
      - umami_db:/var/lib/postgresql/data

volumes:
  umami_db:
// Umamiのイベント追跡(React Hook)
// hooks/useUmami.ts
export function useUmami() {
  const track = (eventName: string, eventData?: Record<string, string | number>) => {
    if (typeof window !== "undefined" && window.umami) {
      window.umami.track(eventName, eventData);
    }
  };

  return { track };
}

// コンポーネントでの使用例
function PricingButton({ plan }: { plan: string }) {
  const { track } = useUmami();

  return (
    <button
      onClick={() => {
        track("pricing_click", { plan, page: "pricing" });
        router.push("/signup");
      }}
    >
      {plan}プランを選ぶ
    </button>
  );
}

PostHog

製品分析・セッション録画・A/Bテスト・フィーチャーフラグ・HeatMapを統合したプロダクトアナリティクスプラットフォームです。GitHubスター24k+で、Mixpanel・Amplitudeの機能をOSSで再現します。

# PostHogをdocker-composeで起動(本格セットアップ)
# https://posthog.com/docs/self-hosting から最新版を取得
git clone https://github.com/PostHog/posthog.git
cd posthog
docker compose -f docker-compose.yml up -d

# または軽量版(Hobby版)
curl -o- https://raw.githubusercontent.com/posthog/posthog/HEAD/bin/deploy-hobby | bash
// PostHogをNext.jsに統合
// app/providers.tsx
"use client";
import posthog from "posthog-js";
import { PostHogProvider as PHProvider } from "posthog-js/react";
import { useEffect } from "react";

export function PostHogProvider({ children }: { children: React.ReactNode }) {
  useEffect(() => {
    posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
      api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || "https://app.posthog.com",
      capture_pageview: false,  // App Routerでは手動でpageviewを送る
      capture_pageleave: true,
      session_recording: {
        maskAllInputs: true,  // パスワード等の入力をマスク
      },
    });
  }, []);

  return <PHProvider client={posthog}>{children}</PHProvider>;
}

// ユーザー識別とイベント追跡
import { usePostHog } from "posthog-js/react";

function CheckoutButton({ amount }: { amount: number }) {
  const posthog = usePostHog();

  const handleCheckout = async () => {
    // ユーザーを識別(ログイン後)
    posthog.identify(user.id, {
      email: user.email,
      plan: user.plan,
    });

    // イベントを送信
    posthog.capture("checkout_started", {
      amount,
      currency: "JPY",
      items_count: cart.length,
    });

    await startCheckout();
  };

  return <button onClick={handleCheckout}>購入する</button>;
}

// A/Bテスト(フィーチャーフラグ)
const isNewDesign = posthog.isFeatureEnabled("new-checkout-design");

機能比較表

比較項目PlausibleUmamiPostHog
ライセンスAGPL-3.0MITMIT
Cookieレス❌(設定可)
GDPR対応
ページビュー追跡
カスタムイベント
ファネル分析✅(シンプル)✅ 高機能
セッション録画
ヒートマップ
A/Bテスト
フィーチャーフラグ
ユーザー識別
ダッシュボードUI★★★★★★★★★☆★★★★☆
スクリプトサイズ1KB2KB35KB+
DBPostgreSQL + ClickHousePostgreSQL/MySQLPostgreSQL + ClickHouse
GitHub Stars21k+23k+24k+

プライバシーファーストのマーケティングツールはmarketingカテゴリ(/categories/marketing)でまとめています。A/Bテストやフィーチャーフラグとの連携についてはフィーチャーフラグOSS比較(/categories/low-code)も参照してください。

FAQ

Q. Plausibleを使うとCookieバナーが本当に不要になりますか?

A. Plausibleはセッション識別にCookieやlocalStorageを一切使わないため、EU圏のGDPR・フランスのCNIL・ドイツのDSGVOのガイドラインに基づく「同意なしで使用可能なアナリティクス」に分類されます。具体的には: ①IPアドレスは保存せず(24時間後にハッシュ化して削除)、②フィンガープリンティングなし、③クロスサイト追跡なし。Plausibleの公式ページには各国の規制当局からの確認も掲載されています。ただし、自社のプライバシーポリシーには「プライバシーファーストのアナリティクスツールを使用しています」と記載を推奨します。Google Analytics(GA4)を使い続ける場合はCookieバナーが必要です。

Q. PostHogをセルフホストするのに必要なサーバースペックはどのくらいですか?

A. PostHogはClickHouseとPostgreSQL、Redisを含む複数のサービスが必要なため、最小でも4GB RAM・2 vCPU・50GB SSDが推奨です。具体的な目安: 月100万イベントまで→$50/月程度のVPS(Hetzner CX31等)で動作。月1000万イベント→8GB RAMが必要。PostHog公式の「Hobby deployment」は$30/月以下の小規模インスタンスを想定した簡略セットアップです。コスト最適化: セッション録画は大量のストレージ(S3/MinIO)が必要なため、録画不要ならPostHogのかわりにUmamiの方がリソース効率が良いです。

Q. Google Analytics 4から移行する際のデータ引き継ぎはできますか?

A. 残念ながら過去のGA4データをPlausible/Umami/PostHogに移行することは基本的にできません(データ構造が異なるため)。移行アプローチ: ①GA4とPlausible/Umamiを並行稼働期間(1〜3ヶ月)を設けてデータを比較検証する、②GA4の過去データはGoogleのデータポータルでPDFレポートに書き出してアーカイブ保存する、③GA4のエクスポート機能(BigQueryへのエクスポート)を使えば過去データをCSVで保存できる。移行後の注意: PV数の計算方法がGA4とPlausible/Umamiで異なるため(直帰セッションのカウント方法等)、最初の1〜2ヶ月は数値差異があります。

Q. Umamiのチーム・マルチサイト管理はどうなっていますか?

A. Umami v2以降はマルチユーザー・マルチサイト管理に対応しています。機能: ①1つのUmamiインスタンスで複数サイトのアナリティクスを管理できる、②サイトごとに異なるアクセス権を設定できる(Admin/View only)、③チームメンバーを招待してサイト閲覧権限を付与できる、④各サイトのダッシュボードは別々に表示され、横断的なレポートはAdmin権限のみ。Plausibleも同様のマルチサイト管理に対応しています。PostHogの場合: Organizationとプロジェクト単位で管理でき、プロジェクトごとにAPIキーが分かれています。

まとめ

ユースケース推奨ツール
Cookieレス + シンプルな解析Plausible
軽量 + MySQL/PostgreSQLUmami
セッション録画 + A/BテストPostHog
プロダクトアナリティクス全般PostHog

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。