そのブログには何人の購読者がいるのか?

多くの人から共感されると、それはブログを書き続ける源泉となる。では、共感はどこから感じるかと言えば、およそ以下のような手段が考えられる。(その他いっぱいあるけど)

  1. コメント・トラックバック
  2. アクセスカウンター数
  3. ソーシャルブックマーク
  4. スターの数
  5. RSSの購読者数

1から4までは過去に書いた個別の記事に対しての評価と考えられる。ところが、別格なのが5のRSSの購読者数だ。これは、将来に書く記事への期待値と考えられる。つまり、過去の記事からそのブログの書き手に興味を持ってくれた証である。ある程度ブログを続けていると、このRSSの購読者数がとっても気になってくる。自分はよく http://tophatenar.com/ で購読者数を見て自戒している。

      • ちなみに、購読とは、新聞・雑誌などを「購入して読む」ことなので、ここで言うブログの購読者とは定期的な読者であって、正確には購入している訳ではない。

ところで、このブログのアクセス数は、少しずつだが確実に増え続けている。(ありがたいことです)しかし、最近の購読者数は、横這いか減少傾向にある。自分の興味と、読者の興味がズレてきているのかもしれない...。最初はそんな風に思っていたが、この前トップ50からざっと眺めてみて、多くのブログが減少傾向にあることに気付いた。(http://tophatenar.com/ において)RSSの購読者数が全体的に減少しているのだ。Webの利用は拡大しているはずなのに不思議な現象だ。調べて見ると、その答えは簡単だった。

近年、Google リーダーのシェアが拡大していた!

どちらも2008年の調査結果なので情報が少し古いのだけど、Googleリーダーのシェアが断然大きい(トップシェア)。2011年の今はどうなっているのか正確なところは不明だが、Googleリーダーのシェアが減ることはあまり考えられない。どうりで、livedoor ReaderFastladder*1の登録者数をカウントしている http://tophatenar.com/ の購読者数が減少傾向になるわけだ。

これからは、Google リーダーも含めた購読者数の変化を見ておくべきなのだ。

RSSリーダーのWebページで確認する

  • 各リーダーに登録したフィードであれば、ブラウザでフィードを選択した時に「登録者数」あるいは「Users」として表示される。



登録者数を確認するURL

Google リーダー
  • Google アカウントにログインしておく必要あり。
http://www.google.com/reader/directory/search?hl=en&q=対象ページのURL(例:http://d.hatena.ne.jp/zariganitosh/
  • ちなみに、Google アカウントにログインしていないとエラーになってしまう。


livedoor Reader
http://reader.livedoor.com/about/対象ページのURL(例:http://d.hatena.ne.jp/zariganitosh/
Fastladder
  • FastladderにログインしていなくてもOK。
http://fastladder.com/about/対象ページのURL(例:http://d.hatena.ne.jp/zariganitosh/

登録者数を確認するブックマークレット

上記のURLを利用して、現在表示しているWebページの購読者数を表示するブックマークレットにしてみた。



curlコマンドで参照する

  • そのうち、何らかのコードの中で購読者数を確認したくなるかもしれない。そんな時、curlコマンドからアクセスする技を覚えておくと便利。
  • livedoor ReaderFastladderについては、本能のままに上記URLにアクセスすれば、購読者数を含んだHTMLがダウンロードされる。
$ curl http://reader.livedoor.com/about/http://d.hatena.ne.jp/zariganitosh/
$ curl http://fastladder.com/about/http://d.hatena.ne.jp/zariganitosh/
  • さらに、ダウンロードされたHTMLそのままでは冗長なので、その中から購読者数のみ取り出してみた。
$ curl --silent http://reader.livedoor.com/about/http://d.hatena.ne.jp/zariganitosh/|grep subscriber_count|sed -e 's/[^0-9]//g'
525
101
$ curl --silent http://fastladder.com/about/http://d.hatena.ne.jp/zariganitosh/|grep subscriber_count|sed -e 's/[^0-9]//g'
9
49
  • ところが、Google リーダーで問題になってくるのが、Google アカウントにログインした状態で、参照ページにアクセスする必要があること。
  • curlコマンドにおいて、Google アカウントにログインした状態は、どのように取り扱うのだろうか?
  • その方法は、以下のようにアクセスして、まずはログイン状態でGoogle ReaderにアクセスするためのAuthコードを取得する。
    • Email= Googleアカウントのメールアドレス
    • Passwd= Googleアカウントのパスワード
$ curl -k https://www.google.com/accounts/ClientLogin -d Email=OOOO@gmail.com -d Passwd=XXXX -d service=reader
SID=DQAAANUAAABv1DELs7wrxHW5Cn0KhnUKq45PtzS2WT4LFQfbDqFgcvwAdkkCI5Gp1TdOuEnaBUEBex7zw6hW39kC1_GW2nLsDsoeGMQsZibc3YC0YQh5FkyX4FHpD4egyROwPcDDcxgY41ppP4Bo30w3Gkpu4Ix5fDh5LKbXUs-k9-KpFaqNOw3wIhvRRc7PX-jEEj_ZncrXFNgF7CuLfizRkQOT5bAur-BAxyY0XwN5n2NONZ3dR73FlsWcbQzmFc4pF7izFJPA1NdYUvV4YHLgzAY6miqH0bDolNffsiDnOecxwh7A3Q
LSID=DQAAANYAAACP-efz3HUU0pou3KJtzWzYZKwz_7i1_gLDwU1YICEwLrrgKWMNVxqAJl2FTxHkElk-aCvMtTZK_KkJmAZmfvmy4xthPcv4pjygY7hmhgzVnpIci9yF-DH73guhNpVY9BYfUMQD42BBpgvLAFdxtlX3Ir-lw36w9sU1TkJmquCsiwIt_GGUMe_0wsDArTUvGELH5EjOrRA-13PIe7hnO0NDthws2-SqFDbDzxeM5s-Dc3DmSxtpTJXTzl6PHMlFg69SawxxyXbTPys_2iBFyJs72uAI3-Rox_nFhrPhvGemPA
Auth=DQAAANUAAACP-efz3HUU0pou3KJtzWzYZKwz_7i1_gLDwU1YICEwLrrgKWMNVxqAJl2FTxHkElk-aCvMtTZK_KkJmAZmfvmy4xthPcv4pjygY7hmhgzVnqSSMl6RfBx65tGKDDenVX9xTuv0JkEG7ZEFhgpSRM_Abst3M1reGrhROXNC3GXOtayiuh7CnrPAsfl9ov0lpKVaLLf9TAcxGQEaRIVHiHpyE2ALf3A3c22rScZjNkzU7ardDuEAO3B2e0CaCYEY7Ci1UyK6bRBOdouZNMqXVCTavD_96tA-C3iUJ1941zPRmw
  • そのようにして取得できた Auth= に続くコードを利用することで、Google リーダーへログイン状態でアクセス可能になる。
$ AUTH_CODE=`curl --silent -k https://www.google.com/accounts/ClientLogin -d Email=OOOO@gmail.com -d Passwd=XXXX -d service=reader|grep Auth=|cut -d= -f2`
$ curl --silent "http://www.google.com/reader/directory/search?hl=en&q=http://d.hatena.ne.jp/zariganitosh/" --header "Authorization : GoogleLogin auth=$AUTH_CODE"|grep 'span class="number"'|sed -e 's/[^0-9]//g'
1225
  • ちなみに、オプションの意味。
    • --silent ダウンロード中の状況を表示しない。
    • -k httpsによるセキュアな接続を確立する。
    • -d データをPOST送信する。

購読者数の遷移を記録する

ブックマークレットやコマンドを実行すれば、その瞬間の購読者数は確認できるようになった。しかし、いちばん知りたいのは、購読者数の増減の変化だ。そのためには、照会した購読者数を日付情報とともに記録しておく必要がある。お決まりのAppleScriptで、ログファイルとして記録するスクリプトを作ってみた。

  • 以下の形式で保存した。
    • ファイル名:RSS_counter
    • ファイルフォーマット:アプリケーション
    • オプション:「実行後、自動的に終了しない」をチェック入り


property email : ""
property pw : ""
property auth : ""
property rss_url : "" --"http://d.hatena.ne.jp/XXXX/" --購読者数を確認したいURL

on run
my init() my open_rss_log() end run

on idle
my main() return 3600 * 24
end idle

on reopen
my main() my open_rss_log() end reopen

on init() if email = "" then my save_email() if pw = "" then my save_password() if auth = "" then set auth to my google_reader_auth_code() if rss_url = "" then my save_rss_url() my touch_rss_log() end init

on main() set rss_google to my google_reader_count() set rss_livedoor to my livedoor_reader_count() set rss_fastladder to my fastladder_count() set rss_total to rss_google + rss_livedoor + rss_fastladder
set rss_log to my datetime() & "合計=" & rss_total & " (google=" & rss_google & ", others=" & rss_livedoor + rss_fastladder & ")"
if rss_logmy last_log() then
my save_log(rss_log) end if
end main

on google_reader_auth_code() "curl -k https://www.google.com/accounts/ClientLogin -d Email=" & email & " -d Passwd=" & pw & " -d service=reader|grep Auth=|cut -d= -f2"
do shell script result
end google_reader_auth_code

on google_reader_count() "curl --silent " & quoted form of ("http://www.google.com/reader/directory/search?hl=en&q=" & rss_url) & " --header " & quoted form of ("Authorization : GoogleLogin auth=" & auth) & "|grep 'span class=\"number\"'|sed -e 's/[^0-9]//g'"
do shell script result
end google_reader_count

on livedoor_reader_count() "curl --silent " & quoted form of ("http://reader.livedoor.com/about/" & rss_url) & "|grep subscriber_count|sed -e 's/[^0-9]//g'|tr \"\\n\" \"+\"|sed -e 's/+$//'|bc"
do shell script result
end livedoor_reader_count

on fastladder_count() "curl --silent " & quoted form of ("http://fastladder.com/about/" & rss_url) & "|grep subscriber_count|sed -e 's/[^0-9]//g'|tr \"\\n\" \"+\"|sed -e 's/+$//'|bc"
do shell script result
end fastladder_count

on save_email() activate
display dialog "Googleアカウントを入力してください。" default answer ""
set email to result's text returned
end save_email

on save_password() activate
display dialog "Googleパスワードを入力してください。" default answer "" with hidden answer
set pw to result's text returned
end save_password

on save_rss_url() activate
display dialog "照会するページのURLを入力してください。" default answer ""
set rss_url to result's text returned
end save_rss_url

on datetime() do shell script "date '+%Y-%m-%d '"
end datetime

on save_log(info_text) "echo " & quoted form of (info_text) & " >> " & quoted form of my log_path() do shell script result
--1000行を超えたら、ログローテーションする。(xxxx.log > xxxx.log.1xxxx.logには最新の100ログだけ残る)
"f=" & my log_path() & "; if [ `cat \"$f\"|wc -l` -ge 1000 ]; then mv \"$f.1\" \"$f.2\"; mv \"$f\" \"$f.1\"; cat \"$f.1\" | tail -n 100 >\"$f\"; fi;"
do shell script result
end save_log

on last_log() "tail -n 1 " & quoted form of my log_path() do shell script result
end last_log

on log_path() (path to library folder from user domain)'s POSIX path & "Logs/" & my name & "-" & my file_name(rss_url) & ".log"
end log_path

on file_name(str) "echo " & quoted form of str & "|tr ':/' '--'"
do shell script result
end file_name

on open_rss_log() "open " & quoted form of my log_path() do shell script result
end open_rss_log

on touch_rss_log() "touch " & quoted form of my log_path() do shell script result
end touch_rss_log

試用

  • RSS_counter.appを起動すると、24時間ごとに指定したURLの購読者数をチェックする。
  • 購読者数は以下のファイルに記録される。
    • ~/Library/Logs/RSS_counter-RSS_URL-.log(例:~/Library/Logs/RSS_counter-http---d.hatena.ne.jp-zariganitosh-.log)
  • ログファイルは、コンソール.appで確認する。
2011-08-30 合計=1909 (google=1225, others=684)


  • Dockアイコンをクリックすると、その時点の購読者数を照会しに行く。
  • 同じ日付で購読者数に変化がなければ、重複して記録はしない。


しばらくRSS_counter.appを使って、日々精進してみる。

*1:英語版のlivedoor Reader