0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiitaで記事が多く投稿されるのはいつなのか【2025年版】

Last updated at Posted at 2026-01-10

やりたいこと

 年末にアドベントカレンダーを書いていて「やっぱり、この時期に投稿数が増えるのだろうか?」と思い、Qiitaに投稿されている記事の投稿日を集めてグラフにしようと考えました。
 他に調べている人がいないか見てみると2022年までの投稿数を調べている人がいました。この記事にあるグラフを見ると、やはり12月に投稿数が大幅に増えていました。目的は達成された感がありましたが、2025年の最新の状況も知りたいし、なにより自分の手でやってみたかったので調査しました。
 APIをほとんど使ったことがないので、至らぬところが多々あると思います。
 本記事の内容は2026年1月1日時点のものです。

結果だけを見たい人はこちらからページ下部に飛んでください。

↓2022年までの投稿数を調べた方の記事

投稿日を取得するには

 当初、Qiita記事の投稿日をスクレイピングで収集しようとしていましたが、公式から禁止されていました。

スクレイピングはサーバーの負荷上昇への懸念があるため、Qiitaへのスクレイピングは許可しておりません。
https://help.qiita.com/ja/articles/qiita-api)

Qiita APIで新着記事一覧を取得できるようなので、そちらを利用しました。

Qiita APIを使ってみる

 Qiita APIは認証なしでは1時間に60件のリクエストを送れますが、アクセストークンで認証をすると1時間に1000件までリクエストを送ることができます。
アクセストークン認証は「設定」>「アプリケーション」>「新しくトークンを発行する」から発行できます。発行すると「個人用アクセストークン」のところに表示されました。

アクセストークンを発行した後.avif

↓参考記事

 APIドキュメントを読むとhttps://qiita.com/api/v2/docs#投稿に記事の一覧を作成日時の降順で取得する方法が書かれていました。
qiita.comがホスト、GETメソッドで/api/v2/itemsにアクセスします。
パラメーターはpageper_pagequeryの3つです。一部の配列を返すAPIはすべての要素を一度に返さず、ページ番号をpageで指定し、1ページあたりの要素の数をper_pageで指定します。

page

返す要素のページ番号を指定する。1から100までで、初期値は1。

per_page

1ページに表示する要素の数を指定する。1から100までで、初期値は20。

query

検索クエリで、記事を絞り込むことができる。
例)qiita+user:Qiita→「qiita」が含まれる、ユーザー@Qiitaが作成した記事

↓こちらに詳しく書かれています

GETメソッドはURLでリクエストするので試しにhttps://qiita.com/api/v2/items/?page=1&per_page=1&query=user:ruby1031にアクセスすると、ちゃんと表示されました。
Qiita APIのレスポンス.png

Qiitaに投稿された記事の情報を集める

 これまでに投稿された記事がいくつあるのかを検索欄にcreated:<=2025-12-31を入れて調べると1,139,029件と大量にありました。1時間に100×1000の100,000件しか記事を取得できないので2025年に投稿された122,946件の記事を調べることにしました。

↓この記事を参考にしながらGASで取得し、スプレッドシートにまとめました。

function get_qiita_b(){
  //記録するスプレッドシートを指定
  var spreadsheet = SpreadsheetApp.openById('/*記録先シートのID*/');
  var sheet = spreadsheet.getSheetByName('2025');
  
  var rows = sheet.getLastRow();

  //検索クエリを指定
  var q_spreadsheet = SpreadsheetApp.openById('/*検索クエリを保存しているシートのID*/');
  var q_sheet = q_spreadsheet.getSheetByName('query_b');
  var query = q_sheet.getRange("A" + q_sheet.getLastRow()).getValue();
  q_sheet.getRange("A" + q_sheet.getLastRow()).setValue('');
  var url = "https://qiita.com/api/v2/items/?per_page=100&query=" + encodeURIComponent(query);

  getPosts_b(url,sheet,rows);
}

