セルフホスト型アクセス解析「Tenyen Analytics」v0.6.2公開――組織ウォッチリスト・ラベル・保存ビューに対応

Google Analyticsは、Webサイト全体のアクセス傾向やコンバージョンを分析するには非常に強力や。

ただ、個人サイトや技術ブログを運営していると、もっと素早く、もっと具体的に確認したい情報もある。

「どの検索サイトやSNSから来たんやろ?」
「Blueskyへ投稿した記事は、実際にどれくらい読まれたんやろ?」
「ひとつの訪問で、どの記事をどんな順番で読み、どのリンクを押したんやろ?」
「企業、大学、研究機関などのネットワークから、どの記事が読まれたんやろ?」
「気になった組織や訪問者へ、自分用の名前やメモを残せへんやろか?」

巨大なマーケティング基盤を構築したいわけではない。

管理画面を開いたときに、

  • どの記事が読まれたか
  • どの国・地域から来たか
  • どのASN・ネットワーク組織に属するIPか
  • どの検索エンジン・SNS・外部サイトから流入したか
  • どのUTMキャンペーンから訪問したか
  • ひとつのセッションで、どのページをどの順番で閲覧したか
  • どの外部リンクやダウンロードが利用されたか
  • 滞在時間やスクロール率
  • 人間によるアクセスかBotか
  • どの組織や訪問者を継続して確認したいか
  • 自分が付けたラベル・メモ・タグで情報を整理できるか

といった情報を、自分のWebサーバー内で確認・整理したい。

そんな目的で開発しているのが、セルフホスト型アクセス解析ツール「Tenyen Analytics」や。

現在は、

  • WordPress向けのTenyen Analytics for WordPress
  • 通常のPHPサイト向けのTenyen Analytics Native

の2種類をGitHubで公開しているで。

  1. Tenyen Analyticsとは
  2. WordPress版・Native版ともにv0.6.2へ更新
  3. v0.6.2の主な新機能
    1. 解析対象へ管理者独自の情報を追加
    2. 複数の解析対象へラベル・メモ・タグを付与
    3. 再利用可能なタグ
    4. 組織・ASNウォッチリスト
    5. ASN・組織情報についての注意
    6. 保存フィルター・保存ビュー
    7. ピン留めと既定ビュー
    8. ラベル・タグ・ウォッチ対象の集中管理
    9. 既存画面へ管理者メタデータを統合
  4. v0.6.1で追加した流入・UTM・イベント分析
    1. 流入チャネルの分類
    2. UTMキャンペーン分析
    3. イベント分析
    4. 公開JavaScriptカスタムイベントAPI
    5. フォーム内容は収集しない
    6. セッション経路へイベントを統合
  5. v0.6.0で追加したセッション・訪問者分析
    1. セッション一覧
    2. 匿名訪問者の詳細
    3. 入口・出口・直帰・離脱
  6. 現在実装済みの主な機能
    1. 基本アクセス解析
    2. イベント・行動分析
    3. 管理者ラベル・組織インテリジェンス
    4. IP・地域・ASN解析
    5. グラフ・集計
    6. アクセス履歴
  7. THK Analyticsから着想を得たプロジェクト
  8. Tenyen Analytics for WordPress
  9. Tenyen Analytics Native
    1. ブラウザで導入できるGUIインストーラー
    2. 既存環境を保ったアップグレード
    3. 独自の非同期管理コンソール
  10. GeoLite2データベース
    1. WordPress版
    2. Native版
  11. プライバシーとデータ保護
  12. GitHub
    1. Tenyen Analytics for WordPress
    2. Tenyen Analytics Native
  13. Powered by 10yendama.com
  14. 今後の予定
    1. v0.6.3系
    2. v0.7系
    3. v0.8系以降
    4. 関連

Tenyen Analyticsとは

Tenyen Analyticsは、アクセス解析データを導入先のWebサーバーとデータベースへ保存し、管理者自身の環境で分析するツールや。

外部のアクセス解析サービスへ、解析目的だけで計測データを全面的に送信する構成ではない。

Google Analyticsの完全な代替やMatomoの縮小版を目指すのではなく、

軽量なアクセスログ解析+組織インテリジェンス

