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は基本的に無料で提供されています。
使いきれないほどの豊富な機能が備わっていて、なおかつ無料ですのでぜひ触ってみてください。