Hack & Sports

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

Skype SDK 開発のドキュメントが辛いので妄想を膨らませる

前回のブログではSkype Developer Platform でできそうなことを紹介してきました。 nt-d.hatenablog.com

「めちゃワクワクしているのでガンガン触って共有していこうかなと思います」という文末で終わっているくらい興奮していたようです。コンセプトは素晴らしいですからね、もちろん今でもワクワクしています!

ただ、今の僕は「開発用ドキュメントが辛いから開発チームにガンガンPull Request送ろう!」とメラメラ興奮しています。

もくじ

このブログではこの気持ちに至った経緯をいくつかのまとまりで紹介していきます

  1. ワクワク開発を進めようとしてドキュメントを確認し始めたあの頃
  2. ドキュメントが辛い・・
  3. Skype開発のために必要なことの整理
  4. 作りたいものの妄想
  5. 次回以降の構成紹介

1.ワクワク開発を進めようとしてドキュメントを確認し始めたあの頃

前回Skype開発の概要を見たときには色々な感想を抱きました。

  • チャットはECサイトのO2O文脈で役立ちそう
  • オンライン英会話とかで使えそう
  • その際のサーバーリソースをSkype側に任せられるから楽そう
  • 途中までBotを使って、難しいやり取りが発生したらSkypeに引き継ぐとかできたらよさそう

よし!ドキュメントを見よう!!

2.ドキュメントが辛い・・

1つ前のblogでSkype開発のページを紹介しました。そのまま[Get Started]をクリックしてスタートしようとしたんですね。

Skype for Business Online uses Azure Active Directory (Azure AD) to provide authentication services that your application can use to obtain rights to access the service APIs. To accomplish this, your application needs to perform the following steps:

•Register your application in Azure AD. To allow your application access to the Skype Web APIs, you need to register your application in Azure AD. This will allow you to establish an identity for your application and specify the permission levels it needs in order to access the APIs.

•Add a sign in feature to your app. When a user visits your website and initiates sign-in, your application makes a request to the Microsoft common OAuth2 login endpoint. Azure AD validates the request and responds with a sign-in page, where the user signs in. After consent flow the UI redirects the user back to your application. If authentication and authorization are successful, Azure AD returns a token and grants access to SfB Online and identifies the current signed-in user.

•Call Skype Web APIs. Your application passes an access token to the Skype Web APIs to authenticate and authorize your application.

なるほどなるほど。認証基盤としては Azure AD を使用する。そして、アプリにOAuthのSign in機能を付けて、API callしろって感じですね。facebookとかと同じような感じ。Learn moreってリンクがあるのでそこをクリックするとこのページに行きます。

アプリ登録とかはOAuth関連のプログラム書いたことある人にはまぁわかる内容なのですが、、Update your codeからがちょい辛い。そもそも僕まだcode書き始めてないからupdateって言われましても・・あと、項目の並び順がちょっと・・・

まぁサンプル見ればいいかと思い、最初のページにリンクされているGitHubのサンプルからskype-web-sdk-samplesというやつを選んでみる。Setupのリンクがあるけど、たどるとこれまたセットアップ方法がわかりづらい・・

「なんなんすかね、これ。Developerに使ってもらう気あるのかね。Getting Startedは何も考えずにスタートできるようにしようよ?」という気持ちがふつふつと沸きはじめ、このあたりから「開発用ドキュメントが辛いから開発チームにガンガンPull Request送ろう!」とメラメラ興奮しはじめました。

3.Skype開発のために必要なことの整理

僕のほうではガチャガチャ操作をして、実際にサンプル動作させることは成功したので、現状必要なことをまとめます。

Skypeの種類の確認

Skypeというブランドには2つの製品があります。個人向けのSkypeと企業向けのSkype for Businessです。そして、現時点(2016年7/23)でSkype Web SDKが対象にしているのはビジネス用途のSkype for Businessです。

開発前の準備で必要なこと

Skype Web SDK開発には以下の3つが大枠必要です。

  1. Azure AD (認証基盤)
  2. Office 365 開発者アカウント
  3. WebサーバーとWebアプリ

1は認証/認可用に使います。認証・認可周りを任せられるのはうれしい。このあたりはfacebook開発と似ています。

2はSkype for BusinessをはじめとしたOffice関連のクラウドサービスです。API呼び出し先が必要なので、用意が必要です。こいつを用意するとチャットも音声通話もうまいことやってくれるので、自分でチャット基盤(アプリ/インフラ)用意しなくていいのは最高!

3がないとアプリ作れないので、これは必須です。

アカウント作成方法とかは今後のブログで解説します。基本無償なので、始める分には敷居が低いです。

4.作りたいものの妄想

さて、ちょっと話をそらします。僕がプログラミングつらい時には「筋トレみたいなものだ」と思うようにしていて、そのあたりをシェアします。多少話を端折るので論理的飛躍があるのはご了承くだされ。

僕は今トレーニングにはまっていて、8月にはトライアスロンの大会に出ようと思っています。 トレーニングのきっかけは、友達の奥さんに「シュレックみたいな体していますねw」と言われたことに始まります。 https://images-na.ssl-images-amazon.com/images/I/5152QKZZB1L.jpg

えぇ、盛大に腹が出ていました。。そして、悔しい思いをしました。

悔しいのでジムに通い始めましたが、つらい。「なんなんすかね、これ。」とやめたい気持ちになりました。どうにかモチベーションを上げるために始めたのが「妄想」です。

海外の同僚の姿を思い浮かべると、胸板がっちりで腕が太いので、Tシャツ+ジーンズという適当な格好でも超かっこいいです。つらい度に「ああなったらモテるだろうなぁ」と妄想し、モチベーションの維持には成功しました。現状2kmくらい泳げますし、時速14kmくらいで走れるし、90kgくらいのベンチプレスもできるようになりました。

何が言いたいかというと「開発も筋トレと一緒で、辛くなったら将来の輝かしい姿を妄想して乗り越えよう!」ということです。僕は皆さんがつらくならないようにSkypeチームにpull requestを送りますが、もし、一緒のタイミングで開発を始めた人でつらくなった人は、ぜひ、妄想をしてみてください。Skype SDKでできることはすごいし絶対面白いですから!

ちなみに僕の今の妄想は「英会話アプリにSkype SDKを組み込む」というものです。僕が毎日お世話になっているDMM英会話はいい感じの英会話アプリです。ヨーロッパ、アフリカ、アジア、北米・南米など色々な国の人と話す練習ができます。ただ、Web画面で予約をして、Skypeアプリで授業を受けているので、ちょい面倒です(ほかの英会話アプリも同じ感じです)。これを予約もSkype通話もWebでできたら便利だよなぁと思っています。色々わかってきたら提案もしに行ってみたいw なんか楽しくなってきました。これでドキュメントは乗り切れます!

5.次回以降の構成紹介

次回以降はだいたいこんな感じで進めます。

  1. Skype開発大枠解説 + 必要な準備解説
  2. Login周りのコードの解説(javascript)
  3. Skype SDKでのログインの解説
  4. Skype SDKでのAPI Callの解説(javascript)

なお、基本的に英会話アプリを作るための前提で進めます。題材ないとブログつまらなくなるので。 ではでは、引き続きよろしくお願いします~!

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方法)