今日も窓辺でプログラム

外資系企業勤めのエンジニアが勉強した内容をまとめておくブログ

初めてはてなブックマークのホットエントリーに掲載されたので、アクセスログを解析してみた

ホットエントリーに掲載されました

先日、当ブログのこの記事がはてなブックマークのホットエントリーに掲載されました。
www.madopro.net

この記事を書いている時点で500個以上のブックマークをいただいています。私が観測していた限り、このブログの記事がはてなブックマークのホットエントリや、新着エントリに掲載されたことはなので、おそらくこれが初めての掲載になるのではないでしょうか。

また、翌日にもう1記事ホットエントリー入りしました。ただし、こちらの記事は先ほどのものほどは伸びなかったですし、掲載された順位も低いものでした。。
www.madopro.net

ホットエントリーがもたらすアクセス数はすごい、というような話は噂に聞いていたのですが、実際はどうだったのか、実際に私が何を経験したのかを紹介したいと思います。
せっかくPythonでデータを扱う系の記事が掲載されたので、後半はPythonを使ってアクセスログの解析・可視化もしてみています。

具体的な数字などを早く知りたい方は、後半までスクロールしてグラフを眺めていただくか、最後の「まとめ」を見てください。

ホットエントリーって何?

はてなブックマークとは

まずは、はてなブックマークのWebページはへのリンクを貼っておきます。
はてなブックマーク

はてなブックマーク(略称:はてブ)とは、ソーシャルブックマークサービスと呼ばれるもので、気になったサイトを自分のはてなアカウントに紐づけてブックマークできる機能を提供しています。
先ほどのはてなブックマークのページに行ってもらうとわかると思いますが、多くのユーザがブックマークを付けた記事は、はてなブックマークの公式ページで紹介されます。
ここに掲載されるとドバっとアクセスが流れ込んでくるので、アクセスアップのテクニックとして紹介している記事もよく見かけます。

ホットエントリーへの道のり

はてなブックマークの人気エントリー(ホットエントリーともよく呼ばれる)に掲載される道のりは、公式ヘルプにある程度解説されています。
人気・注目エントリーで見る - はてなブックマークヘルプ

ステップ1: 新着エントリー

公式ヘルプによると、

最近ブックマークされたエントリーの中から、一定数以上ブックマークされたものを表示しています。

http://b.hatena.ne.jp/help/entry/hotentry

とのことです。いろいろ検索していると、経験的に3つ程度のはてブを獲得すると新着エントリーに掲載されることが知られているようです。

ステップ2: 人気エントリー

再度公式ヘルプを参照すると、

一定期間の間に特にブックマークを多く集めたエントリーです。

http://b.hatena.ne.jp/help/entry/hotentry

と書いてあります。「ホットエントリー 条件」などのワードでググっていただけると皆さんいろいろ考察されてますが、大体はてブ10個でカテゴリ別の人気エントリー(このブログだと、テクノロジーカテゴリ)に、数十個で総合ページの人気エントリーに掲載されるようです。

ステップ3: 公式Twitterによるツイート

はてブが50個を超えると、公式Twitter @hatebu によってさらにエントリーが拡散されます。
2017年2月時点でフォロワー数は10万を超えており、拡散力が期待できる、と書かれている記事をたくさん見かけます。

このブログに起きたこと(当時の私視点)

ホットエントリー入り前夜

2月19日の夕方ごろでしょうか、はてなブログのアプリかいたことはなかったら、「金融データのPythonでの扱い方 - 今日も窓辺でプログラム」にはてブが3件ついたよ、という通知が来ていました。はてブ3件で新着エントリーに掲載、というのは今までなんとなく聞いていたので、はてなブログのトップページを確認してみたら、こんな感じに先ほどの記事が掲載されていました。

おおー、これはアクセスドカンとくるかもなー、と思いアクセス解析を確認してみると、この時点で普段より多いアクセスがありました。
このブログ最近だと1日当たり大体200~300PV程度のアクセス数なのですが、この日は400を超えていました。このブログはほとんどが検索流入なのでアクセス数は比較的安定しており、急に400を超えるなんてことは今まで経験したことはありません。

