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

More than 1 year has passed since last update.

Qiitaは日本最大のプログラミング学習プラットフォーム

Last updated at Posted at 2022-03-16

Dream_TradingCard.jpg

はじめに

 Qiita初投稿になります!
 

背景

 タグ一覧を見て、ここまで網羅されているとは!と驚きました。
 入門・解説記事も多く、無料の日本最大のプログラミング学習プラットフォームになっています。
 Qiita APIで分析してみました。

方法

  1. ジャンルごとに記事(レッスン)がどれだけあるのかを調べる
  2. 投稿者の数を調べる *閲覧数1000回以上(先生とみなしています)

 当初は、この方針で進めましたが、実装で取得できない項目がありました。※ソースコードの2.から3.へ変更しました。

ソースコード

  1. ジャンル(タグ)取得
    • GET /api/v2/tags?page=1&per_page=100&sort=count
  2. 投稿者数取得
    • GET /api/v2/users
      • 取得件数1万件との制約があること、実際に投稿数0件のユーザが大半のため、記事(ite ms)から取得するように方針変更
  3. 閲覧数1000以上の投稿者数取得
    • GET /api/v2/item?page=1&per_page=100&query=page:>1000
const axios = require('axios');
const {createObjectCsvWriter} = require('csv-writer');
const tagCsvfilepath =  __dirname+'/tags.csv'
const userCsvfilepath =  __dirname+'/users.csv'
const _sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function main() {
    /*********************
     * 1.ジャンル(タグ)取得
     *********************/

    // CSV出力設定:ヘッダあり、"TAG,ITEMS_COUNT"
    const tagCsvWriter = createObjectCsvWriter({
        path: tagCsvfilepath,
        header: [
            {id: 'id', title: 'TAG'},
            {id: 'items_count', title: 'ITEMS_COUNT'},
        ],
        encoding:'utf8',
        append :false,
    });
    // 1.ジャンル(タグ)取得
    let tags_records = [];
    for (var i=1; i <= 100; i++) {
        let response = await axios.get('https://qiita.com/api/v2/tags?page=' + i + '&per_page=100&sort=count', {
            headers: {
                Authorization: `Bearer ${token}`,
            }
        });
        if(response.data != null){
            response.data.forEach(function( value ) {
                if(value.items_count > 100) {
                    tags_records.push({'id':value.id, 'items_count':value.items_count});
                }
            });
            await _sleep(1000);
        }

    }
    // CSV出力
    tagCsvWriter.writeRecords(tags_records)
        .then(() => {
            console.log('...Done[' + tagCsvfilepath + ']');
        });

    /*****************************
     * 2.閲覧数100以上の投稿者数取得
     *****************************/

    // CSV出力設定:ヘッダあり、"ID,PAGE_VIEW_COUNT,CREATED_AT"
    const userCsvWriter = createObjectCsvWriter({
        path: userCsvfilepath,
        header: [
            {id: 'id', title: 'ID'},
            {id: 'likes_count', title: 'LIKES_COUNT'},
            {id: 'created_at', title: 'CREATED_AT'},
            {id: 'url', title: 'URL'},
        ],
        encoding:'utf8',
        append :false,
    });
    // 3.閲覧数1000以上の投稿者数取得
    let users_records = [];
    for (var i=1; i <= 100; i++) {
        `rgb(255,0,0)`let response = await axios.get('https://qiita.com//api/v2/items?page=' + i + '&per_page=100&query=page:>1000', {
                headers: {
                Authorization: `Bearer ${token}`,
            }
        });
        if(response.data != null){
            response.data.forEach(function( value ) {
                // 注 page_views_count は null で返ってくる
                users_records.push({'id':value.user.id, 'likes_count':value.likes_count, 'created_at':value.created_at, 'url':value.url});
            });
            await _sleep(1000);
        }

    }
    // CSV出力
    userCsvWriter.writeRecords(users_records)
        .then(() => {
            console.log('...Done[' + userCsvfilepath + ']');
        });

タグ(ジャンル) 投稿数(レッスン)
Python 62449
JavaScript 46943
Ruby 36730
Rails 34942
AWS 30207
PHP 25634
初心者 21615
Docker 20960
Java 19651

結果と考察

 閲覧数1000件以上の投稿者(先生)の数 2000名程 と 100件以上の投稿(レッスン)があるジャンルの数 2000件強 から、
 日本最大といってよいボリュームだと思いました。python だと 62449 件投稿があります。

  Qiita10周年記念では、ユーザー70万人です。
 最初は、API (users) で検討していましたが、制約・スキーマから、API (items) から
 閲覧数100件以上の投稿者を取得するように方針変更しました。
 *【QiitaAPI】自分以外のユーザーの記事のPV数(page_views_count)が取得出来ない

結論

 投稿者(先生)も続々増えています、プログラミング学習プラットフォームとして発展しています。
 無料で学習できる優れたプログラミング学習プラットフォームで、一般社会人のリスキリングに、
 多大な寄与をしていると思います。
 「これ、どうするんだっけ?」と検索すると、すぐにQiitaで見つかるという具合です。
 また、さらなる、学び合いも起こっています。

感想

 一般社会人リスキリングについて考えてみました。
 ガイドとして、コースタグをつければ、取り組みやすいと思いました。
 たとえば、タグ名に”Javascript本格入門” "新人プログラマ応援" "入門" なんてありましたよ。
 

参考にした記事

  1. Qiita10周年記念
  2. 【QiitaAPI】自分以外のユーザーの記事のPV数(page_views_count)が取得出来ない

 

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