私はエンジニアです。
アニメや漫画はエンジニアの必修科目なので、
私は勿論、身の回りの友人たちも嗜んでいます。
というわけで、
特に意識せずともアニメの話をすることがあるのですが、
皆それなりの本数を見ているはずなのに、
- 不思議とお互い共通して見ているアニメが少ない
- 友人から超絶オススメされたアニメがそれほど刺さらない
- ハーレムものというか、むしろ男は1人も出なくていい。
- のんのんびより?何が楽しいかわからん。切ったわ。(開戦)
などなどあって、
誰がどのくらいアニメをみていて、
誰と誰の視聴傾向が似ているのか、という点が気になるようになりました。
そこで、Annict というウェブサービスを利用して、
データ取得とベン図を出力する簡易ツールを作ってみました。
できたもの
- annict-watched-venn
https://github.com/diescake/annict-watched-venn
Annict に登録された視聴済み情報を取得して、
こんな感じでベン図で出力します。
円の大きさが、アニメの視聴数を表していて、
重なっている領域が、共通してみているアニメの数を表しています。
Annict について
Annict は見たアニメを記録して、共有できるウェブサービスです。
個人で運営していて Github にソースコードも公開されています。
本ツールは、Annict に記録された情報を参照しますので、
まずは Annict に情報を記録しておく必要があります。
詳しい説明は公式に譲りますが、
Twitter か facebook のアカウントを利用してサインアップした後に、
アニメの放送年順や、人気順などのグルーピングを利用して、
自分が「見てる」「見た」「見たい」「中断してる」「切った」などの状況を黙々と入力していきます。
スマホからではかなり疲弊するので PC 推奨です。
annict-watched-venn について
使い方
README.md をご参照ください。
といっても、一言で言ってしまえば、
npm install
して npm start
して python -m SimpleHTTPServer
してブラウザで開くだけです。
中身の簡単な説明
nodejs の nightmare でウェブスクレイピングで取得したデータを JSON に吐き出して、
データの表示は html + javascript の D3.js, Venn.js で行っています。
Annict には API が公開されていますので、
ウェブスクレイピングなぞせずとも、API を使えば良さそうに思えたのですが、
どうも自分以外のユーザ情報を取得することはできないようなので、
泥臭くスクレイピングすることにしました。
html 側はとりあえず結果が見られる程度の適当なつくりです。
反省点とかぼやきとか
ベン図の限界
実は比較したい友人たちは5人いました。
そう、察しの良い人は気づいているかもしれませんが、ベン図は2次元では3要素の表現が限界です。
意気揚々と 5人分のデータを Venn.js に食わせたら、大量の warning と共に明らかに情報の落ちているベン図が出力されてがっかりしました。
楕円使うと4要素表現できるらしかったり、カルノー図なら5要素くらいはいけそうですが、
少なくとも Venn.js はサポートしていないので、そこを自力でやる程のモチベーションはありませんでした…
暫定的な回避策として5人なので 5C3 = 10 というわけで、ベン図 10 個出力して比較してみましたが、
円の大きさの基準を統一しないと、なんとも分かりづらかったです。
どうビジュアライズするかって結構難しいものですね。
co で Array.prototype.forEach が使えないのがストレスフル
あぁ^~配列の走査で for ループなんか書きたくないんじゃあ^~
他にもやりたかったこととか
もう少しインタラクティブに
ベン図のマウスオーバーでその領域の作品リストをポップアップくらいはやろうと思ってましたが、
そもそも自分の目的としてた 5人の同時比較ができないことに気づいたので、
もうこれ以上何かする気が起きなくなりました。(かなしみ
もう少し話のネタになりそうなデータを
- 全員が見ているアニメ
- この人だけ見ているアニメ
- この人だけ見ていないアニメ
とか、話のネタになりそうなデータが取れると良いんですが、
指標ごとに for ループ何度も書いて地道にやるのも芸がないし、かっこ悪いしで放置中です。
何か良い方法とかライブラリがあれば誰か教えてください><
ジャンル別視聴数とか
Annict の DB にはアニメのジャンルに関するデータはないのですが、
Wikipedia の各アニメのページや dアニメストア では、分類されうるジャンルが記載されています。(絶対的なものではないと思いますが)
このあたりのデータと照らし合わせると、
ジャンル別視聴数から傾向がわかりそうです。
ただ、アニメの名称に文字揺れがあると思うので、そのあたりの照合をどうするかはネック。
しかし、苦痛に耐えて1クール視聴した「迷家‐マヨイガ‐」と2時間のOVAが同じ1作品(1ポイント)として扱われるのは解せぬ…。