function getPosts_b(url,sheet,rows) {
  //Qiita APIのアクセストークンを付与
  var options = {
    'method': 'GET',
    'headers': {
      'Authorization': 'Bearer ' + '/*Qiitaの個人用アクセストークン*/'
    }//,
    //'muteHttpExceptions': true
  }
  rows += 1;
  for(var i = 1; i< 101; i++){
    Logger.log(i); //進行確認用

    //APIの結果を受け取る
    var response = UrlFetchApp.fetch(url + "&page=" + i, options);
    var json = JSON.parse(response.getContentText());

    if(json.length != 0){
      //取得日時を取得
      var time = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
      //結果を配列化
      var values = json.map((data) => {
        return [
          time,
          '',
          '',
          data.coediting,
          data.comments_count,
          data.created_at,
          data.group,
          data.id,
          data.likes_count,
          data.private,
          data.reactions_count,
          data.stocks_count,
          JSON.stringify(data.tags),
          data.title,
          data.updated_at,
          data.url,
          JSON.stringify(data.user),
          data.page_views_count,
          data.team_membership,
          data.organization_url_name,
          data.slide
        ]
      });
      //スプレッドシートに保存
      sheet.getRange(rows, 1, values.length, values[0].length).setValues(values);
      rows += 100;
    }
    else{
      break;
    }
  }
}

コードの軽い説明

 get_qiita()で記録先のシートや検索クエリを準備して、get_Posts()に渡しています。get_Posts()は①リクエストURLを作る、②APIを叩く、③情報を保存する、という流れになっています。

8〜14行目

 GASの実行時間制限を回避するために一回の実行でAPIを叩く回数が50回程度になるように調整した検索クエリ(26個)を、事前に別のシートに保存しています。各実行時には保存していた検索クエリを取得してリクエストURLを作成し、get_Posts()に渡しています。

18〜24行目

 UrlFetchApp()を使う時にheaderにAPIのアクセストークンを付けています。
 23行目はコピペの残骸です。

26行目

 Qiita APIは1〜最大100ページに分けて返すので、それに対応しています。

28行目

 pageパラメータを追加してリクエストを送っています。

34〜59行目

 APIが返してくれたデータを保存しています。
 各ページでデータをまとめて保存すると、GASの時間短縮につながりました。

困ったところ① 検索クエリ

 Qiita APIドキュメントではqueryのパラメーターを+でつないでいましたが、500エラーが返ってきたので困りました。結局Qiitaで検索をするときのURLと同じように (半角スペース)でつなぐと上手くいきました。

困ったところ② GASの実行時間制限

 最初は記事情報を1件ごとにスプレッドシートへ保存していたのでGASの実行時間制限が問題になりました。APIからの情報を保存する処理を「1行増やして1投稿を保存×100件」から「100投稿分の100行を一気に保存」に修正したことで、実行時間が10分の1になりました。結果として検索クエリを細かく分ける必要はなくなりました。
大量のデータをスプレッドシートなどに保存するときは「まとめて一度に実行」が大切だと学びました。
 最近知った「N+1問題」に近いと思いました。

困ったところ③ Qiitaの投稿数

 すべての投稿を収集した後に、漏れや重複がないかどうかQiitaの検索窓で2025年中に投稿された記事を調べました。すると、集めた数より検索結果のほうが少なく、重複を疑いましたが、記事固有のidに重複はありませんでした。一部の記事が非公開になったのだろうということで何もしていません。
 ちなみに、この記事の冒頭では122,946件の記事が公開されていると書きましたが、収集した数は122,941件で、収集完了後にQiitaに公開されていた数は122,940件でした。執筆開始(2026/01/01 11時)から収集完了(2026/01/02 22時)までに6件が非公開になったのでしょう。

