Hack & Sports

Microsoft エバンジェリスト&トライアスリート 大田 昌幸の個人ブログ

Skype Developer Platform について調べ始めてみた

最近Office開発周りが面白いのだけど、その中でも特にSkype開発系が面白そうなので調べ始めてみました! 今回は Skype Developer Platform を使うと何ができそうか?を軽くまとめてみます。

どこに情報があるか?

Skype周りの開発はこのページにまとまっています。 活用シナリオ、サンプルコードなどが手に入るので自力で始めたい人はここを見てみてください。 自力で進めるのが嫌だwという方は、僕のブログをSubscribeして情報収集してみてください(^ ^)

何ができそうか?

まだ実際にコーディングしていないので、コンセプトベースで話を進めます。 Skype Developer Platformでは主に3つのことができそうです。

  1. WebアプリにSkypeを埋め込んで、チャット/通話/ビデオ通話/デスクトップ共有ができる

  2. バイルアプリにSkypeを埋め込んで、1と同じようなことができる

  3. Skype Share buttonContact me buttonを使ってソーシャルにつながる

Webへの埋め込みは下の画像のようなイメージです。どうやらjavascriptのコードを埋め込むとチャット/通話画面が埋め込める模様。はよコーディングはじめて動かしたい! http://dev.office.com/media/default/skype/IS.png

文章で見るよりもビデオのほうが理解しやすいので、YouTube動画をいくつか貼り付けます。 シナリオは複数あったのですが、その中でもわかりやすかった Customer Support, Retail(ECっぽい),Health Careの動画をピックアップしました。動画を見ると感じていただけると思うのですが、お客様、患者さんとの距離が近づいて便利になりそうです!最近はECサイトなどでチャット埋め込みが多いですが、それに加えてビデオ通話ができると便利そうですね! 個人的には英会話アプリで使えないか?が気になるので、英会話アプリのデモを作っていく予定です

Customer Support シナリオのビデオ


Skype Developer Platform: Partnership with Genesys

Retailシナリオのビデオ


Skype Developer Platform: Retail Services

Health Careシナリオのビデオ


Skype Developer Platform: Health Care Services

めちゃワクワクしているのでガンガン触って共有していこうかなと思います(目標は週1くらいかなぁ) 興味ある人はぜひガチャガチャいじってみてください。

未踏 IoT 合宿に参加してきた(1回目)

6/3(金)~6/5(日)の2泊3日で未踏IoT開発合宿(OB/OG合宿)に参加しました! Things側(デバイス側)初心者として学んだことのメモがメインですが、今後始める人の役に立てばいいなと思い、ブログにもポストします。

atnd.org

一緒に参加した稲津さんはブログ、西尾さんはSlideShareで資料あげているので、あわせてお楽しみください。

今回の目的は大まかに2つだったのですが、無事達成!やっぱ日ごろから中国に発注している人と一緒に開発すると早い!!

  • バイス側開発の全体像を知る

  • 実際の開発方法をある程度経験する

参加した背景

そもそも合宿に参加した経緯としては、下記のとおりです。端的に言うと、自分が見ている範囲にHello World or Deep 情報しかないので勉強する場が欲しかったのです。

  1. 親父「実家の事業の中でこういうことしたいのだけど、実現方法考えて」
  2. まさ「あぁ、いわゆるIoTだね。データ吸いだしてダッシュボード作ればいいのか。IoT Hub + Stream Analytics + Power BI あたりで何とかなるよ。Cloudにデータ出せたらデータ見るまで工数1日未満だと思う」
  3. 親父「ふ~ん、デバイス側ってどうやるの?」
  4. まさ「わかんないから勉強してくる!」
  5. まさ いろんな人のブログ読んで勉強しようっと => Lチカ(LEDチカチカ)どまりが多いなぁ。もしくは情報ディープすぎて辛い・・。入門からミドルくらいまでの勉強したいなぁ
  6. 上田さん@未踏会議 「IoT合宿やります!」
  7. まさ「これだ!参加します!」

バイス側開発の全体像を知る

今回は Raspberry Pi 2 とデバイス類を使って開発! デバイスとコンピュータ(Raspberry Pi)を接続する方式は全部で3つ習いました

詳細はWikipediaを見てもらうとして、それぞれざっくり説明すると、

  • GPIOは基本。アナログデータを送受信するときに使用
  • I2Cはデジタルデータ(センサーで撮った温度とか)を送受信するときに使う。複数センサーを制御できるけど、速度は2Mbpsくらい
  • SPIはデジタルデータを高速(50Mbps)送受信。

