8
3

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 3 years have passed since last update.

Qiitaの一番人気のタグに人気投稿時間があるか初心者が調べてみた

Last updated at Posted at 2021-10-14

#はじめに
JavaScript初挑戦!
APIで色々できると聞いているけれども、何から挑戦してみたら良いのか分からないため、紹介してもらったQiita APIにチャレンジ。
Qiitaにはたくさんの記事が投稿されていますが、投稿時間に特徴があるのかが気になりました。
投稿を調べるにあたって、一番人気のタグはそれだけ活発に記事が投稿されているはずなので、一番人気のタグに着目して記事の投稿時間をQiita APIを使って調査してみたいと思います。
Qiita投稿者の投稿時間はたして・・・

#目次

  • 使用した環境
  • データを取得してみる
    • 情報を取るための下準備
    • 一番使用されているタグを調べてみよう!
    • 記事の投稿時間を調べてみよう!
  • 結果
    • 時間との関係
    • 曜日との関係
    • 時間と曜日の関係
  • 最後に

#使用した環境
Visual Studio Code
JavaScript
Qiita API

#データを取得してみる
調査するにあたって、必要な情報はこちらの二つ。
 ・一番使用されているタグ
 ・記事の投稿時間

##情報を取るための下準備
axios」というHTTP通信を簡単に行えるようにするパッケージをインストールしました。
ターミナルでこのコマンドを叩くとインストールされます。

npm i axios

これで下準備完了!

##一番使用されているタグを調べてみよう!
この記述で使用されている記事数が一番多いタグを調べられました。
タグ一覧を作成日時の降順で返す

async function main() {
  //ランキング一位のタグを検索
  let response = await axios.get("https://qiita.com/api/v2/tags?page=1&per_page=20&sort=count");
  let tag=response.data[0].id;
  console.log(tag);
}
main();

何が出るかな、何が出るかな・・・

Python

2021/10/14現在、Python:snake:が一番使用されているタグでした!

##記事の投稿時間を調べてみよう!
人気のタグが分かったところで、そのタグを使った記事の投稿時間を調べます。
投稿時間を調べる記述はこちら↓↓↓
記事の一覧を作成日時の降順で返す

    let response2=await axios.get("https://qiita.com/api/v2/items?page=1&per_page=20&query=tag%3A"+tag);
      for(i=0;i<=10;i++){
        console.log(response2.data[i].created_at);
      }

結果は・・・

2021-10-14T14:31:36+09:00
2021-10-14T14:25:56+09:00
2021-10-14T13:46:17+09:00
2021-10-14T13:35:15+09:00
2021-10-14T12:20:18+09:00
2021-10-14T11:22:24+09:00
2021-10-14T11:20:19+09:00
2021-10-14T09:36:53+09:00
2021-10-14T09:10:22+09:00
2021-10-14T08:34:47+09:00
2021-10-14T05:21:38+09:00

取得できた!

・・・が、ここでトラブル発生:scream:

ある程度のデータが欲しいので実行回数を増やしたところ、Qiita APIの1時間あたりの実行回数を即オーバーしてしまい、エラーが発生しました。
<参考:QiitaDeveloper

利用制限
認証している状態ではユーザごとに1時間に1000回まで、認証していない状態ではIPアドレスごとに1時間に60回までリクエストを受け付けます。

認証をしていれば、1時間に1000回まで可能になるため、こちらの記事を参考に認証キーを取得&設定し、無事解決です!
よそ様の情報を簡単に参照できるWEBAPIが本当に簡単なのか体験してみた。

そして、完成したプログラムがこちら↓↓↓

const axios = require("axios");

async function main() {
  //ランキング一位のタグを検索
  let response = await axios.get("https://qiita.com/api/v2/tags?page=1&per_page=20&sort=count", {
    headers: {
    'Authorization': `Bearer ****************************************`
    }
  })
  let tag=response.data[0].id;
  console.log(tag);

  //タグ内の記事の投稿時間を調査
  for(a=1;a<=50;a++){
    let response2=await axios.get("https://qiita.com/api/v2/items?page="+a+"&per_page=20&query=tag%3A"+tag, {
      headers: {
      'Authorization': `Bearer ****************************************`
      }
    })
      for(i=0;i<=10;i++){
        console.log(response2.data[i].created_at);
      }
  }
 
}
main();

理想は実行結果をファイル書き出したかったのですが、技術が足りずターミナルに表示される結果をExcelにコピペする形で決着です。
ターミナルに表示されるデータ量の関係で100ページを50ページずつに分割して実行しました。

#結果
実行結果をExcelにコピペし、3つの観点でグラフを作成しました。
####時間との関係
time.png

・日中はビジネスタイムにも多く投稿
・12時台~13時台と19時台は、前後の時間帯から大きく減少
<考察>
学校や仕事が終わる17時頃から夜にかけて投稿が増えることを予想していましたが、大きな増加がなくどの時間帯でも安定した投稿がありました。
ということは、Qiitaは学生や社会人以外にも幅広い層からの投稿がありそうです。
また、12時台~13時台、19時台の投稿が減少しているのは、食事や移動をしている人が多い時間帯と重なっている影響が考えられました。

####曜日との関係
youbi.png
・日曜と月曜の投稿が多い
<考察>
土日の投稿が一番多いと想定していたので、結果に驚きました。
どの曜日も大きな差がないため、やはり幅広い層が投稿しているようです。

####時間と曜日の関係
yt.png
・どの曜日も大きい差はないが、月曜と土曜・日曜は他の曜日よりも午前中の件数が多い
<考察>
時間と曜日を比較しても、はっきりとした特徴はなかったが、土日月の動きが似ていたため、この3日間のいずれかで休日を取る人が多いと考えられました。

#最後に
投稿時間を分析してみて、人間の活動時間帯は満遍なく投稿されている事が分かりました。
Qiitaで検索すると疑問がほぼ解決するのは、様々な環境にいる人が投稿し、知識が集まっているからなんだな、と分かりました。
今回は人気のタグの中から調査しましたが、対象や観点を追加したら、また違った結果が出そうなので、スキルアップした時にまたチャレンジしたいと思います!

8
3
0

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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?