望むままに思うままに

君に出来ること。君が望むこと。 それは君自身が一番良く知っているはずだ

クソ診断調査の中間報告

まさかのクソ診断アドベントカレンダー8日目です!

 

昨日はふすまさんの記事でした!

 

{{ ここに7日目の記事 }}

 

 

クソ診断調査ということでshindanmaker.comで作られた数多のクソ診断のいろんな数字を調べてたりします。

今日の記事はその中間報告となります。

 

 

クソ診断はidから推測するに現在およそ85万程度作成されており、今も毎日およそ200〜300程度ずつ増えています(非公開を含む)

 

今回は画面から見える数字として、言語別の数字を割合で報告します。

 

各言語ごとの割合

-1日目の記事で書いたとおり、診断メーカーは4言語+その他の5つの言語に分類できます。

現時点での割合としては、

  • 日本語 95%
  • 韓国語 2.5%
  • 英語 1.4%
  • 中国語 0.3%
  • その他 0.1%

となります。

 

各言語とも数自体はそれなりにありますが、割合で見るとやはり日本語が圧倒的であることがわかります。

サービスの海外展開ってのは難しいものですね(海外展開を意図してるのかはわかりませんが)

 

調査基準

各言語の診断にアクセスするとどのURLからアクセスしても(ex. en.shindanmaker.com, ko.shindanmaker.com)lang属性に言語コードが設定された各言語でのページになることがわかったので、これを使って調査することにしました。

 

・日本語の場合

f:id:iteduki:20181205103537p:plain

・英語の場合

f:id:iteduki:20181205103542p:plain

 

集計方法

MongoDBで集計用のクエリを書いていたのでこれを紹介します。

PythonでPyMongoを使っています。

client = MongoClient('mongo', 27017)
db = client.test_db
col = db.test_collection
 
pipe = [
{'$group': {'_id': '$lang', 'count': {'$sum': 1}}},
{'$sort': SON([('count', -1)])}
]
agg = list(col.aggregate(pipeline=pipe))
 
for r in agg:
print(r['_id'], r['count'])
 

VSCodeからコピーしたら背景色とかハイライトも全部コピーされた!すごい!) 

 

langでグループ化してグループごとのカウントを取得しています。

'count': {'$sum': 1}の部分はレコード1件につき1を加算するという意味。langごとの診断された回数の合計としたいなら1の部分を'$score'みたいなプロパティを指定すればいいはず。

Aggregation Examples — PyMongo 3.7.2 documentation

 

余談

昔仕事で使ってたからというだけでMongoDBにしたけど、あのときはC#だったからインテリセンスが効いてたりジェネリクスでフィールド指定できたりして便利だったなぁということを思ったりしました。

あとなんでPythonにしたんだろって今更。rubyでよかったわ←

 

余談2

python3 + MongoDBの環境はdockerで簡単に作れます。

 

明日はふすまさんの診断メーカー既知のバグの記事です!

 

 

はじめてのMongoDB (I・O BOOKS)

はじめてのMongoDB (I・O BOOKS)