ホットエントリー掲載日の午前中

2月20日、朝起きてみると、何やら通知がたくさん来ているではありませんか。19日の夕方から夜にかけていつもより多めのアクセスがあり、一晩開けてその勢いは加速しているようでした。
Google Analyticsのリアルタイムユーザー数でも10人前後と、今まで見たことのない数字が表示されています。
残っているスクショによると、朝10時過ぎの時点ではてブ数が31でテクノロジーカテゴリの人気エントリーに表示されているようでした。

f:id:kanohk:20170221121353p:plain

まさか自分の記事がここに乗るなんて思って書いてないので、すごくうれしかったですね。

当日のお昼休み

そしてお昼休みの時間帯に入り、アクセス数・はてブ数はさらに加速していきます。リアルタイムユーザー数も20人、30人と徐々に増え、私が見ていた限りだとピーク時には70人を超える方が同日サイトに来てくださってる状況でした。その結果、12時~13時の1時間で400PVを超えるアクセスがありました。

昼休みが終わることの時間帯にとったスクショがこちら。テクノロジーカテゴリの人気エントリの上部に顔を出しているような状況で、はてブ数も100まで伸びていました。

f:id:kanohk:20170221122004p:plain

さらに、はてブがここまで伸びたことで、はてなブックマークのTwitterに私の記事を紹介してもらうことができました。

ある程度リツイートはされたようですが、実際にどの程度のアクセスがあったかは、後程ログの分析の部分で詳しく追いたいと思います。

昼過ぎ~夕方

昼休みが終わるとアクセスは少し減ったのですが、人気エントリーに掲載されたことで人が来て、その人たちがまたはてブをしていき、さらに掲載順位が上がる…。この流れがしばらく続き、3時ごろ仕事の合間にチラ見した時には総合ページの人気エントリーの仲間入りを果たしていました。

f:id:kanohk:20170221122357p:plain

