44
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「平均被ストック数は9」「被ストック数100以上の記事は1%」…QiitaAPIv2で1万件の投稿を分析して分かったこと

Last updated at Posted at 2014-10-15

QiitaAPIがv2になったことで取得出来る記事数が増えました。
そこで、最新の1万件の投稿を取得して、被ストック数についていくつか分析してみました。
(頑張ればより多く(99%近く。100%は多分不可能)の記事も取得可能ですが、取得に時間と手間がかかりそうなので、ひとまず簡単に取得可能な最新1万件を取得してみました)

データ取得

被ストック数を取得するには、投稿の取得API(GET /api/v2/items)だけでは出来ません(返答JSONに被ストック数は含まれません)。投稿を取得した後にそれぞれの記事に対してストックユーザをGET /api/v2/items/:item_id/stockers取得する必要があります。すなわち、以下のような流れになります。

  1. 10000万件の投稿を取得
  2. 10000万件全ての投稿に対してストックユーザを取得

300件/h可能なので、2.で、1万件取得するのに大体30hくらいかかるはずです。

注意点

  • 利用可能数以上のリクエストを送ると「Rate limit exceeded」エラーが返ってくるので1時間待機等の処理を入れるとよいと思います。
  • タイミングによっては「502: Bad Gateway」エラーが返ってくるので、再リクエストを要求する処理も入れるとよいと思います。

サンプルコード

1.の10000万件取得の部分の抜粋(基本部分のみ)です。

get.php
<?php
ini_set('display_errors', 1);
$context = stream_context_create(array(
        'http' => array('ignore_errors' => true,
        'header' => "Authorization:Bearer *****")
));

for($i = 1; $i < 101; $i++){
                $url = 'http://qiita.com/api/v2/items?page='.$i.'&per_page=100';
                $res = file_get_contents($url, false, $context);
                $filename = './'.$i.'txt';
                file_put_contents($filename, $res);
        }

}

被ストック数の分布について

分析結果です。
まず、ヒストグラム(度数分布)で分布のイメージを示します。ほとんどの投稿(80%以上)が被ストック数10以下であるとわかります。

Qiita.png

以下が具体的な割合になります。QiitaのTwitterで投稿されるような100以上の注目の記事は全体の1%程度であると分かります。

範囲 割合(%)
0 15.5
1-9 66.1
10-19 12.0
20-39 3.8
40-59 1.1
60-79 0.5
80-99 0.2
100-299 0.6
300- 0.4

また、平均ストック数は「9.3」でした。ただし、中央値は「4」でしたので、記事を投稿した際、最も可能性の高い被ストック数という意味では「4」になるかもしれません。
被ストックはQiita利用のモチベーションになるので、記事を投稿した際の目安にするのもよいかもしれないなと思います。

44
41
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?