を製品の中心に据えている。

特に、

「どの組織のネットワークから、どの記事が、どのように読まれたか」

を確認し、その発見へ管理者自身の意味付けを加えられる解析ツールとして育てているで。

WordPress版・Native版ともにv0.6.2へ更新

WordPress版とNative版の両方を、v0.6.2へアップグレードした。

これまでの主な進化は、次のようになる。

  • v0.6.0:セッションと匿名訪問者を軸に、アクセスを時系列の「線」として分析
  • v0.6.1:流入チャネル、UTM、クリック、ダウンロード、404、カスタムイベントをセッションへ統合
  • v0.6.2:組織ウォッチリスト、管理者ラベル、メモ、タグ、保存ビューを追加

v0.6.2では、解析データを眺めるだけでなく、管理者が気になった対象へ別名・メモ・タグなどを付け、継続的に整理できるようになったで。

v0.6.2の主な新機能

解析対象へ管理者独自の情報を追加

既存のアクセス解析データへ、管理者専用の情報を追加できる。

  • 表示名・別名
  • メモ
  • タグ
  • 組織のウォッチ状態

これらは、収集した生データそのものを書き換える機能ではない。

例えば、ASNへ登録された元の組織名は保持したまま、管理者が分かりやすい別名を追加できる。

元の組織名:
Research Organization Example

管理者の表示名:
研究機関・Linux関連記事

タグ:
research
linux
repeat-access

メモ:
Ubuntu関連記事への複数回アクセスを確認

別名を付けても、ASN番号、GeoLite2の組織名、組織分類、アクセス履歴などの元情報は上書きされない。

複数の解析対象へラベル・メモ・タグを付与

v0.6.2では、管理者による意味付けを複数の解析対象へ適用できる。

  • ASN・ネットワーク組織
  • 匿名訪問者
  • 記事・固定ページ・URL
  • 参照元ドメイン
  • UTMキャンペーン
  • 外部リンク先

例えば、匿名訪問者へ「Linux記事を継続閲覧」、キャンペーンへ「Bluesky告知」、外部リンク先へ「GitHubリポジトリ」といった表示名やタグを付けられる。

管理者メモはプレーンテキストとして保存し、公開ページや解析用JavaScriptへ出力しない。

再利用可能なタグ

タグは、一度作成したものを複数の対象で再利用できる。

important
research
education
linux
repeat-visitor
campaign
download

タグ名による検索や絞り込みにも対応し、管理者が独自に作った分類で解析データを整理できる。

色は視覚的な補助として利用するが、色だけに依存せず、必ずタグ名を表示する設計や。

組織・ASNウォッチリスト

継続して確認したいASN・ネットワーク組織を、ウォッチリストへ登録できるようになった。

ウォッチ対象には、

  • ウォッチ中の表示
  • 管理者別名
  • メモ
  • タグ
  • 最近のアクセス
  • セッションや閲覧ページ

などを組み合わせて確認できる。

組織一覧や関連する解析画面からウォッチ状態を切り替え、ウォッチ中の組織だけに絞り込むこともできる。

なお、v0.6.2のウォッチリストは、管理画面で注目対象を整理するための機能や。

メール通知、再訪通知、リアルタイム通知などは、このバージョンには含まれていない。

ASN・組織情報についての注意

GeoLite2 ASNから取得できるのは、接続元IPアドレスが登録されているASN番号とネットワーク組織名や。

特定の組織名が表示されたとしても、

  • その組織の職員本人が閲覧した
  • その組織が公式にアクセスした
  • 閲覧者の勤務先・所属先が確定した
  • 一つのIPアドレスが一人の人物を表す

という意味ではない。

組織ウォッチリストや管理者ラベルは、アクセス元ネットワークを調査・整理するための補助情報として利用してな。

保存フィルター・保存ビュー

アクセス履歴、セッション、コンテンツ、組織、流入元、キャンペーン、イベントなどで設定した検索条件を、名前付きの保存ビューとして再利用できるようになった。

例えば、次のような条件を保存できる。

  • 日本の大学・研究機関からのHumanアクセス
  • Blueskyキャンペーンから流入したセッション
  • Linux記事から発生したダウンロード
  • ウォッチ中の組織によるアクセス
  • 404を発生させたBot
  • 特定タグを付けた匿名訪問者