最近はI2Cのセンサーが多いらしく、また、自分的にはI2Cセンサー扱いやすかったので今後もI2Cやっていこうと思いました。

実際の開発方法をある程度経験する

実際の開発工程としては、だいたいこんな感じでした。

  1. やりたいこと決める!
  2. バイス選定する(今回は慣れのために適当にRGBセンサーを使いました)
  3. バイスのデータシート(仕様)を解読
  4. データシートに書いてあることをもとにデバイスつなぐ+Pythonで実装

1はデバイス開発以前のことなのでスキップします。

2はI2Cセンサーで手ごろなRGBセンサーを選定。今後は自分の目的に合わせてカメラ購入予定です。

3はメーカーの製品ページにだいたいリンクがあります。例えば、RGBセンサーのページにあるTechnical DetailsにあるリンクをたどるとこんなPDFにたどり着きます。これを読んでデバイスの仕様を理解する。例えば、下図のような感じです

f:id:NT-D:20160608212052j:plain

f:id:NT-D:20160608203226j:plain

3で理解した内容をもとに4では実際に実装! f:id:NT-D:20160608205105j:plain (この写真はRGBではない別のやつです)

バイスつなぐのは慣れてなくて、上田さん、矢萩さん、西尾さんに教えてもらいながらどうにかこうにか。Pythonもサンプルを見せてもらいつつ、Raspberry PiSSHで入ってガチャガチャ実装。もっと実力をあげて自力でやり遂げたい!

ちなみに、工程3はしんどいしめんどいです・・できればベトナムとかのクラウドソーシング先に渡して1センサー1万円くらいで解読とサンプル作成を依頼したいなぁと思いました。

感想

未踏合宿というだけあって「皆さんエンジニアなのでセットアップとかコーディングはできますよね?英語は読めますよね?わからない人はググって下さい」という前提でサクサク進むので受ける側としては良い緊張感が持てた。

逆に、本当に詰まりそうなポイントについては丁寧に教えていただけるので、そこは助かりました。できる人と開発するとガンガン進むので、2回目も是非行きたいです! (すでに製品できている人も多かったので、普通に悔しいしなぁ。。)

次やりたいこと

  • I2Cで取得した水温情報 + カメラ情報をIoT Hub を使ってAzureに投げ込む
  • Azure側で処理をしてデータをリアルタイム可視化する
  • ブレッドボードで繋いだ基盤をベースに量産する方法を勉強する(現実世界へのDeploy方法)

クラウド上の機械学習サービスを実案件に採用するときの経験談

マイクロソフトエバンジェリストをしている大田です。

この記事では、クラウド上で提供されている機械学習サービスを実案件に採用するときの経験談をまとめます。

自分のプロジェクトで活用する際の参考情報になれば幸いです。

//主観的な内容も含まれているかもしれませんが、ご容赦ください。また、技術的な詳細よりもわかりやすさを優先するため、「機械学習サービス」と統一した呼び方にします。

 

サービスの種類/適用範囲

最近様々なベンダーが提供している機械学習サービスを自社プロダクトに取り入れる場合、大きく分けて以下3つの方針があげられます。

  • API サービスの活用 (SaaS)
  • Tool の活用 (PaaS)
  • 独自作りこみ/外注 (IaaS)

 

API サービスの活用 (SaaS)

これから導入する人もいると思うので、「そもそも API サービスとは何でしょうか? 」というところから始めていきます。

API サービスの特徴は、下記のとおりです。

  • 特定用途に特化している
  • 使用料 (1000回呼び出しごとに xx円) に応じた課金
  • 実装コスト低い
  • 自分側でシステムを開発する必要がなく、あくまでマッシュアップ(組み合わせる)を前提としている

機械学習 API というのはどういうものかというと、下記のようなことが実現できます。

  • 顔認識
  • 性別/年齢の認識
  • 画像のアダルト度測定
  • 画像に含まれる文字列認識
  • 話している人の認識.. などなど

このカテゴリに該当するのは Microsoft であれば Project OxfordGoogle さんも最近 Google Cloud Machine Learning というサービスを出していて、この辺りが該当します(Google のサービスではまだ遊んでいないので、もしずれていたらフィードバックください)。

 

この手のものはサクッと始められて実装コストは低いので始めるのは容易です。一方で、ある程度用途は限られているので、自分のシナリオに合わない場合にはアイディアソン/ハッカソン止まりになってプロダクトには反映されないこともあります。合う場合は最高です。

 

Tool の活用 (PaaS)

 機械学習を取り入れるための、ある程度作りこみ可能なツールのことをここでは Tool と呼んでいます。

