LoginSignup
8
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-07-12

環境

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#投稿

コード

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-- ){
      //隣りあう2つの値を比べて、後ろが多きければ交換する
      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用のコマンドラインからの値を受け取る時に便利なライブラリ

並べ替え
JavaScript バブルソート

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

マインドマップ

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

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

$ 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など

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

これを意識高くマインドマップにしてみました。
(汚い手書きですいません)
IMG_6802.jpg

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

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

IMG_6801.jpg

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

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

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4