YAPC::Asia 2014 前夜祭

1,578 views

Published on

YAPC::Asia 2014 前夜祭 hrhm.infoのお話

Published in: Engineering
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,578
On SlideShare
0
From Embeds
0
Number of Embeds
633
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

YAPC::Asia 2014 前夜祭

  1. 1. YAPC::Asia 2014 前夜祭
  2. 2. スタッフの方へお願い
  3. 3. 不適切な発言があったら ピー音入れて下さい
  4. 4. あたし ID:hondallica(ホンダリカ)※Lは2つです 職業:HeavyMetal Programmer 年齢:100,03x歳 血液型:X 出身:北海道 好きな言葉:親に嫌われたら一人前だ URL: http://sukuna.net/    https://github.com/hondallica Hachioji.pmに出没します。
  5. 5. 本日のセットリスト ・ヘヴィメタルとは ・サービス(hrhm.info)のご紹介 ・データの集め方 ・副産物
  6. 6.
  7. 7. お客様の中にハードロック・ヘヴィメタルが 好きな方はいらっしゃいますか?
  8. 8. ヘヴィメタルとは
  9. 9. ヘヴィメタルとは ・社会にちょっとなじめない人たちが ・重低音をかき鳴らしながら ・ファンタジーの世界に迷い込んだり ・世の中間違ってると叫んでいる ・聴いている人があんまりいない ・かわいい音楽 DEATH!!
  10. 10. 本題
  11. 11. Hard Rock & Heavy Metal Web Service http://hrhm.info
  12. 12. YouTubeの動画探すの楽な 俺得サービス
  13. 13. DEMO
  14. 14. 構成 ・VPS: Digital Ocean ( 安い・SSD速い) ・Web Server: Nginx (使ってみたかった ・App Server: Starman (これしか知らなかった ・WAF: Mojolicious::Lite (覚えやすかった ・WebAPI: node.js( 使ってみたかった ・SQLite: ファイルポン置きでリリースできる
  15. 15. 構成 ・自分の既存の知識で扱える構成にする  ▶ インフラ構築の勉強も兼ねているので   スモールスタート ・とにかく公開することを優先 ・個人サービスだし困ったら後で見直せばいい
  16. 16. データの集め方
  17. 17. 必要なもの ・PC  →データ収集専用機があるとよい(常時稼働) ・DB  →お好みで ・ちょっとしたプログラミング能力  →HTTP投げてDBに突っ込む程度で大丈夫 ・狂気  →根こそぎデータ集めるぞという気持ち
  18. 18. ひたすらデータを集める
  19. 19. ひたすら Scraping、WebAPI
  20. 20. 主な情報源 ・HR/HMニュースサイト ・Last.fm ・SoundCloud ・MusicBrainz ・Bandcamp ・Myspace ・Facebook ・Twitter
  21. 21. 押さえておくべき 2サイト
  22. 22. Last.fm ・インターネットラジオ + SNS ・ユーザーが聴いている曲情報が共有される
  23. 23. Last.fm ・恐ろしくAPIが充実している
  24. 24. Last.fm ・CPANモジュールあります  ・Net::LastFM  ・WebService::LastFM  ・etc...
  25. 25. MusicBrainz ・音楽のWikipedia ・メタデータが豊富
  26. 26. MusicBrainz ・特にMusic Brainz ID(MBID)が重要 アーティスト、アルバム、楽曲などにユニークなID が振られている。 4bd02db1-3592-4d15-9aa5-23c9591e49ce Last.fmやその他音楽系WebAPIでは、リクエスト パラメータにMBIDを使える事が多い。 サービス間連携に超重要!
  27. 27. MusicBrainz ・CPANモジュールあります  ・WebService::MusicBrainz
  28. 28. MusicBrainz さらに
  29. 29. MusicBrainz ・このサービスのVMがダウンロードできます http://musicbrainz.org/doc/MusicBrainz_Server/Setup ・コマンドでマスターサーバとDB同期できる ・ローカル環境でAPI叩き放題 ・DB(PostgreSQL)に直接アクセスも可 ・チラ見した限りだと80万以上のアーティスト が登 録されていた
  30. 30. 集めたデータ
  31. 31. Band ・Band Name ・Country ・Genre(Thrash, Death, Power...) ・Status(活動中,休止中,解散...) ・収集中ですがライヴ履歴も 100K〜 records
  32. 32. Artist ・Name ・Country ・Age ・Gender ・Part(ヴォーカル,ギター,ドラム...) ・History(今まで所属していたバンド) 500K〜 records
  33. 33. Discography ・Name ・Type(シングル,アルバム,ビデオ...) ・Release Date 240K〜 records
  34. 34. Track ・Title ・Length ・Lyric(ごく一部) 1.7M〜 records
  35. 35. Similar Band ・Band ・Similar Band ・Score(関連性を独自集計)  ▶ 複数のWebAPIのスコア  ▶ 同じアーティストが所属していた  ▶ 一緒にライヴをやった回数  ▶ 独断と偏見 4.2M〜 records
  36. 36. 同名バンド
  37. 37. 読めないバンド ↑文字化けではありませんバンド名です
  38. 38. 頻出ワード Death Black Dead Blood War Life Night Time World Hell Dark Die Darkness Fire End Last Love Evil God Metal みなさんもよく使うと思います
  39. 39. 似ている・関連バンド(demo) http://hrhm.info/similar
  40. 40. DB ・最初はとにかく集める ・サイトによって取れる情報が異なる  ▶ いきなりきれいに構造化はできない ・HTML、JSON、XMLを生データのままDBに  格納しておく ・最低限サービス公開に使う情報を構造化  例:バンド名、アルバム名、曲名、国、    ジャンル、アーティスト名
  41. 41. データ収集中に生まれた 副産物
  42. 42. メタル系の人は
  43. 43. ヘビメタって言われるのを 嫌います
  44. 44. 曲に合わせて頭振るのを ヘッドバンギングと 言いますが
  45. 45. ヘッドバンキングって 書いてるのをよく見ます。 何銀行だよ!?
  46. 46. 副産物(1) Chrome拡張作りました。 https://github.com/hondallica/userscript-heavymetal
  47. 47. 副産物(1) 最高にクールだろ?
  48. 48. 副産物(2) さきほどご紹介したLast.fmのCPANモジュール Net::LastFM api_keyいちいち入力したくないので、引数を省略 したら$ENVから読みたい。
  49. 49. 副産物(2) 依存モジュールが重そうだった。
  50. 50. 副産物(2) 完成してませんが、Net::LastFM::Liteを作ってみ ました。(GET系APIなら動くはず) https://github.com/hondallica/p5-Net-LastFM-Lite
  51. 51. 副産物(2) ほぼモジュール差し替えですが
  52. 52. 副産物(2) けっこう速くなった。 Benchmark: timing 400 iterations of lfm, lfml... lfm: 305 wallclock secs ( 1.34 usr + 0.17 sys = 1.51 CPU) @ 264.90/s (n=400) lfml: 296 wallclock secs ( 0.66 usr + 0.13 sys = 0.79 CPU) @ 506.33/s (n=400) Rate lfm lfml lfm 265/s -- -48% lfml 506/s 91% --
  53. 53. 副産物(3) ・bandcampというアーティスト直販サービス ・インディーズバンド多め
  54. 54. 副産物(3) ・APIはありますがCPANモジュールなかった
  55. 55. 副産物(3) WebService::Bandcampリリースしました。
  56. 56. 残念なことに
  57. 57. APIキーの配布が停止中 このモジュールは APIドキュメントからリンクされてる サンプルリクエストのキーを使って作った。
  58. 58. 自分専用として始めた サービスですが
  59. 59. 現在95カ国からご利用頂いております アフリカ・中東・グリーンランド、北朝鮮に メタラーのお友達がいたら宣伝をお願いします
  60. 60. まとめ ・自分の好きな事を形に ・データ持ってるとできることが広がる ・しょぼくても公開する事が大事  ▶ この場で話す機会がいただけた!
  61. 61. The End

×