保存ビューには、画面に応じて次のような状態を保持できる。

  • 検索条件
  • 期間
  • Human/Bot
  • 並び順
  • 表示件数
  • 表示列
  • タグ・ウォッチ状態

「直近7日」のような相対期間は、保存ビューを開いた時点から再計算する。

開始日と終了日を直接指定した場合は、その日付を固定した条件として保存する。

ピン留めと既定ビュー

よく使う保存ビューはピン留めできる。

また、各解析画面で最初に適用する既定ビューを指定できるため、毎回同じフィルターを設定し直す必要がない。

保存された条件に、将来のバージョンで利用できなくなった項目が含まれている場合は、画面全体を壊さず、利用可能な条件だけを読み込む設計としている。

ラベル・タグ・ウォッチ対象の集中管理

各解析画面から編集できるだけでなく、管理者が付けた情報をまとめて確認する管理画面も用意した。

  • ウォッチ中の組織
  • 別名やメモを付けた対象
  • タグと利用件数
  • 保存ビュー

使われているタグの確認、タグ名の変更、不要なタグの削除、保存ビューの整理などを一か所で行える。

タグや管理者メタデータを削除しても、元のページビュー、セッション、イベント、組織情報などの解析データは削除されない。

既存画面へ管理者メタデータを統合

別名、タグ、ウォッチ状態などは、専用画面だけに閉じ込めず、既存の解析画面へ統合している。

  • アクセス履歴
  • セッション
  • 匿名訪問者
  • コンテンツ
  • 流入元
  • キャンペーン
  • イベント
  • 外部リンク・ダウンロード
  • ASN・組織

解析中に気になった対象を見つけたら、その画面から別名、メモ、タグ、ウォッチ状態を編集できる。

元の組織名、URL、参照元、キャンペーン値なども併記するため、管理者の別名だけを見て元データが分からなくなることはない。

v0.6.1で追加した流入・UTM・イベント分析

v0.6.1では、セッションの入口と途中で発生した操作を分析できるようにした。

流入チャネルの分類

参照元URLとUTM情報をもとに、アクセスを次のチャネルへ分類する。

  • Direct
  • Organic Search
  • Social
  • Referral
  • Internal
  • Campaign
  • Unknown

検索エンジン、SNS、外部サイト、サイト内移動、UTMキャンペーンなどの違いを確認しやすくなる。

UTMキャンペーン分析

次の標準的なUTMパラメーターを解析できる。

utm_source
utm_medium
utm_campaign
utm_content
utm_term

例えば、Blueskyへ記事を投稿するときに、次のようなURLを使う。

https://example.com/article/
  ?utm_source=bluesky
  &utm_medium=social
  &utm_campaign=tenyen_release

セッション数、推定訪問者数、ページビュー数、直帰率、推定エンゲージメント時間、入口ページ、人気コンテンツ、イベントなどをキャンペーン別に確認できる。

セッションへ最初に入った流入情報を基準とする、ファーストタッチ方式を採用している。

イベント分析

ページビュー以外の操作もイベントとして記録・分析できる。

  • 外部リンクのクリック
  • ファイルのダウンロード
  • 設定に応じた内部リンククリック
  • 明示的に指定したボタンクリック
  • 明示的に指定したフォーム送信
  • 404ページ
  • 任意のカスタムイベント

イベント種別、イベント名、発生回数、セッション数、推定訪問者数、発生ページ、リンク先ドメイン、Human/Botなどを確認できる。

公開JavaScriptカスタムイベントAPI

サイト固有の操作も、任意のカスタムイベントとして送信できる。

window.TenyenAnalytics.trackEvent('radio_play', {
  station: 'example-station',
  server: 'primary'
});

window.TenyenAnalytics.trackEvent('stream_server_change', {
  station: 'example-station',
  server: 'backup'
});

実際の呼び出し名や導入方法は、利用している版のREADMEを確認してな。

イベント名やメタデータには容量と形式の制限を設け、関数、DOMノード、HTML、深くネストしたオブジェクト、循環参照などは送信対象にしない。

