Qiitaの記事のタグ情報を活用した意識高いアイデア創出方法

##環境
node ｖ14.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#投稿


##コード

```js:app.js
const axios = require("axios"); //HTTP通信ライブラリ
const prompts = require("prompts"); //コマンドプロンプト入力のライブラリ

async function main() {

  // 入力  （参考記事：https://co.bsnws.net/article/288）
  let questions = {
    type: "text", // インプットタイプ
    name: "word", // 変数名
    message: "調べたい言葉を入力してください"
  };
  let search =  await prompts(questions);

  let loop_number;  //ループ回数
  let tag_name = [""]; //取得するタグ名の配列
  let tag_number =[0]; //取得するタグの数の配列
  let tag_add_flag = 0; //タグを追加するか判定フラグ

  //調べたい言葉が含まれるQiitaの投稿をQittaのAPIで取得（直近100記事）
  let response = await axios.get("https://qiita.com/api/v2/items?per_page=100&query="+ encodeURIComponent(search.word));
  
  //データの数が100なければループ回数はデータの数、それ以外は100
  if (response.data.length < 100){
      loop_number = response.data.length;
      }
      else{
        loop_number = 100;
      }
  
  //検索ワードにヒットした投稿からタグを抽出する
  if (response.data.length > 0){
      for (let i = 0; i < loop_number; i++ ) {

        for (let j = 0; j < response.data[i].tags.length; j++) {
          tag_add_flag = 1;
          //tagは配列なのでループ
          for (let k = 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 (let i = 0; i < 10 ; i++ ) {
        console.log(tag_name[i], tag_number[i]);
      }

    }else{
      console.log("該当の投稿はありません");
  }

}


// 降順に並び替え　（この記事参照　https://qiita.com/may88seiji/items/a6047fd0fba9d598f103）
function sort(index,data) {
  for(var i = 0; i < data.length+1; i++){
    for(var j = data.length; j>i ; j-- ){
      //隣りあう２つの値を比べて、後ろが多きければ交換する
      if(data[j]>data[j-1]){
        //数値の交換
        let tmp1 = data[j];
        data[j] = data[j-1];
        data[j-1] =tmp1;
        //インデックスの交換
        let tmp2 =index[j];
        index[j] = index[j-1];
        index[j-1] =tmp2;        
      }
    }
  }
}

main();
```
###参考サイト
promptsライブラリー
[prompts : node.js用のコマンドラインからの値を受け取る時に便利なライブラリ](https://co.bsnws.net/article/288)

並べ替え
[JavaScript バブルソート](https://qiita.com/may88seiji/items/a6047fd0fba9d598f103)


ありがとうございました。


##マインドマップ
これで終わりではなくて、ここからが始まりです。
タグをマインドマップでつなげてみると、おぼろげながら進むべき道が見えるような気がしてみました。

例えば、起業に興味があるとします。

```
$ node app.js
✔ 調べたい言葉を入力してください … 起業
Python 10
初心者 8
ポエム 8
起業 7
リーンスタートアップ 6
Qiita 6
個人開発 5
今読んでおくべき記事１００選 5
PHP 5
スタートアップ 4
```

同様に、これらの語句の記事で使われてるタグを調べます。
pythonという言葉が使われている記事のタグは、 Python、機械学習、AtCoder、AWS、AIなど
初心者は、 CSS、PHP、HTML、Rails、Rubyなど
ポエムは、JavaScript、Python、初心者、機械学習、新人プログラマ応援など
リーンスタートアップは、アジャイル、リーン、スクラム、スタートアップ、Qiitaなど
Qiitaは、Python、JavaScript、初心者、PHP、Railsなど

同様のことを繰り返します。


これを意識高くマインドマップにしてみました。
（汚い手書きですいません）
![IMG_6802.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/64e382ba-855e-a719-919e-4c0c82f7a380.jpeg)





なんとなく、おぼろげながら、Qiita民が起業に進むべき道が見えてきませんか？
まずは、HTML、CSS、Rubyなどで基礎をかためて、アジャイルってところですかね。（無理矢理感）



あと、私は地方創生に関する仕事をしています。せっかくなので何かヒントはないか、Qiitaのタグからマインドマップを作ってみました。

![IMG_6801.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/291592/cb65d2f0-6c3c-f858-4e0e-80a688988619.jpeg)



やっぱり、Qiita民が地方創生するには、ハッカソンが良さそうですね。
ProtoOutStudioやMAというタグも出てきました。
他にも開発合宿の誘致など、良いかもしれません。




今回の投稿は、めちゃくちゃ無理矢理感高いですが、タグ情報の繋がりから、今まで気づかなかった何かが見えてくるかもしれませんので、お試しください。