LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

Organization

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

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)が取得出来ない

 

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
What you can do with signing up
0