#はじめに
技術書典5に参加はできませんでしたが、BOOTHの商品ページのタグを使って、技術書典5のトレンドを体感できたらいいなあと思ってやってみた記事です。
#技術書典とは
新しい技術に出会えるお祭りです。
技術書典は、いろんな技術の普及を手伝いたいとの想いではじまりました。
技術書を中心として出展者はノウハウを詰め込み、来場者はこの場にしかないおもしろい技術書をさがし求める、技術に関わる人のための場として『技術書典』を開催します。
技術書典: https://techbookfest.org/
最近 (2018/10/08)、技術書典5が開催され、総来場者数は1万人を超えたようです。1
#BOOTHとは
BOOTHとは、pixivと連携した
ネットショップサービスです。
pixivで活躍しているクリエイターをはじめ、
様々なクリエイターの素敵な作品が
あなたを待っています。
BOOTH: https://booth.pm/customer_guide
技術書典で頒布された技術書も扱っており、参加できなかった人も手に入れることができます。
#ソースコード
BOOTHにおいて技術書典5で頒布された技術書のタグを取得し、各タグがいくつあるのかを数えます。
コードの流れ
- 一覧ページのurlから、各商品ページのurlを取得
- 各商品ページのurlから、タグを取得し順番にリストに追加
- 各タグが何回出現するのかをカウントして、降順で表示
Python3でBeautifulSoup4, Counterを使いました。さらっと書いたので、色々あれかもしれないです。
参考にした記事
PythonとBeautiful Soupでスクレイピング
Pythonで単語の数え上げとかするならCounterを使うと便利なはなし
import urllib
from collections import Counter
from bs4 import BeautifulSoup
#イベントを技術書典5に絞り込んだ際の一覧のurlを全て作成
urls = ["https://booth.pm/ja/events/techbookfest-5"]
lastpage_number = 15
for i in range(2, lastpage_number+1, 1):
urls.append("https://booth.pm/ja/events/techbookfest-5" + "?page=" + str(i))
list_htmls = []
urls_item = []
data_tag = []
#一覧から各商品のページのurlを取得
for url in urls:
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html, "html.parser")
list_items = soup.find_all("a", target="_self", class_="nav")
for item in list_items:
urls_item.append(item.get("href"))
#商品のurlからtagを取得してカウント
for url in urls_item:
html = urllib.request.urlopen(url)
soup = BeautifulSoup(html, "html.parser")
list_tags = soup.find_all("div", class_="search-guide-tablet-label-inner")
for tag in list_tags:
data_tag.append(tag.string)
counter = Counter(data_tag)
for word, cnt in counter.most_common():
print(word, cnt)
#結果
4票以上のタグの一覧を以下に示します(技術書典や作者名に関連するタグなどは省きました)。
タグ | 回数 |
---|---|
プログラミング | 28 |
JavaScript | 17 |
電子工作 | 15 |
Android | 15 |
iOS | 13 |
エンジニア | 11 |
Swift | 9 |
自作キーボード | 9 |
AWS | 8 |
Unity | 8 |
React | 8 |
Firebase | 7 |
フロントエンド | 7 |
CSS | 7 |
機械学習 | 6 |
TypeScript | 6 |
Python | 6 |
入門書 | 6 |
Arduino | 5 |
キーボード | 5 |
クラウド | 4 |
テクニカルイラスト | 4 |
VR | 4 |
Xamarin | 4 |
C# | 4 |
Qt | 4 |
強化学習 | 4 |
Web | 4 |
スマートスピーカー | 4 |
ラズパイ | 4 |
SSD | 4 |
C++ | 4 |
#感想
実際は、表記ゆれで票がバラけているものがあったり(例えば、Golangなど)、あまり上手くいったとは言えませんが、雰囲気はなんとなくわかるような気がします(現地に行った人は比較してみてほしいです)。
また、4票以下の結果をみたり、BOOTHで見て回ったりした感じだと、各々が好きな(ニッチな)分野に取り組んでいる印象がありました(同人誌なので当たり前といえば当たり前ですが)。
参加者が増加して大変な面も多いとは思いますが、今後もこのような文化・イベントが継続すればいいなあと思っています。