AI

Webアナリティクス比較:Plausible vs Umami vs Matomo でGA代替を構築する

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

Webアナリティクス比較:Plausible vs Umami vs Matomo でGA代替を構築する

Google Analytics 4(GA4)のプライバシー問題・GDPR懸念・UX複雑化を受けて、シンプル・プライバシーファーストなOSSセルフホスト型Webアナリティクスへの移行が欧州・日本で急増しています。Plausible(軽量・GDPR準拠・SaaS+OSS)・Umami(Next.js製・シンプル)・Matomo(高機能・GA完全代替)の3つが2026年のOSS Webアナリティクスデファクトスタンダードです。

OSS Webアナリティクスを使う理由

  • GDPR/プライバシー準拠: GA4はCookieを使うためGDPR・個人情報保護法でCookie同意バナーが必要→OSSのCookieレスアナリティクスは同意不要
  • データ所有権: アクセスデータが自社サーバーのみに保存→Googleへのデータ提供なし
  • シンプルなUI: GA4は複雑すぎる→Plausible/Umamiは1ダッシュボードで全指標を把握
  • コスト最適化: Plausible SaaS($9/月)→セルフホストで$5/月のVPS費用のみ

主要ツールの概要

Plausible Analytics

2019年公開、Elixir製のOSSです。GitHubスター22k+。Cookieレス・軽量(<1KB)・GDPR準拠のWebアナリティクスで、GA4の複雑な設定なしにドメインを登録してJavaScriptスニペット(1行)を埋め込むだけでページビュー・ユニークビジター・直帰率・Webバイタルを計測できます。

