環境
node v14.5.0
作ったもの
特定の語句が使用されているQiitaの記事のタグのトップ10を抽出します。
この記事の後半で、このプログラムから抽出した言葉でマインドマップを作り、アイデアを考えます。(マインドマップ作成は手作業ですw)
たとえば、「Qiita」と入力すると、
$ node app.js
✔ 調べたい言葉を入力してください … Qiita
Python 15
JavaScript 11
初心者 9
PHP 6
Rails 6
AWS 6
Docker 6
docker-compose 5
Mac 5
Ruby 5
Qiitaという言葉を使っている記事のタグは、pythonが一番多いことが分かります。
これは、QiitaのAPIの中のitemsを使いました。
記事の一覧を新しいものから返してくれます。
https://qiita.com/api/v2/items?query="検索語句"
詳細はこちらを御覧ください。
https://qiita.com/api/v2/docs#投稿
コード
constaxios=require("axios");//HTTP通信ライブラリconstprompts=require("prompts");//コマンドプロンプト入力のライブラリasyncfunctionmain(){// 入力 (参考記事:https://co.bsnws.net/article/288)letquestions={type:"text",// インプットタイプname:"word",// 変数名message:"調べたい言葉を入力してください"};letsearch=awaitprompts(questions);letloop_number;//ループ回数lettag_name=[""];//取得するタグ名の配列lettag_number=[0];//取得するタグの数の配列lettag_add_flag=0;//タグを追加するか判定フラグ//調べたい言葉が含まれるQiitaの投稿をQittaのAPIで取得(直近100記事)letresponse=awaitaxios.get("https://qiita.com/api/v2/items?per_page=100&query="+encodeURIComponent(search.word));//データの数が100なければループ回数はデータの数、それ以外は100if(response.data.length<100){loop_number=response.data.length;}else{loop_number=100;}//検索ワードにヒットした投稿からタグを抽出するif(response.data.length>0){for(leti=0;i<loop_number;i++){for(letj=0;j<response.data[i].tags.length;j++){tag_add_flag=1;//tagは配列なのでループfor(letk=0;k<tag_name.length;k++){//既に抽出したタグなら数をカウントするif(response.data[i].tags[j].name==tag_name[k]){tag_number[k]=tag_number[k]+1;tag_add_flag=0;}}//はじめて見るタグなら追加するif(tag_add_flag==1){tag_name.push(response.data[i].tags[j].name);tag_number.push(1);}}}//タグを降順に並べ替えsort(tag_name,tag_number);//トップ10を表示for(leti=0;i<10;i++){console.log(tag_name[i],tag_number[i]);}}else{console.log("該当の投稿はありません");}}// 降順に並び替え (この記事参照 https://qiita.com/may88seiji/items/a6047fd0fba9d598f103)functionsort(index,data){for(vari=0;i<data.length+1;i++){for(varj=data.length;j>i;j--){//隣りあう2つの値を比べて、後ろが多きければ交換するif(data[j]>data[j-1]){//数値の交換lettmp1=data[j];data[j]=data[j-1];data[j-1]=tmp1;//インデックスの交換lettmp2=index[j];index[j]=index[j-1];index[j-1]=tmp2;}}}}main();
参考サイト
promptsライブラリー
prompts : node.js用のコマンドラインからの値を受け取る時に便利なライブラリ
ありがとうございました。
マインドマップ
これで終わりではなくて、ここからが始まりです。
タグをマインドマップでつなげてみると、おぼろげながら進むべき道が見えるような気がしてみました。
例えば、起業に興味があるとします。
$ node app.js
✔ 調べたい言葉を入力してください … 起業
Python 10
初心者 8
ポエム 8
起業 7
リーンスタートアップ 6
Qiita 6
個人開発 5
今読んでおくべき記事100選 5
PHP 5
スタートアップ 4
同様に、これらの語句の記事で使われてるタグを調べます。
pythonという言葉が使われている記事のタグは、 Python、機械学習、AtCoder、AWS、AIなど
初心者は、 CSS、PHP、HTML、Rails、Rubyなど
ポエムは、JavaScript、Python、初心者、機械学習、新人プログラマ応援など
リーンスタートアップは、アジャイル、リーン、スクラム、スタートアップ、Qiitaなど
Qiitaは、Python、JavaScript、初心者、PHP、Railsなど
同様のことを繰り返します。
これを意識高くマインドマップにしてみました。
(汚い手書きですいません)
なんとなく、おぼろげながら、Qiita民が起業に進むべき道が見えてきませんか?
まずは、HTML、CSS、Rubyなどで基礎をかためて、アジャイルってところですかね。(無理矢理感)
あと、私は地方創生に関する仕事をしています。せっかくなので何かヒントはないか、Qiitaのタグからマインドマップを作ってみました。
やっぱり、Qiita民が地方創生するには、ハッカソンが良さそうですね。
ProtoOutStudioやMAというタグも出てきました。
他にも開発合宿の誘致など、良いかもしれません。
今回の投稿は、めちゃくちゃ無理矢理感高いですが、タグ情報の繋がりから、今まで気づかなかった何かが見えてくるかもしれませんので、お試しください。