見出し画像

技術書典5のサークル情報をワンライナーで集計してみた

2018/10/8(月・祝)に開催される「技術書典5」まであと一週間。

ということで、サークル情報として登録されている内容を集計してみました。
ワンライナーなので手軽に実行できます。

事前準備

まずはサークル情報を取得します。
以下のURLからJSON形式で取得できる様子なのでcurlコマンドで取得、ファイルに保存しておきます。

$ curl "https://techbookfest.org/api/circle?eventID=tbf05&visibility=site&limit=500&onlyAdoption=true" > tbf5.json

さらに、JSONの処理用にjqコマンドを、形態素解析用にmecabコマンドをダウンロードしておきます。
Macの場合、Homebrewを使うと簡単です。

$ brew install jq
$ brew install mecab mecab-ipadic

集計する

まずはジャンルを集計してみます。
jqコマンドでJSONからジャンルを抽出し、sortとuniqで集計できます。

$ cat tbf5.json | jq '.list[].genre' | sort | uniq -c
 50 "hardware"
 44 "other"
347 "software"
 30 "technology"

やはりソフトウェア関係が多いですね。

次に、サークルの申込区分で集計してみます。
こちらも同じくjqコマンドでJSONから申込区分を抽出し、sortとuniqで集計。

$ cat tbf5.json | jq '.list[].eventExhibitCourse.name' | sort | uniq -c
408 "一般"
  1 "運営"
 53 "パトロン"
  9 "スポンサー"

パトロンで登録しているサークルさん、意外と多い印象でしょうか。

さらに、ジャンル詳細に登録されているキーワードで集計してみます。
文章で登録されているので、MeCabを使って形態素解析します。

jqコマンドでサークル詳細を抽出し、MeCabで一般名詞と固有名詞に分類されたキーワードだけをgrepで選択、awkでキーワードだけを抽出します。
登場した数で並べ替えて上位を表示してみると、以下のようになりました。

$ cat tbf5.json | jq '.list[].genreFreeFormat' | mecab | grep -e '名詞,一般' -e '名詞,固有名詞' | awk '{print $1}' | sort | uniq -c | sort -r -n | head -40
143133 技術
 42 Web
 34 言語
 29 エンジニア
 29 同人
 29 内容
 27 ソフトウェア
 27 ゲーム
 27 電子
 25 機械
 25 新刊
 23 Android
 22 ロボット
 22 アプリ
 21 方法
 20 書籍
 2020 iOS
 19 情報
 19 Unity
 18 既刊
 17 アプリケーション
 17 作り方
 17 ツール
 16 セキュリティ
 16 JavaScript
 15 ノウハウ
 15 コード
 1515 C
 14 js
 13 ハードウェア
 13 システム
 13 インフラ
 13 環境
 13 手順
 13 Linux
 13 CSS
 12 ネットワーク

やはりWeb系が多いのが特徴ですね。

キーワードに合致するサークル一覧を抽出

上記で見つけたキーワードでも構いませんし、他に知りたいキーワードがあれば、それを指定して抜き出せばサークル一覧を表示できます。

例えば、「機械学習」で検索するには以下のコマンドを実行します。

$ cat tbf5.json | jq '.list[] | .spaces[0] + "," + .name + ": " + .genreFreeFormat' | grep '機械学習'

「フリーランス」に興味がある方は以下でどうぞ。

$ cat tbf5.json | jq '.list[] | .spaces[0] + "," + .name + ": " + .genreFreeFormat' | grep 'フリーランス'

これを実行すると、私の出展するサークルも表示されます。

以下のような内容で頒布しますので、ぜひサークルチェックしてみてください。


この記事が気に入ったらサポートをしてみませんか?