#目的
どのタグ(ほぼ言語)が最初にフォローされやすいのかを確認する。
先に登録するものが、Qiitaを使いたいというきっかけになるものなので、
本当に興味があることではないかという推測に基づく。
#方法
あるグループのユーザリストを取得(プログラム外)し、
APIを使って新しい順にユーザ別にタグを取得。
認証情報がないとAPIをたたける数が少ない。
新しいものの番号を古い順に変換し、登録5つ目までのタグをランキング化(プログラム外)
#コード
get_qiita_data_tags.js
//package require
const axios = require("axios");
const fs = require("fs");
const csvStr = require("csv-stringify/lib/sync");
const csvParse = require('csv-parse/lib/sync');
//認証情報の取得 外から渡してる
const token = process.argv[2];
//QiitaAPIでデータ取得・csvに出力
async function getArticle(query) {
//ユーザリストを取得
const file = './data/input_user_list.csv';
let inputData = fs.readFileSync(file);
let user_list = csvParse(inputData);
console.log(user_list);
//csvに変換する用list
let outcsv = [];
//csvのヘッダー設定
let columns = ["ユーザ番号","ユーザID","タグ登録順","タグ"];
outcsv.push(columns);
//あるリストに存在するユーザ数
var user_num = user_list.length;
//検索用パラメータ
var PAGE_MAX = 4;
var PER_PAGE = 100;
for (i = 0;i<user_num;i++){
//あるユーザがフォローをしているタグを取得
var user_id = user_list[i][0];
console.log(user_id);
for (page = 1;page<=PAGE_MAX;page++){
//URLを作っておく
var url = "https://qiita.com/api/v2/users/"+user_id+"/following_tags?page=" + page + "&per_page=" + PER_PAGE;
let response
//リクエストが失敗した時の処理
response = await axios.get(url
, {
headers: {
Authorization: `Bearer ${token}`,
}
}
).catch(err => {
return err.response
});
if (response.status != 200) {
console.log("たぶんAPIエラー")
}
var tags_num = response.data.length;
var sort_num_desc;
console.log(tags_num);
for (j =0 ; j<tags_num ; j++) {
//一レコードの情報格納list
let record = [];
//欲しい要素
var tag_id = response.data[j].id;
sort_num_desc = (page - 1) * PER_PAGE + (j+1);
console.log("row: " + sort_num_desc +",user_n: " + i + ",user_id: " + user_id + ",tag_id: " + tag_id);
//listに格納
record.push(i,user_id,sort_num_desc,tag_id);
outcsv.push(record);
}
}
}
// csvとして出力
fs.writeFileSync("./data/following_tag_list.csv", csvStr(outcsv));
}
//情報の取得
var query = "node.js";
getArticle(query);
#結果
そもそもあるグループの前提になっている授業に含まれている言語が多い。
フロント側の技術や、必須になるソースの管理に関しても見る人が多い。
あんまりユーザ数が約40人のグループにしては必須の技術のタグ付け数が少ない。
タグ付けしないのだろうか。
順位 | タグ | ユーザ数 |
---|---|---|
1 | JavaScript | 16 |
2 | Node.js | 12 |
3 | Python | 8 |
4 | GitHub | 6 |
5 | Android | 5 |
6 | Chrome | 4 |
7 | CSS | 4 |
8 | HTML | 4 |
9 | HTML5 | 4 |
10 | Git | 3 |