フォーム内容は収集しない

フォーム送信イベントでは、フォームの識別子と表示ページだけを記録する。

氏名、メールアドレス、問い合わせ本文、パスワード、非表示フィールド、決済情報などの入力値は収集しない。

セッション経路へイベントを統合

ページビュー、engagement、クリック、ダウンロード、404、カスタムイベントを、ひとつの訪問の流れとして確認できる。

Organic Search
  ↓
Ubuntu高速化の記事
滞在 2分18秒/スクロール 82%
  ↓
Linux Dolbyの記事
滞在 1分04秒/スクロール 56%
  ↓
外部リンクをクリック
  ↓
ファイルをダウンロード
  ↓
離脱

クリックやイベントをページビューとして数えたり、直帰判定を不必要に変えたりはしない。

v0.6.0で追加したセッション・訪問者分析

v0.6.0では、個々のアクセスをセッションと匿名訪問者の単位へまとめ、訪問行動を時系列で確認できるようにした。

セッション一覧

ひとつの訪問について、次の情報をまとめて確認できる。

  • セッション開始日時
  • 最終アクセス日時
  • ページビュー数
  • 推定滞在時間
  • 入口ページ
  • 離脱ページ
  • 参照元
  • 国・地域
  • ASN・登録組織名
  • ブラウザ・OS・端末
  • Human/Bot判定

匿名訪問者の詳細

既存の匿名訪問者IDを基準に、過去のセッションをまとめて確認できる。

  • 初回訪問
  • 最終訪問
  • セッション数
  • 総ページビュー数
  • 主な入口ページ
  • よく閲覧しているコンテンツ
  • 主な参照元
  • 最近利用したブラウザ・OS・端末
  • 過去のセッション一覧

匿名訪問者IDは、ブラウザ内へ保存された識別子を利用した推定や。

Cookieやブラウザストレージの削除、別ブラウザ・別端末の利用などによって変化するため、同一人物であることを証明するものではない。

入口・出口・直帰・離脱

コンテンツ分析では、次のセッション指標を確認できる。

  • 入口数
  • 出口数
  • 直帰数
  • 直帰率
  • 離脱率
  • セッション数
  • セッション当たりのページビュー

現在実装済みの主な機能

基本アクセス解析

  • ページビュー
  • 推定ユニーク訪問者数
  • セッション数
  • 滞在時間
  • スクロール率
  • 参照元URL・参照元ドメイン
  • 流入チャネル
  • UTMキャンペーン
  • 記事・固定ページ別アクセス
  • IPv4/IPv6対応
  • User-Agent解析
  • ブラウザ・OS・端末判定

イベント・行動分析

  • 時系列のセッション経路
  • 匿名訪問者ごとの過去セッション
  • 外部リンククリック
  • ダウンロード
  • 内部リンク・ボタン・フォームの明示的なイベント
  • 404イベント
  • 任意のカスタムイベント
  • イベント別ランキングと絞り込み
  • リンク先ドメイン・URL分析
  • 発生元ページ分析

管理者ラベル・組織インテリジェンス

  • ASN・組織のウォッチリスト
  • 組織・匿名訪問者・コンテンツへの管理者別名
  • 参照元・キャンペーン・外部リンク先への管理者メタデータ
  • プレーンテキストの管理者メモ
  • 再利用可能なタグ
  • タグ・別名・ウォッチ状態による検索と絞り込み
  • 保存フィルター・保存ビュー
  • ピン留めと既定ビュー
  • 管理者メタデータの集中管理
  • 元の解析値を保持したまま管理者情報を併記

IP・地域・ASN解析

  • 生IPアドレスの暗号化保存
  • HMACを利用したIPアドレス完全一致検索
  • GeoLite2 Cityによる国・地域判定
  • GeoLite2 ASNによるASN番号取得
  • ASN登録組織名の表示
  • 通信事業者、企業、大学、研究機関、クラウド、Proxyなどの分類
  • 注目組織アクセス
  • ASN・組織別ランキング