このカテゴリの特徴は下記のとおりです。

  • 賢い処理をするための脳みそ(モデル)が用意されている
  • 画像/動画/音声/文字列認識などではなく、価格予測やレコメンドなど数値を使った分析が得意
  • できる限りコードを書かなくて済むようになっている
  • 脳みそを賢くするために必要なデータのインポート/加工のためのツールも用意されている
  • データを可視化するツールが提供されている
  • 脳みそが本当に賢くなったかをテストするツールも用意されている
  • 別システムから呼び出すための機能が提供されている

なんだか便利そうですね。でも、はじめに紹介した API と異なり、使う側にも専門性が少し必要になってきます。また、案件では下記のような意識が必要です。

  • そもそもどのような結果を出したいか?という定義を自分でする
  • その結果を出すために機会に学習させられる規則性があるか?という仮定を自分で設定する
  • あくまで「開発」なので、Tool が提示してくる統計的な情報等を理解しながら自分でロジックを組む

 

このカテゴリに該当するのは、Azure Machine Learning Amacon Machine Learning が該当します(僕 Amazon ユーザーじゃないので、もし違っていたらフィードバックをください。)

 

この手のものは、APIサービスほど楽ではなくなりますが、自分ですべてコードを書き起こすよりは楽です。「機械学習に特化した会社にしたい」とかでなければ、使ってみるとよいと思います。例えば、医療系データを扱っている会社さんなどが、これまでとは異なる切り口で解析を進める際に使っており、成果が上がってきているようです(論文発表の関係があり、公表はできないですが・・)。

繰り返しになりますが、開発を補助するツールなので「自分で開発する」前提で進めましょう。なお、定義や仮説を立てられない際には、コンサル会社さんに頼ることが多く、例えばテクノスデータサイエンス・マーケティング様ブレインパッド様を紹介しています。

 

独自作りこみ/外注 (IaaS)

 上記2つの方針で実現できないときには、最後の砦「独自開発/外注」にやってきます。

このカテゴリの特徴は下記のとおりです。

  • 自分で実装をする
  • 専門性高い会社は、論文読みながら独自実装している (開発と研究両方の側面が必要)
  • 目的に合わせたライブラリの選定や実装を行う
  • (頑張れば) 自社プロダクトに最適化した実装が可能

なんか大変そうですね。大変です。このカテゴリを実現できる会社は、コンピューターサイエンスの素養のある方々が集まって開発していることが多いので、競争するのは大変です。アプリケーション開発とは全く異なる専門性が必要になります。

 

このカテゴリに該当するのは、以下のようなツールです。

独自開発しているエンジニアさんたちには頭が上がらないです。お会いするみなさん研究力・開発力本当に高い。

 

この手のものは、自力で実装したければそれなりの人的・時間的・金銭的リソースをそろえていく必要があります。

ただ、実案件になると、「自分たちの実現したいことが実現できればOK」ということが多いので、作りこみをやってくれるパートナー企業を紹介していたりします。自分達目標が「機械学習特化」というわけでなく、例えば「業界一のERPパッケージ開発のための差別化要因追加」「製品品質を機械の力で省力化」などであれば、外注してくれるパートナーさんと組むのが良いと思います。

餅は餅屋と考えないと、実担当者的には「終わらない残業」が始まる一方で、経営サイドからすると「予算積んで目的達成できるのであればそれでよいのに」という不幸なすれ違いも起きるので。

「やらない方が良い」というわけではなく、「どこにフォーカスするか」意思決定することで方向性が変わりますということを言いたいです。

 

まとめ

 様々な機械学習サービスの特徴と、実案件での経験談を書いてみました。図にまとめると下記のような感じでしょうか(以前発表したスライドを参照)。

f:id:NT-D:20160328111515p:plain

SaaS (API)はピンポイントだけど「期待した結果」までたどり着きやすく、PaaS, IaaS となると適用範囲は広がるが、「期待した結果」までの距離がある。

案件進めるときは以下のように進めることが多いですが、それぞれの強み、弱みを理解しながら、実案件では意思決定をしてみてください。

  1. 画像/音声などのインテリジェントな処理の場合、API (SaaS) でできるか検証してみる
  2. 数値解析系なら Tool (PaaS) 試してみる
  3. 無理なら作りこみ or 外注

 

 

個別に作りこみが必要な場合には

 

 で、外注できるパートナーさんってどこさ?って話になるのですが、現在リクルーティングしており、4月末ごろに発表予定です(このブログに記載します。)

画像/文字列/音声解析分野で、製品品質要求の厳しい大企業と案件をこなしてきたパートナーさんのソリューションや技術を紹介していきます。

 

それでは、良い1日を!