# docker-compose.yml: Plausible Analytics CE (Community Edition)
version: "3.8"
services:
  plausible_db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: plausible_db
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - plausible_pg:/var/lib/postgresql/data

  plausible_events_db:
    image: clickhouse/clickhouse-server:24.3
    volumes:
      - plausible_ch:/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
    restart: unless-stopped
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    ports:
      - "8000:8000"
    environment:
      BASE_URL: https://analytics.example.com
      SECRET_KEY_BASE: ${PLAUSIBLE_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
      SMTP_HOST_ADDR: ${SMTP_HOST}
      SMTP_HOST_PORT: 587
      SMTP_USER_NAME: ${SMTP_USER}
      SMTP_USER_PWD: ${SMTP_PASS}
      MAILER_EMAIL: noreply@example.com
    depends_on: [plausible_db, plausible_events_db]

volumes:
  plausible_pg:
  plausible_ch:
// Next.js: Plausible Analytics スクリプトと カスタムイベント
// app/layout.tsx - スクリプト追加
import Script from 'next/script'

export default function RootLayout({ children }) {
  return (
    <html>
      <head>
        <Script
          defer
          data-domain="mysite.example.com"
          src="https://analytics.example.com/js/script.js"
        />
      </head>
      <body>{children}</body>
    </html>
  )
}

// カスタムイベントをトラッキング(例: ボタンクリック)
function trackEvent(eventName, props = {}) {
  if (typeof window !== 'undefined' && window.plausible) {
    window.plausible(eventName, { props })
  }
}

// 使用例
trackEvent('Signup', { plan: 'Pro', method: 'Email' })
trackEvent('Purchase', { product: 'Claude API', amount: '20' })
trackEvent('Download', { file: 'report.pdf' })

// Plausible Stats API でダッシュボードデータを取得
async function getAnalytics(siteId, period = '30d') {
  const resp = await fetch(
    'https://analytics.example.com/api/v1/stats/aggregate?' +
    new URLSearchParams({ site_id: siteId, period, metrics: 'visitors,pageviews,bounce_rate' }),
    { headers: { Authorization: 'Bearer ' + process.env.PLAUSIBLE_API_KEY } }
  )
  return resp.json()
}

Umami

2020年公開、TypeScript/Next.js製のOSSです。GitHubスター24k+。Next.jsで構築されたシンプルなOSSアナリティクスで、セットアップが容易でマルチサイト対応・チームメンバー招待・Cookieレスが特徴です。自身がNext.jsで構築されているため、Next.jsプロジェクトとの親和性が高いです。

# docker-compose.yml: Umami
version: "3.8"
services:
  umami:
    image: ghcr.io/umami-software/umami:postgresql-latest
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://umami:${DB_PASS}@umami-db:5432/umami
      DATABASE_TYPE: postgresql
      APP_SECRET: ${UMAMI_APP_SECRET}
    depends_on: [umami-db]

  umami-db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${DB_PASS}
    volumes:
      - umami_pg:/var/lib/postgresql/data

volumes:
  umami_pg:
# Python: Umami API でページビューデータを取得して自動レポートを生成
import requests

UMAMI_URL = 'http://localhost:3000'

def get_umami_token(username: str, password: str) -> str:
    resp = requests.post(f'{UMAMI_URL}/api/auth/login', json={'username': username, 'password': password})
    return resp.json()['token']

def get_website_stats(token: str, website_id: str, period_days: int = 30) -> dict:
    import time
    end_at = int(time.time() * 1000)
    start_at = end_at - period_days * 24 * 60 * 60 * 1000
    headers = {'Authorization': f'Bearer {token}'}
    resp = requests.get(
        f'{UMAMI_URL}/api/websites/{website_id}/stats',
        headers=headers,
        params={'startAt': start_at, 'endAt': end_at},
    )
    return resp.json()

def get_top_pages(token: str, website_id: str) -> list:
    headers = {'Authorization': f'Bearer {token}'}
    import time
    end_at = int(time.time() * 1000)
    start_at = end_at - 30 * 24 * 60 * 60 * 1000
    resp = requests.get(
        f'{UMAMI_URL}/api/websites/{website_id}/metrics',
        headers=headers,
        params={'startAt': start_at, 'endAt': end_at, 'type': 'url', 'limit': 10},
    )
    return resp.json()

# Slack通知: 毎週月曜にアナリティクスサマリーを送信
def send_weekly_report(webhook_url: str, stats: dict, top_pages: list):
    requests.post(webhook_url, json={'text': f'''
*週次アナリティクスレポート*
訪問者: {stats.get("visitors", {}).get("value", 0):,}人
ページビュー: {stats.get("pageviews", {}).get("value", 0):,}回
直帰率: {stats.get("bounces", {}).get("value", 0):.1f}%

*人気ページ Top3*
{chr(10).join(f'{i+1}. {p["x"]}: {p["y"]}回' for i, p in enumerate(top_pages[:3]))}
'''})

Matomo

2007年公開、PHP製のOSSです。GitHubスター20k+。Google Analyticsの完全代替を目指す高機能OSSアナリティクスで、ヒートマップ・セッション録画・A/Bテスト・ファネル分析・eコマース追跡・カスタムディメンション・GDPR管理機能を提供します。

# docker-compose.yml: Matomo
version: "3.8"
services:
  matomo:
    image: matomo:5-fpm-alpine
    restart: unless-stopped
    volumes:
      - matomo_data:/var/www/html
    environment:
      MATOMO_DATABASE_HOST: mariadb
      MATOMO_DATABASE_ADAPTER: mysql
      MATOMO_DATABASE_TABLES_PREFIX: matomo_
      MATOMO_DATABASE_DBNAME: matomo
      MATOMO_DATABASE_USERNAME: matomo
      MATOMO_DATABASE_PASSWORD: ${MATOMO_DB_PASS}

  nginx:
    image: nginx:alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - matomo_data:/var/www/html:ro
      - ./matomo-nginx.conf:/etc/nginx/conf.d/default.conf

  mariadb:
    image: mariadb:11
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASS}
      MYSQL_DATABASE: matomo
      MYSQL_USER: matomo
      MYSQL_PASSWORD: ${MATOMO_DB_PASS}
    volumes:
      - matomo_db:/var/lib/mysql

volumes:
  matomo_data:
  matomo_db:

機能比較表

比較項目PlausibleUmamiMatomo
Cookieレス✅(設定可)
セットアップ✅ 最簡単
高度な分析✅ 最強
ヒートマップ✅(有料)
GitHub Stars22k+24k+20k+

