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:
機能比較表
| 比較項目 | Plausible | Umami | Matomo |
|---|---|---|---|
| Cookieレス | ✅ | ✅ | ✅(設定可) |
| セットアップ | ✅ 最簡単 | ✅ | 中 |
| 高度な分析 | △ | △ | ✅ 最強 |
| ヒートマップ | ❌ | ❌ | ✅(有料) |
| GitHub Stars | 22k+ | 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/Umami、GA4からの完全移行・ヒートマップ・ファネル・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 |