はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Visual Studio 2017 Update 3がリリースされました。

blogs.msdn.microsoft.com

Visual Studio 2017 Update 3 (Ver 15.3.0)がリリースされました。

 

サイトからダウンロードでもいいのですが、Visual Studio 2017をインストールしたときにインストールされるVisual Studio Installerを立ち上げるとUpdate 3の更新を求められるので、サクッと更新してから画面上の[変更]ボタンを押して各種必要なものをUpdate 3に置き換えていくのがいいでしょう。

とはいえ、UnityとかはUpdate 3よりも更新が進んでいるので、必要に応じて、Visual Studio Installerからインストールした後に、プログラムの追加と削除からUnityをアンインストールしてUnityのサイトからUnity 2017をダウンロードしてインストールしてあげるといいでしょう。

それでは、よりVisual Studioライフを!

 

HoloLensのWorld-LockとBody-Lock

20170809_175529_HoloLens

World-Lock

HoloLensでMixed Realityアプリを作成するために、Unityでオブジェクトを配置するとWorld-Lockといって周りの空間にオブジェクトが配置されます。

そのため、ほかのところを向いてオブジェクトの方を向くと、きちんとオブジェクトはさっきの場所に居続けます。

また、周りの空間に対して配置されているので、シースルーで見える風景とCGのオブジェクトがずれることがなく、そのため3D酔いのようなことが起こりません。

ここまでであれば、すごく性能の良いARっぽい感じですが、HoloLensがMixed Realityと呼ばれるのは、現実世界のモノの向こう側にCGのオブジェクトを配置すれば、きちんと見切れてくれる、つまり、現実のモノでCGの一部や全部が隠れてしまうという効果が実現できるからです。

このように現実世界にモノを固定することをWorld-LockとHoloLensの世界では呼んでいます。

Body-Lock

一方、HoloLensのスタートメニューのように視点をかえるとそこに追いかけてくるようなものはBody-Lockと呼びます。Body-Lockでオブジェクトを配置することはあまりないかもしれませんが、例えば、動作状態やメッセージを常に視野の端にいれておきたいようなときがあると思います。

このようなオブジェクトの動きを実現するには、HoloToolkit-Unityにあるtagalongを使います。

Body-Lockの指定の仕方

Unityを立ち上げてHoloToolkit-Unityを設定するなど準備が整ったら、Unity標準の3DオブジェクトであるCubeとHoloToolkit-UnityのUITextプレハブを配置します。

UITextプレハブのInspectorで[Add Component]ボタンをおして、「Billboard (Script)」と「Tagalong (Script)」を追加します。

Billboard

Billboardはオブジェクトの表示面が常に視野を追従するようにするスクリプトです。UITextプレハブは配置直後はテキストが正面を向くようになっているので、Billboardを追加して[Pivot Axis]プロパティに「Free」を指定することで常にテキストが正面を向いてくれて読みやすい状態をキープできます。

Tagalong

Tagalongはオブジェクトが視界から外れたら視界の中に動かすためのスクリプトです。追加直後のプロパティ値から次のように値を指定します。このあたりは好みに応じて値を変更してみてください。

プロパティ 設定値
Tagalong Distance 1
Minimum Horizontal Overlap 1
Minimum Vertical Overlap 1
Minimum Tagalong Distance 0.5

このように設定すると次のサンプル動画のような動きになります。

デバッグ時の数値を確認するような場合にも使えると思います。

Microsoft Cognitive Service - Bing Speech API関連まとめ

Microsoft Cognitive Service - Bing Speech APIを使う方法はいろいろサンプルあり充実しています。

しかし、Translator Speech APIC#サンプルにはWebSocket使ったサンプルがあるのですが、Bing Speech APIにはサンプルがないという状況になっています。同じようにBing Speech APIにもWebSocketのC#サンプルがほしいです。

WebSocket-JavaScriptSDKを使う方法

github.com

[良いところ]

  1. Bing Speech APIのWebSocket APIを使っているので、希望の処理ができる

[残念なところ]

  1. Java Script (Type Script)なので、C#の知識だけではコードを理解できない

SpeechSDK(Microsoft ProjectOxford SpeechRecognition)を使う方法

docs.microsoft.com

[良いところ]

  1. .NET / Android / iOSSDKがある
  2. マイクからの入力で音声に認識してくれる
  3. 内部的にWebSocketを使っている感じ

[残念なところ]

  1. Androidはarmeabi用とx86用でarm64-v8a用とかarmeabi-v7a用がない
  2. SpeechSDK自体のソースが公開されていないため、C#でWebSocket使うときのコードの参考にできない
  3. .NET StandardやWindows Runtimeには対応していないのでHoloLensから使えない
  4. Xamarinに対応していないのでBinding Libraryの作成が必要(作成済)