WebアナリティクスはマーケティングカテゴリのGA4代替として/categories/marketingのSEO・コンテンツマーケティングのKPI(PV・滞在時間・コンバージョン)を追跡します。DevOpsカテゴリ/categories/devopsのDockerホスティング・Nginxリバースプロキシ・Let's Encryptと組み合わせてセルフホストアナリティクスサーバーを$5/月のVPSで運用するインフラ構成が一般的です。

FAQ

Q. PlausibleをGDPR/プライバシーポリシー的にCookie同意なしで使える理由は?

A. Plausibleはサードパーティクッキーを使わずIPアドレスもハッシュ化して個人を特定しないため、GDPR・ePrivacyでCookie同意が不要です。技術的な仕組み: ①Cookieを一切使用しない②セッション識別: IPアドレス+User-Agent+日付のSHA256ハッシュ→翌日には別のハッシュになる→過去24時間以内のユニーク性のみ判定③IPアドレスのログを保存しない→GDPRの「個人データ」定義に非該当。法的根拠: EU ePrivacy Directiveによりアナリティクスに使用するCookieはCookie同意が必要だが、Plausibleはクッキー不使用・個人特定不可→同意バナー不要。日本の個人情報保護法: 個人を特定しない統計データのみ収集→個人情報に非該当。注意: MatomoはデフォルトでCookieを使うが「Cookieレスモード」に設定すると同様にCookie同意不要になる。

Q. UmamiをVercelにセルフホストして無料運用するには?

A. Vercel + Supabase(PostgreSQL無料枠)でUmamiを無料でホストできます。設定: ①Supabaseでプロジェクトを作成→接続文字列をコピー②GitHubにUmamiをフォーク③Vercelにデプロイ: Environment Variables→DATABASE_URLにSupabaseのPostgreSQL URLを設定→APP_SECRETに32文字のランダム文字列④デプロイ後にUmamiの初期セットアップ画面でサイトを追加→トラッキングスクリプトを取得→Next.jsに埋め込み。制限事項: Vercelの無料プランはサーバーレス関数の実行時間制限があり高トラフィックサイトでは追跡漏れが発生する可能性→月10万PV以下なら無料運用で問題なし。

Q. Matomoでeコマースのコンバージョン追跡を設定するには?

A. MatomoのeCommerce Tracking APIとJavaScript SDKを使って購入イベントを記録します。設定: ①Matomo管理画面→Goals→eCommerce有効化②Next.js/JavaScriptに以下を追加してトランザクションを記録:

// 商品をカートに追加
_paq.push(['addEcommerceItem', 'P001', 'Wireless Keyboard', 'Electronics', 8000, 1])
// 注文完了
_paq.push(['trackEcommerceOrder', 'ORDER-123', 15000, 12000, 1500, 0, false])

③ファネル分析: Matomo Pro機能でカート追加→チェックアウト→完了の離脱率を可視化。レポート: Matomo管理画面→eCommerce→製品レポートで「売上TOP商品」「コンバージョン率」「平均注文額」をGA4と同等の詳細レポートで確認可能。

Q. Plausible・Umami・Matomoのどれを選ぶべきですか?

A. シンプルなPV・UU・基本指標のみ必要ならPlausible/UmamiGA4からの完全移行・ヒートマップ・ファネル・eコマース等の高度な分析が必要ならMatomoが向いています。Plausible優位: ①世界一シンプルなUIで1ダッシュボードですべて把握②Elixirの高性能で大量PVに対応③SaaS版($9/月)とセルフホストどちらでも使える④公式のVercel・Next.js統合。Umami優位: ①Next.js製でTypeScriptコードベース→カスタマイズしやすい②Vercel+Supabaseで完全無料ホスティングが可能③マルチサイト・マルチユーザー管理が簡単。Matomo優位: ①Google Analytics 4の全機能を代替できる②ヒートマップ・セッション録画(有料プラグイン)③レポートのホワイトラベル・PDFエクスポート④1000万PV以上の大規模サイトでの実績。

まとめ

ユースケース推奨ツール
シンプル・Cookie同意不要・軽量スクリプトPlausible
Next.js統合・無料ホスト・マルチサイトUmami
GA4完全代替・ヒートマップ・eコマース・大規模Matomo

関連外部リソース

他の記事も読む

Let's Build Together

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

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