はじめに
2〜3年前にRailsでアダルトサイトを作るのが流行っていたらしく、その手のブログ記事をよく見かけた。
なぜか Rails ばかりだった。
もっと違う技術で作る人がいてもいいのでは?と思い、作ってみた。
xvideos動画館 - 無料の日本人エロ動画コンテンツのまとめサイト
(注:閲覧は18歳以上の方に限ります)
(2015/9/6 追記:サイトは閉じました)
以下、開発にまつわるあれこれをまとめる。
コンセプト
アダルトサイトってなんで広告がこんなに多いの?ってくらいに感じていたので、極力入れない方向に。
とはいえランニングコストがかかるのであからさまな広告スペースのみ。
肝心の動画は、女優単位で仕分けるよくある感じ。
それだけだと面白くないので、バストサイズで仕分けをしてみた。
仕分け結果はこんな感じ。
サイズ | A | B | C | D | E | F | G | H | I | J | K | L | M |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
女優数 | 3 | 6 | 26 | 30 | 32 | 18 | 17 | 11 | 3 | 5 | 4 | 0 | 1 |
(サイト上で動画を登録している数。詳細は「女優」のページで確認できる。)
一般のデータと比較すると、明らかに女優さんのほうがサイズが大きいという結果に。
バストサイズの平均を日本地図で!一番なのは何県?LCバスト特集
ニーズがあるってことなんでしょうね。
技術
asp.net MVC5
僕が C#er なので asp.net MVC5 を採用。
昨年発売された MVC5 の本に出てきた設計手法を試したかったのが大きな動機。
プログラミングMicrosoft ASP.NET MVC 第3版ASP.NET MVC 5 対応版 (マイクロソフト公式解説書)
- 作者: Dino Esposito,井上章
- 出版社/メーカー: 日経BP社
- 発売日: 2014/10/30
- メディア: 単行本
- この商品を含むブログ (1件) を見る
MicrosoftAzure
MicrosoftAzure でホスティングしている。
規約は読んでアダルトサイトダメという文は見つけられていない。
もしダメだったら・・・
AzureWebsite の Git デプロイはかなり便利。
Heroku 並に使い勝手がいい。
(じゃあ Heroku 使えって言われそうだ)
あと、WebJob もまとめて更新できる。
WebJob = cron っぽいことができるやつ。
アダルトサイトにつきもののスクレイピング。
このジョブの管理に AzureStorage(Queue) + WebJob を使っている。
Azure ではキュー構造のストレージが用意されており、
- キューにジョブを大量に登録
- キューの蓄積をトリガーに処理が走る
といったことができる。
何が嬉しいかというと、
- ジョブにイベントドリブンのパラダイムを持ち込める
- 走るジョブの並列化がお手軽
この2点。
コードで書くとこんな感じ。
public static void Scraping([QueueTrigger(“QueueName")]ScrapingInformation info) { //... }
class Program { static void Main() { JobHostConfiguration config = new JobHostConfiguration(); config.Queues.BatchSize = NUMBER_OF_JOBS; //並列化の数 JobHost host = new JobHost(config); host.RunAndBlock(); } }
各種パッケージ
スクレイピングの元データとなる Twitter の情報取得は LinqToTwitter で解決。
「検索条件を Linq で書く」という点以外には不満(というか疑問)はない。
var tweets = twitter.Search .Where(q => q.Type == SearchType.Search && q.SearchLanguage == "ja" && q.Count == 100 && q.ResultType == ResultType.Recent && q.IncludeEntities == true && q.Query == query) .FirstOrDefault();
スクレイピングは HtmlAgilityPack を使うと何不自由なくできる。
こちらは疑問も特にない。
先人の知恵に感謝。
チューニング
パフォーマンス
目ぼしい箇所だけ OutPutCache を導入した。
ab によるテスト結果が、 16.8 → 539 (req / sec)となって満足してしまった。
まだまだ行ける気がするが、わかっていない部分が多い。
SEO
Googleウェブマスターツールに複数のサイトマップを登録している。
通常のサイトマップと RSSフィード。
あとはHTML5っぽい記述を心がけた程度。
HTMLの構文チェックサービスをいくつか使って整えてみたけど、他のサイトがあまり気にしてないようなので、効果はないのかも。
SEOは普段気にする必要がないため、わかっていない部分が多い。
今後
サービス面
今は幅広く動画を集めているが、ジャンルを特化したサービスにしようかと考えている。
というのも前述したとおり広告は入れたくないが、コストはペイしないといけない。
会費制は相性悪いので、やはり広告しかないと思う。
コンテンツと広告が融合する状態を目指すには、コンテンツのジャンルを絞る必要がありそう。
技術面
せっかくの実験場なので、HTMLのマークアップやCSS設計などの基本から見直してみようと思っている。
パフォーマンスやSEOなど、普段オシゴトでは深く関わらない部分が補完されるのがなかなか面白い。
「オススメ動画」など、統計的なアプローチも試せそうだ。
最後に
アダルトサイト作成は、学習曲線がいい具合の傾きになる良いテーマだと思う。
凝ったことをしなければ数日で作れるし、さまざまな技術を試す伸びしろもある。
学生や新人の研修課題にしてもいいくらい、とは言い過ぎか。
ここまで書いて疲れたので最後にもう一回リンク貼っておこう。
xvideos動画館 - 無料の日本人エロ動画コンテンツのまとめサイト
(注:閲覧は18歳以上の方に限ります)
テーマがテーマだけに自分のブログに書くのを少しためらったけど、自分の血肉になっていることなので開き直ることにした。
— kheiakiyama (@kheiakiyama) May 6, 2015