はてぶのプライベート率を調べてみた

ちょっと気になることがあったので、はてなブックマーク人気エントリーになったエントリーのブックマーク数の、公開/非公開の割合を調べてみた。

スクリプトはこのエントリーの末尾に添付するけど、まずは実行結果。

表示項目は

  • URL(6/1から6/3の人気エントリー)
  • そのページに含まれるエントリー全体の公開/非公開のブックマーク計
  • 全体での非公開の割合(private ratio)
  • 非公開率の上位5つと下位5つのエントリー
http://b.hatena.ne.jp/hotentry?mode=daily&date=20070601
public total = 8912
private total = 2123
private ratio = 19.24
34.69 disneycom.jp(ディズニー混む.jp) (64/34)
32.94 データグリッド実現用JavaScriptライブラリ各種:phpspot開発日誌 (57/28)
29.97 Full Auto | 電子レンジだけで作るおいしい食べ物 (201/86)
27.91 ITmedia Biz.ID:GTD黒帯へのチェックリスト【あなたは何級?】 (124/48)
26.90  窓の杜 - 【特集】「Thunderbird」v2.0対応拡張機能特集 第1回  (125/46)
......
9.09 たまごまごごはん - マンガやゲーム作品の題名に4文字が多いワケ (60/6)
8.96 NC-15 - 似非メンヘラの戯言 (61/6)
7.69 PC相手に独り言、4割の女性が経験 (60/5)
6.85 私的録音録画小委員会、CD売上減と私的複製の関係めぐり議論は平行線 (68/5)
3.90 ニコニコ動画 開発者ブログ(新着情報)ニコニコ宣言とは。 (ようするに版) (74/3)

http://b.hatena.ne.jp/hotentry?mode=daily&date=20070602
public total = 7323
private total = 1681
private ratio = 18.67
29.55 TechCrunch Japanese アーカイブParallels 3.0〜Macを買う理由がまた一つ (31/13)
27.91 ITmedia Biz.ID:GTD黒帯へのチェックリスト【あなたは何級?】 (124/48)
27.88 萌え理論Blog - ショートカットキーまとめ (269/104)
26.98 Photoshopチュートリアル ミニチュア模型を撮影したような写真に加工する - DesignWalker (249/92)
26.90  窓の杜 - 【特集】「Thunderbird」v2.0対応拡張機能特集 第1回  (125/46)
......
8.93 痛いニュース(ノ∀`):人に近い、しなやかな動きの「子供型ロボット」開発 (51/5)
8.14 機動戦士ガンダム00 [ダブルオー] (79/7)
7.95 Google Gearsがすごいと思うなら、いい加減RSSを全文配信にしてくれ(管理人日記) - むぅもぉ.jp (81/7)
6.15 IT戦記 - そろそろサイボウズ・ラボについて一言いっとくか (61/4)
5.06 人に近いしなやかな動き 子ども型ロボット開発 (75/4)

http://b.hatena.ne.jp/hotentry?mode=daily&date=20070603
public total = 6743
private total = 1629
private ratio = 19.46
29.38 日刊スレッドガイド : お奨めの掃除道具 (226/94)
27.88 萌え理論Blog - ショートカットキーまとめ (269/104)
26.98 Photoshopチュートリアル ミニチュア模型を撮影したような写真に加工する - DesignWalker (249/92)
25.57 NC-15 - 頭のおかしい人事に対抗する方法 (326/112)
25.16 一流の研究者の集中力(2)超シングルタスクのすすめ | Lifehacking.jp (238/80)
......
7.14 はろはて。 - 垢BANされた人専用一括addスクリプト (26/2)
6.67 dankogaiを生理的に受け付けない理由 (42/3)
6.38 livedoor ニュース - 声優志望少女ワイセツ事件、声優ファンが事務所前で抗議 (44/3)
5.13 レジデント初期研修用資料: 「人類は衰退しました」感想 (37/2)
3.03 考えるための書評集 ZARD 坂井泉水の栄光と凋落。 (32/1)

だいたい、平均で20%くらいが非公開で、割合が高いエントリーは30%くらいが非公開になるようだ。

明確な傾向は見えないけど、しいて言えば、非公開率が高いエントリーではLifehack系のネタが目立ち、低い方では、2ちゃんねる系というか個人ニュース系というか、そちらのエントリーが多いような気がする。

実行したスクリプトはこれ。

#!/usr/bin/env ruby -Ku

require 'open-uri'
require 'rubygems'
require 'hpricot'

class PrivateBMChecker
  attr_reader :bmcounts, :pub_total, :priv_total

  def initialize
    @urls = []
  end

  def process(f)
    process_file(f)

    @bmcounts = @urls.collect do |url|
      doc = Hpricot(open("http://b.hatena.ne.jp/#{url}").read)
      {
        :url => url,
        :title => (doc/'span.title').text,
        :public_cnt => (doc/'span.public-count').text.to_i,
        :private_cnt => (doc/'span.private-count').text[1..-1].to_i
      }
    end

    @bmcounts.each do |b|
      b[:priv_ratio] = b[:private_cnt] * 100.0 / (b[:public_cnt] + b[:private_cnt])
    end    
    
    @pub_total = @priv_total = 0
    @bmcounts.each do |b|
      @pub_total += b[:public_cnt]
      @priv_total += b[:private_cnt]
    end
  end

  def process_file(f)
    doc = Hpricot(f.read)
    entries = doc/'div.entry-footer'
    entries.each do |e|
      process_entry(e)
    end
  end

  def process_entry(e)
    (e/'strong a').each do |a|
      @urls << a[:href]
    end
  end
end

class TextReporter
  def report(c)
    header(c)
    detail(c)
  end

  def header(c)
    puts "public total = %d" % c.pub_total
    puts "private total = %d" % c.priv_total
    puts "private ratio = %4.2f" % (c.priv_total*100.0/(c.pub_total + c.priv_total))
  end

  def detail(c)
    c.bmcounts.sort_by { |b| b[:priv_ratio] }.reverse.each do |b|
      puts "%4.2f %s (%d/%d)" % [b[:priv_ratio], b[:title], b[:public_cnt], b[:private_cnt]]
    end
  end
end

ARGV.each do |a|
  checker = PrivateBMChecker.new
  puts a
  checker.process(open(a))
  TextReporter.new.report(checker)
end

実行コマンド

ruby -Ku hatebu.rb 'http://b.hatena.ne.jp/hotentry?mode=daily&date=20070601' 'http://b.hatena.ne.jp/hotentry?mode=daily&date=20070602' 'http://b.hatena.ne.jp/hotentry?mode=daily&date=20070603' | tee log

日別の人気エントリー以外でも、はてなブックマークのURLを与えればだいたい動くと思う。