REST APIを使う方法

docs.microsoft.com

[良いところ]

  1. REST APIなので環境や言語依存なくBing Speech APIの使い方サンプルとなる

[残念なところ]

  1. 音声発話が完了してから初めてAPIをたたくことができる
  2. 当然、WebSocketではない

ServiceLibrary(Microsoft.Bing.Speech)を使う方法

github.com

[良いところ]

  1. WebSocketを使ったC#アプリがつくれるSDKを使っている

[残念なところ]

  1. SDKのインターフェースが音声ファイルからのストリーム入力しかない
  2. .NET用しかない

まとめ

ということで、現時点でC#を使ってWebSocketで動作させようとするとTypeScriptのサンプルコードを読み解きながら、WebSocketのSpeech Protocolドキュメントを読み解かないといけない。

https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/websocketprotocol

しかしながら、Translator Speech APIに比べるとなんかプロトコル難しくないですか?

さらに、このドキュメントですが、本当にプロトコルのことしか書いていないため、System.Net.WebSocketsクラスを使ってC#でどう書けばいいかという点についての言及がないのです。

また、Connection Protocolでは丁寧にもhttps GETからWebSocketへのUpgradeというWebSocketのお約束レベルの記載まであり、そのあたりを知らないとSystem.Net.WebSocketsクラスでどうするの?といきなり躓いてしまう。

 

マイクロソフトに期待したいこと:

  1. SpeechSDKをオープンソースにしてくれる。しかし、Githubのissue経由でリクエスト(私以外にも何人かが依頼)した結果がプロトコルドキュメントの公開だった
  2. System.Net.WebSocketsクラスを使ったTranslator Speech APIサンプルのようなサンプルの公開
  3. もちろん、プロトコルを整理してTranslator Speech APIくらい簡単にWebSokcetで使えるようにしてくれるのでもいい。

開発者なので

f:id:hatsune_a:20170707235522p:plain

他が「ANAまたは他のスターアライアンス加盟航空会社」ってかいてあるのに、なぜかエコノミークラスのところは「スターアライアンス加盟航空会社」ってなっている。

これヒースローだけなんですよ。

今朝、ANAのプラチナサービスデスクに電話して条件に相違があるの?って聞いたら相違はないと。改善してもらうように言っておきました。

確かにANAスターアライアンス加盟航空会社なんですけれど、他と文章が違うってことは何か違うんじゃないかって考えるわけですわ。開発者って。

なにせ、ヒースローはUNITEDのロビーなので、条件合わないと・・・・ですものね、

 

でも、これ。こういうのって文章をコピペして違うところだけ直しますよね?

なんで抜けちゃったんでしょう。

 

Microsoft MVP Windows Developmentを再受賞しました

今年度から4月更新ではなく、既存MVPは7月一斉更新となりました。

それに伴い、2017年3月末までだった期間も6月末までに延長されていたのですが、本日、再受賞の連絡をいただき、また、ここから1年間、Microsoft MVPとして活動できることになりました。

一昨年から主な活動が自分の自社業務に直結してきたことに伴って、公に発信できる頻度が減ってきておりました。

じゃあ何をやっていたのかといえば、Microsoftと自社(および親会社)のエンゲージメント、そして、グループ全体の開発者さんにイントレプレナー的な活動を実践として見せ、発言として聞いてもらって、少しでも、開発者の意識を広げられるような風通しができるように活動してきました。

とはいえ、2008年に初受賞し、10回目となる今年は、2017年3月に日本でもHoloLensが発売開始され、ホロラボという会社の設立にもかかわることができるなど、自社業務は業務としてこれまで以上に活動の場を広げるとともに、Windows Mixed Realityについては自社の枠をこけて、色々活動を広げていき、また、どんどん情報発信していきたいと思っています。

また、よろしくです。

HoloToolkit-Unityが5.6.1f1対応になりました。

HoloLensでのMIxed Realityアプリ作成に不可欠なUnity。そのUnityでMixed Realityアプリを作成するときに便利な機能を提供してくれるのがHoloToolkitです。

最新のUnityは5.6.1となります。そして、HoloToolkitが5.6.1f1対応になりました。

github.com

アセット自体は

https://github.com/Microsoft/HoloToolkit-Unity/releases/download/v1.5.7.0/HoloToolkit-Unity-v1.5.7.0.unitypackage

こちらの方からダウンロードできます。Unityで使うならアセットの方が使いやすいかな。

Unity自体はこちらから。

store.unity.com