BotFramework で遊んだ

BotFramework とは?

BotFrameworkMicrosoft が発表した Bot 作成の仕組み。
公式ドキュメント にあるように、BotConnector と BotBuilder (と詳細が明らかになっていないBotDirectory) で構成されている。


BotConnector

BotConnector は Bot のO/R マッパーみたいなもの。
日本で使えそうなチャットサービスは、Skype, Slack, SMS, EMail, WebChat あたり。
LINE 対応してないのが惜しいけど、上のラインアップを見る限りビジネス向けの Bot を作ることになるんだろう。


BotBuilder

対話式で bot とやり取りするためのライブラリ。
Web ページの Form を置き換えるものだと思ってる。


何ができるか

ひとまず BotConnector を見て思いついたものをつくった。
チャンネルをまたいでチャットをするサービス。

ChatBridge

試すとわかるが、相手に ID を教える必要があり、それをチャットで送りたくなる。
ということで今ひとつ使い勝手がよくない。
ソースも公開しておく。

github.com


BotFramework の課題

試して気付いた課題や注意点がいくつかある。

Skype

  • Skype Bot の申し込みは申し込みから利用開始まで8時間くらいかかった
  • 現在の対応プラットフォームは Windows, Android, iOS で、Mac は未対応。(Web 版は未確認)


Slack

  • MessagesExtensions 経由のメッセージ送信はユーザIdのメンションがついてしまう。
    f:id:khei-fuji:20160423181711p:plain
    Reply の場合は問題ない。
    [2016/05/05 9:28 追記] 上記現象は発生しなくなっている模様。


最後に

デモにあったようなピザを注文するとかの利用はわかりやすいが、Bot のサービス提供のみでビジネスになるのかなって気がしている。
Web ページと違って広告も入れづらいだろうし。
マネタイズがよくわからない。

Web ページでやってることを Bot にただ持ち込むのではスマートウォッチと同じことになる。
でも Bot はスマートウォッチや IoT よりも来る可能性があると予想されていて、僕もけっこうそうかもしれないと思っている。
果たしてどうなるか。


世界トップ企業のAI戦略

世界トップ企業のAI戦略


シゴトでBtoBのサービス作ってる僕がアダルトサイトを作ったまとめ

はじめに

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 の本に出てきた設計手法を試したかったのが大きな動機。



MicrosoftAzure

MicrosoftAzure でホスティングしている。
規約は読んでアダルトサイトダメという文は見つけられていない。
もしダメだったら・・・


AzureWebsite の Git デプロイはかなり便利。
Heroku 並に使い勝手がいい。
(じゃあ Heroku 使えって言われそうだ) あと、WebJob もまとめて更新できる。
WebJob = cron っぽいことができるやつ。


アダルトサイトにつきもののスクレイピング
このジョブの管理に AzureStorage(Queue) + WebJob を使っている。
Azure ではキュー構造のストレージが用意されており、

  1. キューにジョブを大量に登録
  2. キューの蓄積をトリガーに処理が走る

といったことができる。

何が嬉しいかというと、

  • ジョブにイベントドリブンのパラダイムを持ち込める
  • 走るジョブの並列化がお手軽

この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歳以上の方に限ります)