困ったところ④ スプレッドシートのサイズ制限

 スプレッドシートのサイズ上限は「1,000万セルまたは18278列」ですが、数万行になると動作が重くなるという記事がちらほら見られたので心配していました。
 保存用に使ったのは21列×12万行で、読み込みや関数や検索に数秒〜数十秒かかりました。GASの実行履歴を見ると、3万行を超えたあたりから時間が長くなっているのがわかります。
GASの実行履歴.png
 データの加工用にシートをコピーしていると4回目のコピー時に1000万セルを超えたため、警告が出ました。
 ↓今回は直接関係がありませんが、スプレッドシートのサイズ上限について興味深い記事があったので、ぜひ合わせてご確認ください。

良かったこと① Qiita APIのリクエスト制限

Qiita APIのリクエスト制限である1000件/時間がネックになると思っていましたが、手動で複数回に分けてGASを動かしたため時間がかかり、結果としてAPIアクセスが止められることはありませんでした。

データを分析する

①結果

データは2026年1月2日時点のものです。
Qiitaの記事の中には非公開となり現在は公開されていないものもあります。そのため、データの値と実際の数が異なる場合があります。

全部で122,941件の記事のデータを集めました。
今回収集したデータを表計算ソフトで確認していると16226行目が空白になっていて欠損していました。

毎日の投稿数について

2025年の日ごとのQiita投稿数の推移.png

