Qiita API を使って記事を取得し、記事をAPIで取得してJSON形式で出力。
そのファイルをPower BI というMicrosoftのBIツールにインポートして分析してみました。
なお、今回はQiitaのトップコントリビューターの10名の神々を対象に実行しています。
利用したもの
API
- API Qiita API v2
実行環境
- Windows 10 Home
- Node.js
- axios
BIツール
Power BI Desktop
書いたコード
//ライブラリの読み込み
const axios = require('axios'); //APIをたたくaxios
const fs = require("fs"); //標準出力のfs
// 文字コード
const charset = 'utf8'; //出力ファイルの文字コード
const result = './Result/'; //出力先のフォルダ
var response; //GETの受け皿
var jsonArray = new Array();
var i = 0;
//神々
const Gods = [
"jnchito",
"rana_kualu",
"hirokidaichi",
"suin",
"drken",
"icoxfog417",
"baby-degu",
"Yametaro",
"mpyw",
"opengl-8080"
];
//メイン処理
async function main() {
//forをネストするのも手間だし、1人あたり3回たたけば全件取得できるので、ヨシッ!!
for(let userId of Gods){
//page1
response = await axios.get(
'https://qiita.com/api/v2/users/'+ userId +'/items?page=1&per_page=100'
);
jsonArray.push(response);
//page2
response = await axios.get(
'https://qiita.com/api/v2/users/'+ userId +'/items?page=2&per_page=100'
);
jsonArray.push(response);
//page3
response = await axios.get(
'https://qiita.com/api/v2/users/'+ userId +'/items?page=3&per_page=100'
);
jsonArray.push(response);
}
//json形式でファイル出力!!
for(let res of jsonArray){
fs.writeFile(result + i +".json" , JSON.stringify(res.data, null, " "), charset, (err, data) => {
if(err) console.log(err);
else console.log('write end');
}
);
i++;
}
}
//メイン実行
main();
結果
ツリーマップ
散布図と回帰直線
コメントとLGTMとの間の相関は強くはなさそう?
躓きポイント
短いコードながらJavaScript初心者の私には難しいポイントがいくつかありました。
1. 型推論
Javascirptの型推論に悪戦苦闘。便利なようで使いこなすには時間がかかりそうです。
axios.get()の戻り値の型がわからず、メソッドをうまく呼び出せませんでした。
Typeof()で調べて公式リファレンスと小一時間ほど格闘しました。
2. Itterable
いてらぶる....。「反復可能」と訳すようです。Google大先生にご教授いただきました。
要は配列っぽいオブジェクトのことですよね。
配列ではないものをfor...of文に渡そうとしてTypeErrorが発生してしまいました。
javascriptの組み込み型では、String, Array, TypedArray, Map, Setが該当するそうです。
3. 標準出力
Power BI やその他のツールに連携するためにも、やはりファイルへの書き出しはマスターしておきたいところ。
しかし、fn.writefile()メソッドの使い方から始まり、文字コード、Json形式...と調べることはてんこ盛りでした。
4.Power BI に複数のファイルを取り込む
Power BI は、SQLやExecelファイルなど多くのデータソースを取り込むことができます。
しかし、複数のファイルの一括で読み込むには工夫が必要です。
終わりに
今回はJavaScriptを学習したアウトプットとして、Qiita APIを利用したデータの取得と分析にチャレンジしてみました。
分析はイマイチですが、「APIで情報を取得し分析の準備を整える」まではできたのでご容赦ください。
また、Power BIは基本的に無料で提供されています。
使いきれないほどの豊富な機能が備わっていて、なおかつ無料ですのでぜひ触ってみてください。



