このプロジェクトについて

## 概要 Lyticsはユーザープライバシーに焦点を当てたセルフホスト型ウェブ解析スイートだ。標準的なトラフィック指標、カスタムSQLベースのクエリ、ページ上のユーザー操作を可視化するヒートマップを提供する。本プロジェクトは複数のモジュールに分かれている: - **lytics-ping**:JavaScriptタグから追跡データを受信する軽量なHTTPエンドポイント - **lytics-app**:データを保存し、レポートを生成してUIを配信するメインのQuarkusサービス - **lytics-query**:レポートとヒートマップで使用されるSQLクエリを検証・トランスパイルする - **tag**:ウェブサイト運営者がイベントをpingサービスに送信するために埋め込む小型のJavaScriptスニペット - **offsite**:別ドメインから読み込まれるヒートマップ用のJavaScriptとレンダリングロジック - **schemas**:MariaDB/MySQLとClickHouse用のデータベーススキーマ定義 ## アーキテクチャ 本プラットフォームは高性能な解析のために生のイベントをClickHouseに保存し、リレーショナルメタデータはMariaDB/MySQLに格納する。QuarkusベースのサービスはHTTPで通信し、`application.properties`を通じて設定を共有する。ヒートマップのレンダリングはnpmでビルドされた外部サイト向けスクリプトを使用してクライアントサイドで実行され、静的アセットとしてQuarkusサーバーから配信される。 ## 導入方法 1. **データベースのセットアップ**:MariaDB/MySQLのインスタンスとClickHouseクラスタを用意する。`schemas`ディレクトリのスキーマを適用する。 2. **設定**:`lytics-app/src/main/resources/application.properties`を接続文字列と必要なオプションで編集する。 3. **ビルド**:`mvn package`を実行して全モジュールをコンパイルする。 4. **サービスの実行**: ```bash java -Dquarkus.config.locations=application.properties -jar lytics-ping/target/lytics-ping-1.0.0-SNAPSHOT-runner.jar java -Dquarkus.config.locations=application.properties -jar lytics-app/target/lytics-app-1.0.0-SNAPSHOT-runner.jar ``` 5. **開発**:IntelliJのQuarkusプラグインを使用するか、コマンドラインから`quarkus dev`を実行する。ヒートマップスクリプトを変更する場合は、`offsite`ディレクトリ内で`npm run watch`を実行する。出力は`lytics-app/src/main/resources/web/static/offsite/offsite.min.js`に配置される。 ## トラブルシューティング 依存関係の解決の問題やIDEの問題が発生した場合は、クリーンな再インストールが役立つ: ```bash mvn clean install -U ``` ## 利用事例 - サードパーティの解析ツールを使用できないウェブサイト向けの、プライバシー準拠の訪問者追跡 - ユーザーデータを漏洩することなく、クリックやスクロールの挙動を把握するための視覚的ヒートマップ - 高度なレポート作成とデータエクスポートのためのカスタマイズ可能なSQLクエリ Lyticsは、データの保存と処理をきめ細かく制御するオンプレミス型の解析を必要とする組織向けに、フルスタックのソリューションを提供する。