こうなると、はてなのサイト(http://www.hatena.ne.jp/)にもリンクが貼られるようになったり、SNSやニュース系サイトで拡散されたりして、また徐々にアクセス数は上昇し、最終的に昼休みと同レベルのアクセス数が押し寄せてくる状況になりました。

夕方以降

夕方以降は、昼休みレベルの波はなかったのですが、1時間当たり200PV前後のアクセスが続き、はてブ数もじわじわと増えていきました。
正確な数字はわからないのですが、2月20日中に400は超えていた気がします。

また、ホットエントリに入った記事から参照されていた記事(PythonとJupyter Notebookを使ってデータと遊ぶ方法 - 今日も窓辺でプログラム)に関しても、少しはてブをつけていただき、新着エントリーに掲載されたのがこのころだったかと思います。

翌日

前日に結構な数のはてブをいただけたこともあり、翌日も引き続きホットエントリーに掲載されている状態が続いていました。
ただし、掲載順位はどんどん落ちていき、アクセス数も1時間当たり100PV前後、はてブ数の伸びもかなり鈍ってきました。

しかし一応掲載はされ続けており、また2つ目の記事のはてブもわずかながら伸び、という状況で、一時的にこんな感じで2つの記事が並んで掲載されているときもありました。
f:id:kanohk:20170223233925p:plain

その後昼過ぎごろに「金融データのPythonでの扱い方 - 今日も窓辺でプログラム」が500、「PythonとJupyter Notebookを使ってデータと遊ぶ方法 - 今日も窓辺でプログラム」が40程度のに到達するなど、じわじわとはてブをいただけている状況でした。

また、はてなブックマークのランキングのページにも掲載されたことを確認しました。
こんな感じで、総合ランキングの3位の箇所に私の記事が居座っています。
f:id:kanohk:20170222154825p:plain

アクセスログを解析してみよう

解析に使ったJupyter Notebook

さて、以上が実際に私が経験・観測したことなのですが、実際にどの程度ユーザーが流れてきたいたのかをはてなカウンターのログを解析しながら追ってみたいと思います。
技術ブログですしPythonネタでホットエントリーに入ったので、Python + Jupyter Notebookでグラフとかを描きながら解析していきます。

ログははてなカウンターからダウンロードできるCSVを使用します。また、使用したJupyter Notebookはこちらにあげておきます。
notebooks/hotentry.ipynb at master · kanoh-k/notebooks · GitHub

アクセス数の推移

日ごと

まずは、ざっくりと日ごとのアクセス数の推移を見てみましょう。せっかくなので2月分のアクセス数を紹介します。

とりあえずログのCSVファイルを読み込んで、

logfile = "./blog/101-2017-02.csv"
df = pd.read_csv(
    logfile,
    header=None,
    usecols=[0, 2, 3, 7],
    names=["timestamp", "from", "browser", "to"],
    parse_dates=["timestamp"])

df["browser"] = df["browser"].fillna(value="Unknown")

読み込んだデータをそのまま日ごとの棒グラフにします。

df.set_index("timestamp").groupby(pd.TimeGrouper(freq="D"))["browser"].count().plot.bar(figsize=(18, 10))
plt.show()

f:id:kanohk:20170223230947p:plain

何もないときは大体200~300PVなのですが、19日が400PV、20日が4000PV*1、21日が2000PV、22日が700PVです。
ホットエントリー掲載前後の数日間で、普段より6000~7000程度PVが増えています。
ちなみにグラフには載せていませんが、23日もpocketなどに私の記事を保存していただいていた方のアクセスがある程度あったりなど、普段よりもアクセスが多い状態でした。

1時間ごと

次は1時間ごとのアクセス数を調べます。19日~21日の3日間に絞ってグラフを描くと、

df.loc[(df["timestamp"] >= "2017-02-19") & (df["timestamp"] <= "2017-02-22")].set_index("timestamp").groupby(pd.TimeGrouper(freq="h"))["browser"].count().plot.bar(figsize=(18, 10))
plt.show()

こうなります。

f:id:kanohk:20170223231739p:plain

19日の20時ごろに小さな山があり、翌日は朝からガンガンアクセス数が伸びている様子が確認できます。
翌日もホットエントリーのトップではないにしろどこかには掲載されていたので、一定数のアクセスが安定して発生している様子が見て取れます。

サイト別のアクセス数

私が観測している限り、はてブとTwitterからのアクセスが多かったようなのですが、実際にそれらのサイトからどの程度のアクセスが来ていたかを細かく見ていきます。
参考までにGoogleからのアクセス数も一緒に確認していきます。ちなみに、普段は外部からのアクセスのうち8~9割はGoogleです。
また、リファラが空欄になっているログが結構あるのですが、そのアクセスがどこから来てるかは謎なのでこれからのグラフには含めてありません。(スマートニュースみたいな、アプリ経由で来ていただいたらそうなるのかなーと思ってるのですが、検証はできてません。)

サイト別アクセス数のコードはちょっと長いのでコピペするのは避けますが、Jupyter NotebookのIn [5]~In [7]あたりで確認できます。

掲載前日

まずはホットエントリー掲載前日、19日のサイト別アクセス数です。
f:id:kanohk:20170222224015p:plain

まず、Googleからのアクセスは安定しています。休日はいつもこんな感じ*2です。
午前0時ごろから既にはてブからのアクセスが確認できるのですが、これらは今回ホットエントリー入りした記事とは別の記事へのアクセスです。

はてブから当該記事への最初のアクセスは19日の16時12分で、グラフでもその時間帯からはてブのアクセスが伸びていることが確認できます。
17時台ははてなブログのトップページ(http://hatenablog.com/)からのアクセスが多かったりしたので、このころに新着エントリーに掲載されていたのでしょう。

掲載当日

いよいよホットエントリーに掲載された当日のはてブからのアクセス数です。
f:id:kanohk:20170222224032p:plain

ログを見ると、ホットエントリーのページからのアクセスは20日の8時32分が最初で、そのあと継続してアクセスが発生しています。おそらく、このあたりでホットエントリーに掲載されたのでしょう。
8時からはアクセス数がガンガン伸び、Twitterからのアクセスもちょっと遅れてやってきている、といった感じです。

掲載翌日

最後に次の日にどうなったかも紹介しておきます。
f:id:kanohk:20170222224605p:plain

縦軸の範囲が掲載当日のものと違うので注意してください。掲載当日と比べるとアクセス数自体は減っているのですが、それでもホットエントリーの下のほうに掲載されていたり、2月20日のランキングのページからアクセスがあったりして、なんだかんだ24時間継続してはてブからアクセスがありました。
Twitterからのアクセスに関しては、掲載当日よりも翌日のほうが多かったです。はてブで話題になった記事を読んだ人がTwitterでツイートして、Twitterからも人がやってくる、という流れですね。

サイト別アクセス数まとめ

別々のグラフにしてしまいましたが、まとめると、掲載前日~翌日の3日間で
はてブから2238アクセス、Twitterから420アクセスでした。

公式Twitterの拡散力は?

さて、記事中で触れたはてなブログ公式ツイッターからのアクセスはどんなものだったのでしょうか。先ほど紹介したツイートに埋め込まれていたアドレスは https://t.co/hI0SPpgytO だったので、このアドレスからのアクセス数を、掲載当日と翌日から抽出します。

len(df[df["from"] == "https://t.co/hI0SPpgytO"])

結果は93でした。Twitterからのアクセスの2割ちょっとが公式アカウントのものだった計算になります。

Googleアドセンスはどうだった?

ご覧のとおり、このサイトにはGoogleアドセンスの広告が貼り付けてあります。
具体的な数字は伏せておきますが、普段とページCTRはほぼ変わらなかったです。はてブやTwitterからのアクセスは検索流入に比べてCTRが低くなりがちっていう記事を何度か見かけた気もするのですが、今回に限ってはそんなことはなかったです。
まあ、仕事の最中にみられるようなブログですし、もともとCTRが低かったからってのもあるのかも。。

反省点

今回の経験を通して、いくつか学んだことを紹介しておきます。

アイキャッチ画像の設定ミス

テクノロジーの人気エントリーに登場し始めて気づいたのですが、なんかこのブログだけアイキャッチ画像が設定されていなくてかっこ悪い感じになっていました。途中から記事を更新してアイキャッチ画像を追加してみたのですが、なぜか反映されず。。
僕自身も画像をみてとりあえずクリックしちゃう、なんてことはよくあるので、アイキャッチ画像の設定はちゃんとしておく習慣をつけないとなーと思いました。

他記事への誘導が弱かった

Google Analyticsを眺めていたら、ホットエントリー入りした記事から次の記事に飛んでもらう誘導がうまくできていないみたいだったので、掲載された当日の昼休みに急遽記事の最下部に関連記事を追加で紹介したりしました。結果はあまり思ったようにユーザーは流れてくれませんでした…。普段に比べると、この数日間はページ/セッションが半分程度しかなかったので、他記事への誘導がうまくできていればPV数ももう一段階大きな数字になっていたかもしれません。

まとめ

最後に簡単に数字をまとめておきます。
19日に新着エントリーに掲載され、20日にホットエントリーに掲載、そして最終的に500を超えるはてブをいただくことができました。
結果、PV数は掲載当日が4000、翌日が2000でした。
そのうち、はてブからのアクセスは2200程度、Twitterからは400程度でした。リファラが取得できていないアクセスも大量にあったので、ニュースアプリ等からのアクセスもあったのではないかと推測しています。

以上、何らかの参考になれば幸いです!



*1:はてなブログのアクセス解析だとPV数が4000ちょいなのですが、はてなカウンターだと4000弱。なんで違うんだろう。

*2:技術系ブログは一般的に平日がアクセスが多く、休日はアクセスが少ない見たいです。仕事中にわからないところを調べてたどり着くパターンが多いのですね