2025年の日ごとの投稿数 以下のデータは2026年1月2日の19時から22時にかけて集めたものです。
日付 投稿数
1月1日 260
1月2日 256
1月3日 264
1月4日 315
1月5日 338
1月6日 309
1月7日 277
1月8日 262
1月9日 308
1月10日 256
1月11日 224
1月12日 292
1月13日 295
1月14日 290
1月15日 254
1月16日 247
1月17日 263
1月18日 260
1月19日 316
1月20日 315
1月21日 329
1月22日 282
1月23日 260
1月24日 284
1月25日 259
1月26日 378
1月27日 298
1月28日 345
1月29日 305
1月30日 308
1月31日 333
2月1日 278
2月2日 351
2月3日 305
2月4日 293
2月5日 246
2月6日 242
2月7日 271
2月8日 255
2月9日 356
2月10日 305
2月11日 370
2月12日 249
2月13日 308
2月14日 291
2月15日 370
2月16日 323
2月17日 291
2月18日 302
2月19日 250
2月20日 317
2月21日 278
2月22日 282
2月23日 315
2月24日 310
2月25日 310
2月26日 329
2月27日 278
2月28日 321
3月1日 265
3月2日 305
3月3日 277
3月4日 284
3月5日 247
3月6日 319
3月7日 265
3月8日 310
3月9日 308
3月10日 360
3月11日 292
3月12日 263
3月13日 269
3月14日 270
3月15日 236
3月16日 350
3月17日 301
3月18日 293
3月19日 248
3月20日 290
3月21日 274
3月22日 302
3月23日 303
3月24日 336
3月25日 316
3月26日 342
3月27日 315
3月28日 275
3月29日 312
3月30日 348
3月31日 432
4月1日 310
4月2日 312
4月3日 301
4月4日 287
4月5日 256
4月6日 399
4月7日 342
4月8日 387
4月9日 304
4月10日 314
4月11日 276
4月12日 286
4月13日 399
4月14日 311
4月15日 312
4月16日 304
4月17日 297
4月18日 244
4月19日 300
4月20日 330
4月21日 334
4月22日 308
4月23日 342
4月24日 343
4月25日 269
4月26日 247
4月27日 258
4月28日 380
4月29日 355
4月30日 343
5月1日 301
5月2日 321
5月3日 273
5月4日 329
5月5日 325
5月6日 356
5月7日 279
5月8日 278
5月9日 247
5月10日 276
5月11日 359
5月12日 373
5月13日 296
5月14日 311
5月15日 267
5月16日 246
5月17日 289
5月18日 342
5月19日 315
5月20日 274
5月21日 299
5月22日 288
5月23日 267
5月24日 294
5月25日 352
5月26日 332
5月27日 322
5月28日 294
5月29日 346
5月30日 314
5月31日 321
6月1日 379
6月2日 316
6月3日 291
6月4日 340
6月5日 277
6月6日 259
6月7日 293
6月8日 336
6月9日 293
6月10日 279
6月11日 315
6月12日 291
6月13日 326
6月14日 243
6月15日 328
6月16日 282
6月17日 358
6月18日 368
6月19日 336
6月20日 329
6月21日 353
6月22日 338
6月23日 325
6月24日 330
6月25日 311
6月26日 375
6月27日 329
6月28日 334
6月29日 424
6月30日 389
7月1日 336
7月2日 354
7月3日 335
7月4日 336
7月5日 319
7月6日 371
7月7日 354
7月8日 322
7月9日 279
7月10日 281
7月11日 294
7月12日 322
7月13日 309
7月14日 355
7月15日 464
7月16日 305
7月17日 311
7月18日 259
7月19日 260
7月20日 243
7月21日 339
7月22日 343
7月23日 281
7月24日 254
7月25日 279
7月26日 325
7月27日 333
7月28日 312
7月29日 324
7月30日 339
7月31日 317
8月1日 239
8月2日 319
8月3日 302
8月4日 324
8月5日 337
8月6日 310
8月7日 260
8月8日 290
8月9日 293
8月10日 301
8月11日 335
8月12日 339
8月13日 334
8月14日 358
8月15日 319
8月16日 274
8月17日 300
8月18日 340
8月19日 287
8月20日 335
8月21日 306
8月22日 250
8月23日 265
8月24日 338
8月25日 285
8月26日 295
8月27日 313
8月28日 290
8月29日 288
8月30日 252
8月31日 377
9月1日 366
9月2日 296
9月3日 304
9月4日 301
9月5日 250
9月6日 287
9月7日 315
9月8日 290
9月9日 325
9月10日 331
9月11日 285
9月12日 259
9月13日 242
9月14日 263
9月15日 334
9月16日 295
9月17日 299
9月18日 329
9月19日 259
9月20日 244
9月21日 326
9月22日 275
9月23日 323
9月24日 286
9月25日 254
9月26日 277
9月27日 247
9月28日 325
9月29日 391
9月30日 349
10月1日 308
10月2日 303
10月3日 263
10月4日 257
10月5日 299
10月6日 310
10月7日 277
10月8日 251
10月9日 270
10月10日 231
10月11日 264
10月12日 238
10月13日 344
10月14日 279
10月15日 274
10月16日 308
10月17日 286
10月18日 229
10月19日 288
10月20日 284
10月21日 283
10月22日 283
10月23日 223
10月24日 259
10月25日 244
10月26日 312
10月27日 350
10月28日 281
10月29日 245
10月30日 292
10月31日 299
11月1日 294
11月2日 286
11月3日 360
11月4日 304
11月5日 343
11月6日 284
11月7日 303
11月8日 305
11月9日 340
11月10日 353
11月11日 311
11月12日 302
11月13日 290
11月14日 288
11月15日 285
11月16日 311
11月17日 301
11月18日 370
11月19日 407
11月20日 321
11月21日 366
11月22日 314
11月23日 344
11月24日 453
11月25日 417
11月26日 429
11月27日 420
11月28日 466
11月29日 457
11月30日 587
12月1日 784
12月2日 710
12月3日 693
12月4日 723
12月5日 678
12月6日 642
12月7日 763
12月8日 768
12月9日 782
12月10日 763
12月11日 642
12月12日 683
12月13日 570
12月14日 699
12月15日 769
12月16日 725
12月17日 615
12月18日 621
12月19日 661
12月20日 612
12月21日 766
12月22日 806
12月23日 755
12月24日 721
12月25日 971
12月26日 385
12月27日 255
12月28日 339
12月29日 373
12月30日 363
12月31日 450

 上のグラフは集めたQiitaの投稿記事のデータを元に、1日毎の投稿数(青)と7日間の移動平均(赤)を表した折れ線グラフです。これを見ると、日によって多少の大小はありますが1月から10月までは毎日200件から400件程を推移していることがわかります。そして11月の中頃から急に増え始め12月はクリスマス(25日)まで毎日600件から800件程と2〜3倍の数が投稿されています。25日の971件をピークに26日には385件まで落ちています。そこから大晦日(31日)にかけて少し増えています。

