はじめに
Qiitaにはトレンドやタイムラインがあるおかげで、ある程度最新の情報とか、人気なタグとかを把握することができると思います。しかし、タグごとに絞って表示できるとはいえ、この言語の、この分野に関する人気なものが知りたいんじゃ!というような需要は満たせていないんじゃないかなと思います。そこで、Qiitaが提供してくれているAPIを使って、どんな関連タグが多く使われているのか、タグごとに調べられたら面白そうだなと思ったので、思い付きでやってみました。
こちらから使えます
検索窓にタグを入れて、検索件数を指定するだけです。検索結果の中で、気になるタグがあれば、リンクになっているので直接飛べます。検索タグと気になったタグの組み合わせで、自動検索したページに飛ぶので、そのまま記事をご覧になれます。
方法について
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もやるべきなんでしょうかね。