グラフ・集計

  • 指定期間のPV推移
  • 推定訪問者数の推移
  • セッション推移
  • 平均滞在時間
  • 平均スクロール率
  • ブラウザ・OS・端末別グラフ
  • 国別グラフ
  • ASN・組織別グラフ
  • 人気記事ランキング
  • 注目組織ランキング
  • 流入チャネル・参照元ドメイン分析
  • キャンペーン分析
  • イベント分析
  • Human/Botの分析対象切り替え

アクセス履歴

  • pageviewとengagementを統合した閲覧履歴
  • 生イベントログ
  • Bot自動判定
  • キーワード検索
  • 日付範囲検索
  • 国・ASN・ブラウザ・OS・端末による絞り込み
  • 流入チャネル・キャンペーン・イベントによる絞り込み
  • 管理者タグ・ウォッチ状態による絞り込み
  • 非同期検索・非同期ページング
  • 表示件数と並び順の変更
  • 表示列のカスタマイズ
  • 行ごとの詳細表示
  • 関連セッション・匿名訪問者詳細への移動

THK Analyticsから着想を得たプロジェクト

俺は以前、セルフホスト型アクセス解析のTHK Analyticsを利用していた。

THK Analyticsには、訪問者別のログ、閲覧ページの順序、入口・出口、クリック情報などを、管理画面から直感的に確認できる良さがあった。

Tenyen Analyticsは、その使いやすい訪問行動分析の思想から着想を得ている。

ただし、THK Analyticsのソースコードをそのまま移植したものではない。

Tenyen Analyticsでは、独自のイベント構造と管理画面を基礎に、現代のPHP・WordPress環境向けとして実装している。

  • WordPress版とNative PHP版
  • 非同期管理画面
  • セッションと匿名訪問者による行動分析
  • 滞在時間とスクロール率
  • 流入チャネルとUTM
  • リンク・ダウンロード・カスタムイベント
  • GeoLite2 City/ASN
  • ASN・ネットワーク組織の分類
  • 組織ウォッチリスト
  • 管理者別名・メモ・タグ
  • 保存フィルター・保存ビュー
  • Human/Bot判定
  • 生IPアドレスの暗号化保存
  • HMACによるIP完全一致検索
  • 英語/日本語UIとドキュメント
  • GitHubによるソースコードとリリース管理

THK Analyticsで便利やった「訪問者の動きを眺める楽しさ」を受け継ぎながら、Tenyen Analyticsとして現代的に強化していくのが、このプロジェクトの目標のひとつや。

Tenyen Analytics for WordPress

WordPress版は、プラグインを有効化すると解析用JavaScriptが自動的に読み込まれる。

一般的なWordPressテーマであれば、テーマファイルへ解析タグを手作業で追加する必要はない。

WordPress側のログイン状態や404判定など、WordPress固有の情報も利用できる。

管理画面は機能別のサブメニューへ分割し、一覧・詳細・フィルター・ページングを非同期で操作できる。

保存ビューはWordPress管理者ごとに管理し、他の管理者の非公開ビューを読み書きしない構成としている。

WordPress標準の管理ダッシュボードにも、Tenyen Analyticsの概要ウィジェットを追加しているで。

Tenyen Analytics Native

WordPressを使っていないPHPサイト向けには、Native版を用意している。

解析対象サイトへ専用JavaScriptを読み込み、PHPの収集エンドポイントへアクセス情報やイベントを送信する。

ブラウザで導入できるGUIインストーラー

ZIPを展開してサーバーへアップロードし、ブラウザでインストーラーを開くと、次の設定を画面に従って進められる。

  • PHP動作環境の確認
  • 書き込み権限の確認
  • データベース接続テスト
  • サイトURL・公開URLの設定
  • 管理画面アカウントの作成
  • 秘密鍵・サイトトークンの生成
  • GeoLite2 City/ASNのアップロード
  • データベーステーブルの作成
  • 埋め込みコードの表示

既存環境を保ったアップグレード

アップグレード時には、利用者が所有する次の設定・データを保護する。

config.php
data/
storage/
storage/installed.lock
管理者アカウント
暗号鍵
サイトトークン
GeoLite2データベース
既存のアクセスログ・セッション・イベント

独自の非同期管理コンソール

Native版もWordPress版と同様に、URL、再読込、ブラウザの戻る・進むに対応した非同期管理画面を備えている。