1時間ごとの投稿数について

2025年のQiitaの1時間毎の投稿数.png
2025年のQiitaの時間帯別の投稿数割合.png

2025年の時間別の投稿数 以下のデータは2026年1月2日の19時から22時にかけて集めたものです。
時間帯 投稿数
0:00 738
1:00 412
2:00 272
3:00 140
4:00 169
5:00 120
6:00 189
7:00 277
8:00 321
9:00 468
10:00 534
11:00 555
12:00 583
13:00 565
14:00 593
15:00 627
16:00 702
17:00 740
18:00 662
19:00 572
20:00 587
21:00 722
22:00 792
23:00 951
 上のグラフは集めたQiitaの投稿記事のデータを元に、1時間ごとの投稿数をまとめた棒グラフと、3時間ごとの投稿数が全体に占める割合を表した円グラフです。  棒グラフを見ると、最小値は5時台の120件で最大値は23時台の951件、平均値は512件です。12時台、17時台、23時台に極大値を迎えています。10時台から25時台までは投稿数が500件を超え、1時台から9時台までは500件を下回っています。  円グラフを見ると、3時台と6時台に投稿される数の割合が他の時間帯よりも小さくなっています。また、15時台から23時台までで全体の50%以上を占めているので、記事の投稿は午後に多くなっています。

②考察

 以下の考察はどれも統計的な検定などを行っておらず、私の主観を多分に含んでいます。ご承知ください。

7月15日の464件

 7月15日のは他の日と比べて464件と特に多くなっています。7月15日は合計1657人(重複含む)が参加したQiita Tech Festa2025のさまざまな記事投稿キャンペーンの最終日でした。このキャンペーンに間に合わせようとした駆け込み投稿があったのかもしれません。

月末

 投稿数や移動平均のグラフを見ていると、多くの月で月末に投稿数が増えています。「今月中に!」と思って投稿が増えているのでしょうか。

12月

 12月の中旬までは他の月の2〜3倍となる700件前後の記事が毎日投稿されていて、25日の971件をピークにその後は350〜450件程度と他の月と同程度になっています。12月1日から25日まで行われたQiita Advent Calendar 2025のために多くの人が記事を書いたのだろうと思います。

よく投稿される時間帯

 17時前後や23時前後に投稿数が多くなっています。夕方や夜中に多く投稿される傾向がありそうです。特に23時前後には、夜の趣味の時間などに記事を書いて投稿する方が多いのかも知れません。

分析について 〜次に向けて〜

 今回の考察はまとめたグラフを私が見た感じで考えたものなので統計的な証明ができていません。気が向いて統計を調べることがあれば、検定などをして客観的に証明したいと思いました。また今回は、記事が参加しているイベントについてのデータは集められていないので、今後はそのデータも含めて投稿数とイベントの関係などを詳しく見ていきたいと思います。もしこの記事を読んで分析に興味が湧いた方がいれば、より詳細な分析をしてほしいなと思います。

最後に

 内容は記事情報の収集パートが大半を占めてしまいました。分析の結果として予想通り12月に投稿数が急増していることがわかったので良かったです。
 今回の情報収集を通してDBへのクエリはまとめて1度に送る「N+1問題」を体感したり、APIの使い方やスプレッドシート周りについての理解が深まったりしたのでとてもよかったです。なによりQiita APIの存在を知り、今後の遊びの幅が広がりそうです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?