1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Qiita Tags】Qiitaユーザー必見!人気の関連タグを調べるツール

Posted at

はじめに

 Qiitaにはトレンドやタイムラインがあるおかげで、ある程度最新の情報とか、人気なタグとかを把握することができると思います。しかし、タグごとに絞って表示できるとはいえ、この言語の、この分野に関する人気なものが知りたいんじゃ!というような需要は満たせていないんじゃないかなと思います。そこで、Qiitaが提供してくれているAPIを使って、どんな関連タグが多く使われているのか、タグごとに調べられたら面白そうだなと思ったので、思い付きでやってみました。

こちらから使えます

IMG_1792.jpeg

検索窓にタグを入れて、検索件数を指定するだけです。検索結果の中で、気になるタグがあれば、リンクになっているので直接飛べます。検索タグと気になったタグの組み合わせで、自動検索したページに飛ぶので、そのまま記事をご覧になれます。

方法について

 QiitaAPIをつかって、指定したタグを含む記事をn個取ってきて、一緒につけられているタグを数える。やることとしてはこれだけです。(APIのおかげでこれだけで済むというべきか)これをJavaScriptで実装して、HTMLに埋め込んでいます。
 特定分野のトレンドが知りたいというのが発端なので、最初はテキストマイニングをすることも考えたのですが、普通にテキストマイニングをするだけではなく、プログラミングに関連する用語だけにしないと、あまり意味がないですよね。それなら本文よりタグを使った方が、最初から単語を絞り込めると思い、タグを活用するに至りました。タグを使えば英単語とか日本語とか、固有名詞とかいろいろ気にしなくていいから楽でした。結果的にシンプルで使いやすくなったと思うので、筆者としては満足です。

同一人物が複数回投稿しているものでも、毎回カウントしているため、そういったものが検索上位に入ってくることもあります。しかし、それだけ推している人がいるコンテンツは、それはそれで一定の評価に値すると思うので、この仕様のままで行く予定です。

おまけ

最初Pythonで書いていたのですが、リンクから使えるようにした方が便利だろうという事で、JavaScriptに移植して、色々機能を拡張しました。移植前のプロトタイプも勿体ないので、ここに置いておきます。

コードを見る
import requests
from collections import Counter

def get_qiita_tags(tag):
    url = f"https://qiita.com/api/v2/tags/{tag}/items"
    params = {"per_page": 100}

    # APIリクエスト
    response = requests.get(url, params=params)
    if response.status_code == 200:
        items = response.json()
        tags = [item['tags'] for item in items]
        return tags
    else:
        return []

def count_tags(tag_list):
    tag_counter = Counter()
    for page_tags in tag_list:
        for tag in page_tags:
            tag_name = tag['name']
            tag_counter[tag_name] += 1
    return tag_counter

# 検索ワードを決める
all_tags = get_qiita_tags('pygame')

# タグを数える
tag_count = count_tags(all_tags)

# 上位20個のタグを表示(検索ワード以外で20個)
top_twenty_tags = tag_count.most_common(21)
for tag, count in top_twenty_tags:
    print(f"{tag}: {count}")

このコードをコピペして、検索ワードを好きなものに変えていただければ使えます。ただしrequestsはpipが必要だったと思うので以下の通りにpipしましょう

pip install requests

実行結果

Pyxelでやってみた
Pyxel: 72
Python: 65
ゲーム制作: 26
初心者: 10
Python3: 5
遊び: 4
短いコード: 4
game: 3
GithubPages: 3
アルゴリズム: 3
メガデモ: 2
ゲーム開発: 2
シューティングゲーム: 2
ブロック崩し: 2
PyxelUniversalFont: 2
入力: 1
gamepad: 1
Webアプリケーション: 1
リソース: 1
小技: 1
Linux: 1
pygameでやってみた
pygame: 100
Python: 87
RPG: 23
テトリス: 13
Tiled: 12
Python3: 10
ゲーム制作: 8
Tkinter: 5
ゲーム: 5
game: 5
初心者: 4
Windows: 3
gamedev: 3
RaspberryPi: 3
ゲーム開発: 3
OpenCV: 3
SDL2: 2
アルゴリズム: 2
レトロゲーム: 2
Thread: 2
ブロック崩し: 2
Pythonでやってみた
Python: 100
AI: 7
ChatGPT: 6
Python3: 5
数値計算: 5
補間: 5
関数近似: 5
AtCoder: 5
競技プログラミング: 5
LLM: 5
AdventCalendar2024: 4
機械学習: 4
rag: 4
生成AI: 3
CloudRun: 3
numpy: 3
アルゴリズム: 3
Kaggle: 3
初心者: 3
paiza: 3
paizaラーニング: 3

記事の執筆からちょっと経っているので、今やるとまた違った結果が得られると思います。

最後に

 ここまで読んで下さりありがとうございました。筆者は普段ゲームばかり作っていて、この手のことには詳しくないのですが、APIとAIが優秀なおかげで、さくっと作れました。
 Rで検索すると統計関連ばっかり出てきたり、Rubyで検索すると初心者が上位だったり、言語で検索すると特色がはっきり出て面白いですね。Pythonで検索した結果を見ると、PythonってやっぱりAIに強いんだな~って改めて思います。ゲームばっかりやってないで、せっかくだからAIもやるべきなんでしょうかね。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?