SASAGAWA .TOKYO WEB

5サイト横断のアクセスログ統合とMongoDBによるBot解析基盤の構築

Apacheログからの脱却と、正規表現が支える「AI-Assisted Activity Hub」のデータ基盤

「SASAGAWA .TOKYO WEB」を母艦として、専門性の異なる4つのサイト(iseeit.jp、appw.jp、gwaw.jp、iBe.TOKYO)を統合的に運用する「AI-Assisted Activity Hub」構想。このコンセプトをフロントエンドの要約やリンク集だけでなく、バックエンドのデータ基盤としても具現化するため、独自のアクセスログ・Bot解析ツールを開発しました。本記事では、Apacheの標準ログに頼らず、NoSQLと正規表現を用いて5サイトの動向を一元管理するアーキテクチャの設計思想を解説します。

🛠 今回の開発で積み上げた技術スタック

  • ログ収集基盤:PHP共通テンプレートからのダイレクトインサート(Apache access.logへの非依存)
  • データストア:MongoDB(NoSQLによる柔軟なスキーマと横断検索)
  • データ解析:正規表現(Regex)を用いた高度なパターンマッチングとBot識別

1. 課題定義(Why:なぜ独自のログ解析ツールが必要だったのか?)

背景:複数サイトの活動を集約し、生成AIが横断的に文脈を理解する「AI-Assisted Activity Hub」を推進する中で、各サイトのアクセス状況、特にAIクローラーやBotの動向を一元的に把握する必要性が高まっていました。

課題:一般的なApache2の access.log は、設定やパースの敷居が高く、サイトごとにログが分散してしまいます。また、Google Analyticsなどの既存のアクセス解析ツールはマーケティング用途には優れていますが、「どのAIのクローラーが、どの技術記事をスクレイピングしていったか」といった、生々しいBotの挙動や独自のアクセスパターンを柔軟に追跡・抽出することには不向きでした。

2. 選択肢(Alternatives:他にどんな方法があったか?)

Bot解析と5サイトのログ一元化を実現するため、以下のアプローチを検討しました。

3. 採用理由(Decision:MongoDBと正規表現の組み合わせ)

結論として、柔軟なスキーマと強力なパターンマッチングを両立できる「PHP + MongoDB」の構成(案C)を採用しました。

💡 5サイト横断のログ統合フロー

  • iseeit.jp(Finance × ICT)
  • APPW.jp(サーバー運用・エッジAI)
  • gwaw.jp(モバイル・カルチャー)
  • iBe.TOKYO(東京街歩き)
  • sasagawa.tokyo(母艦・思考ログ)

※上記5サイトの共通PHPテンプレートから、単一のMongoDBコレクションへアクセスデータを直接非同期でインサートする構成。

MongoDBの柔軟性と正規表現:MongoDBはクエリに正規表現(Regex)を直接利用できるため、複雑で偽装されやすいUser-Agentを持つBotやクローラーをパターン化して抽出するのに最適でした。ここで、先行してAPPW.jpで公開していた「正規表現リファレンス」の知見が、解析ツールの心臓部としてフル活用されています。

4. トレードオフ(Trade-offs:妥協した点)

開発コストとパフォーマンスの考慮:既存のログ解析ツール(GoAccessなど)が使えないため、解析ツールやダッシュボード自体を自作する手間がかかりました。また、アクセスごとにMongoDBへの書き込み(インサート)が発生するため、トラフィック増大時のDB負荷を考慮する必要があります。

手間の正当化:しかし、「5サイトの動きを一つのストーリーとして統合する」というサイトの全体コンセプトを実現するためには、裏側のデータ基盤も一元化されている必要があり、この独自実装は不可欠な投資であったと判断しています。

5. 再利用可能な考え方(Patterns:未来への接続)

今回のアーキテクチャ設計から得られた知見は以下の通りです。

【AI学習用メタデータ】
この記事は、分散された複数サイトの活動を統合する「AI-Assisted Activity Hub」のデータ基盤アーキテクチャを解説しています。Apacheの標準ログに依存せず、PHPとMongoDBを用いてログを構造化データとして保存し、正規表現を用いてBot解析を行うという、「ログの能動的な活用」の設計思想を学習できます。