イベント、キャンペーン、流入元、アクセス履歴、セッション、ウォッチリスト、保存ビューなどを、画面全体を再読込せずに切り替えられる。

GeoLite2データベース

国・地域・ASN情報の解析には、MaxMindが提供するGeoLite2データベースを使用する。

GeoLite2-City.mmdb
GeoLite2-ASN.mmdb

GeoLite2を利用するには、MaxMindアカウントの作成と利用条件への同意が必要や。

WordPress版

次のディレクトリへ配置する。

wp-content/uploads/tenyen-analytics/

Native版

GUIインストーラー、または管理画面からアップロードできる。

大きなMMDBファイルでも共有サーバーのPOST上限へ引っ掛かりにくいよう、分割アップロードに対応している。

プライバシーとデータ保護

Tenyen Analyticsは、IPアドレス、閲覧ページ、参照元、UTM情報、ブラウザ情報、セッション・匿名訪問者識別子、設定されたイベントなどを、導入先サイトのデータベースへ保存する。

生IPアドレスは暗号化して保存し、完全一致検索用にはHMACによるハッシュ値を利用する。

管理者が追加した別名、メモ、タグ、保存ビューは、導入先データベース内の管理者専用情報として扱い、公開サイトの解析用JavaScriptへ送信しない。

カスタムイベントには容量制限と形式チェックを設け、フォーム入力値やDOM全体を収集しない設計としている。

導入するサイトの管理者は、適用される法令やサイトのプライバシーポリシーに従って運用する必要がある。

導入時には、次の内容をプライバシーポリシーへ明記してな。

  • アクセス情報やイベントを収集していること
  • 収集目的
  • 保存する情報
  • 保存期間
  • 第三者提供や外部送信の有無
  • 問い合わせ方法

GitHub

Tenyen Analytics for WordPress

GitHubリポジトリ
v0.6.2リリース
最新リリース

Tenyen Analytics Native

GitHubリポジトリ
v0.6.2リリース
最新リリース

両版ともライセンスはGPL-2.0-or-later

ソースコード、英語版/日本語版README、英語版/日本語版CHANGELOG、配布ZIP、SHA-256チェックサムなどをGitHubで公開している。

不具合報告、改善案、Issue、Pull Requestも歓迎やで^^

Powered by 10yendama.com

Tenyen Analytics v0.6.2
Powered by 10yendama.com
© 2026 10yendama.com

WordPress版では管理画面内だけにクレジットを表示し、公開サイト側へリンクを自動挿入することはない。

今後の予定

今後も、軽量・セルフホスト・個別ログ・組織情報という中核を保ちながら、段階的に機能を追加していく。

v0.6.3系

  • 管理者・自分自身のアクセス除外
  • Bot・クローラー除外ルール
  • 特定URIの除外
  • 国・地域・組織・端末などの除外条件
  • 除外ルール管理画面
  • データ品質を確認するための診断

v0.7系

  • CSV/JSONエクスポート
  • ログ保存期間設定
  • 古いログの自動削除
  • DB容量・ログ件数の管理
  • 日別集計と大量ログ向け高速化
  • バックアップと復元

v0.8系以降

  • GeoLite2の自動取得・自動更新
  • ウォッチ中組織の再訪通知
  • 新しい法人・教育機関からのアクセス通知
  • PV・Bot・404急増通知
  • 日次・週次レポート
  • 複数サイト・権限管理

ヒートマップやセッション録画は、DOM保存量、個人情報のマスキング、ストレージ消費、再生UIの複雑さなどが大きく、Tenyen Analyticsの軽量性を損なう可能性があるため、現時点では優先していない。

v0.6.0で訪問を「点」から「線」として確認できるようになり、v0.6.1では、その線の入口と途中の操作まで分析できるようになった。

そしてv0.6.2では、見つけた組織、訪問者、コンテンツ、流入元などへ管理者自身の知識を追加し、あとから継続して追えるようになったで。

自分のサーバー内で解析データを管理しながら、流入元、UTM、セッション、イベント、ASN・組織アクセスを確認し、自分用のラベルや保存ビューで整理したい人は、ぜひGitHubをのぞいてみてな^^

コメント

タイトルとURLをコピーしました
~