About ページ サイト統計リファレンスガイド

:bookmark: これは /about ページの統計がどのように計算され、各統計の Ruby コードをどこで見つけることができるかについての参照ガイドです。

:person_raising_hand: 必要なユーザーレベル:すべてのユーザー

About ページの統計

すべての Discourse サイトには、サイトの管理者とモデレーターの一覧と、サイト自体に関するいくつかの統計を含む、組み込みの /about ページがあります(例:Meta の About ページはこちら)。

これらの統計には、管理者アカウントやモデレーターアカウントを含むすべてのユーザーが含まれます。一部の統計には、サイトが有効化している場合、匿名アカウント も含まれます。

share anonymized statistics サイト設定が有効になっている場合(デフォルトでは有効です)、/about ページの「サイト統計」は、/about.json で取得できる JSON ファイルとして公開されます。

サイトが公開されている場合、/about ページとこれらの統計も一般に公開されます。

:gem: コア統計の Ruby コードは discourse/lib/statistics.rb にあります。コア統計とプラグイン統計を調整する Stat モデルは discourse/app/models/stat.rb にあります。

以下に、各統計の計算方法について説明します。

トピック

指定された期間内に作成されたトピックの数です。この統計には、非公開トピックや個人メッセージは含まれません。

topics = Topic.listable_topics

{
  last_day: topics.where("created_at > ?", 1.day.ago).count,
  "7_days": topics.where("created_at > ?", 7.days.ago).count,
  "30_days": topics.where("created_at > ?", 30.days.ago).count,
  count: topics.count,
}

投稿

指定された期間内に作成された投稿の数です。個人メッセージもここに含まれ、通常の投稿としてカウントされます。

{
  last_day: Post.where("created_at > ?", 1.day.ago).count,
  "7_days": Post.where("created_at > ?", 7.days.ago).count,
  "30_days": Post.where("created_at > ?", 30.days.ago).count,
  count: Post.count,
}

新規登録

指定された期間内に新規アカウントに登録した有効なユーザーの数です。「有効なユーザー」とは、アクティブ化され、停止または沈黙されていない real ユーザーを指します。must approve users が有効な場合、承認されたユーザーのみがカウントされます。

def self.valid_users
  users = User.real.activated.not_suspended.not_silenced
  users = users.approved if SiteSetting.must_approve_users
  users
end

{
  last_day: valid_users.where("created_at > ?", 1.day.ago).count,
  "7_days": valid_users.where("created_at > ?", 7.days.ago).count,
  "30_days": valid_users.where("created_at > ?", 30.days.ago).count,
  count: valid_users.count,
}

:gem: real ユーザーの定義は discourse/app/models/user.rb にあります。システム/ボットユーザーや匿名ユーザーのシャドウアカウントは除外されます。

アクティブユーザー

指定された期間内にサイトを訪問した有効なユーザーの数です。新規登録と同じ valid_users フィルターを使用します(非アクティブ、停止、沈黙されたユーザーは除外)。匿名モードのユーザーは含まれますが、アカウントを持たないユーザーは含まれません。

{
  last_day: valid_users.where("last_seen_at > ?", 1.day.ago).count,
  "7_days": valid_users.where("last_seen_at > ?", 7.days.ago).count,
  "30_days": valid_users.where("last_seen_at > ?", 30.days.ago).count,
}

参加ユーザー

指定された期間内にアクション(トピック作成、投稿、いいねなど)を実行した有効なユーザーの数です。チャットが有効な場合、チャットメッセージを送信したユーザーやチャットリアクションを追加したユーザーもカウントされます。

{
  last_day: participating_users_count(1.day.ago),
  "7_days": participating_users_count(7.days.ago),
  "30_days": participating_users_count(30.days.ago),
}

:gem: 完全な実装は discourse/lib/statistics.rb にあります。

いいね

指定された期間内にすべてのトピックと投稿が受け取ったいいねの総数です。

likes = UserAction.where(action_type: UserAction::LIKE)

{
  last_day: likes.where("created_at > ?", 1.day.ago).count,
  "7_days": likes.where("created_at > ?", 7.days.ago).count,
  "30_days": likes.where("created_at > ?", 30.days.ago).count,
  count: likes.count,
}

訪問者と EU 訪問者

display eu visitor stats サイト設定が有効な場合、About ページには推定訪問者数(合計と EU ベース)も表示されます。これらは、ログインユーザーの訪問データとページビュー比率に基づく推定匿名訪問者を組み合わせて計算されます。

:gem: 完全な計算については、discourse/lib/statistics.rbvisitors および eu_visitors メソッドを参照してください。

チャットメッセージ

すべてのチャットチャンネルで送信されたチャットメッセージの数です。チャットが有効な場合、以下の統計も登録されます:チャットユーザー(メッセージを送信した一意のユーザー)とチャットチャンネル(オープンチャンネル)。

これらの統計は、チャットプラグインによって plugins/chat/plugin.rbregister_stat を介してプラグイン統計として登録されます。基盤となるクエリは plugins/chat/lib/chat/statistics.rb にあります。

「いいね!」 6