de:code 2017 Day1 ちょっと遅くなった報告

まずは「KeyNote」……福島から向かったので、20分ほど遅れたためサテライト部屋で中継を見ていました。
一番盛り上がったのは、やはりHoloLens開発者「Alex Kipman」の登壇でした。

KipmanはKinectの開発者でもあり、MicroSoftデバイス開発のイノベーターという、ガジェット好きに限らず、開発者からも注目される方です。

当然、HoloLensに関する講演だったわけですが、「日本で開発されたHoloLensアプリで刺激を受けるものが多い」とありがたい発言があったり、
Kipmanの後のHoloLens活用事例で凄かったのが、小柳建設さんが業務トレーサビリティやお客様との確認に建築3Dモデルとともに活用している事例が公開されたのですが、
その中で凄いと思ったのが、事案終了後にそれまでのデータを保存したHoloLensをお客様へと引き渡していました。
小柳建設と日本マイクロソフトが、「Microsoft HoloLens」を活用したプロジェクト「Holostruction」の推進で連携

KeyNote全般で語られたのは、Cloud、AI、Mixed Reality、全ての環境へといった、
これまでのCloud Fast Mobile Fastからさらに進んで「Intelligence Cloud Intelligence Edge」でいくという意思表示でした。

さて、KeyNote以降は各セッションです。

・「こんなに違う!Unityアプリケーション講座」
現在HoloLensアプリの9割がUnityで作成されているとのことです。
Unityで作成する際の基本的なお話でした。

・「開発者もクリエーター。アプリ開発に捧ぐ新テクノロジ~Windows最新情報~」
Windows Creators Updateで追加された機能やWindows上でLinux(Dockerコンテナ)やiOS開発(Xamarin Live Player)を行えます。
Xamarin Live Playerは、今まではMac本体がないと開発できなかったiOS開発がMac本体なしでiOS開発が可能になるそうです。
appleに確認しており、この方法での開発は問題ないとのこと、ただし、appleストアへの登録や開発者登録にはMac本体が必要だそうです。
Cortana SKill Kitを使用すると、Bot Frameworkなどが使用できる。
など、少々駆け足で Creators Update から使用可能なAPIの紹介などでした。

・3セッション目はちょっと休憩もしたかったのでEXPO会場を巡っていました。
会場には各社のMR端末が展示されていました。
その中に3Glasses社のMR端末(S1 Blubur)も展示されていました。
今後もしかしたら開発端末の一つになるかもという事です。
Acerの端末を眼鏡を付けたままかぶらせてもらいましたが、眼鏡の蔓が当たるものの、そのまま装着可能です。
ただ、画面表示なしでの装着のため画面表示された際にどう見えるかまではわかりませんでした。
持った感じで一番軽かったのはAcer、重かったのは3Glasses、カッコよさ的にはHPかな?

・「Windows 10 Mobile 端末の展開と活用のキモ」
さて、個人的に一番気になっているWindows 10 Mobileのセッション
Lumiaの製造は終了しているが、MSとしては今後もMobileへの注力はやめないとのこと。
IoT,Mobile,PC,XBox,Surface HUB,HoloLensと全方位開発できる、OSも対応していく
Windows 10 Mobileはコンシューマというよりは企業向けの引き合いが多い。
統一されたUI、O365などとの連携相性の良さ、セキュリティの高さが評価されているとのこと。
企業で展開する際に、Windows 10 Mobileのプライマリアカウントは、途中で変えれないのでAzureADに設定しないと端末管理が大変。
ちょっと気になったスライドが、Creators Updateになった際にW10Mで「イーサーネット接続の設定」というのがあり、もしかして有線接続もできるのか?と気になりました。
企業向け管理で必要なMDMやミラキャストやミラーリングとは違い、ContinuumでPCのように作業も可能
プロビジョニングを使用して端末の設定を作成して配ることも可能
ログの収集昨日もUWPアプリで提供しているので、端末管理には便利
開発向けというよりはアーキテクト、管理者向けではありましたが、今後を期待したいです。

・「やっぱり”What’s New”も知りたい! 進化を続けるUWPの最新Update情報」
今後Windows10のアップデートは年2回のメジャーアップデートになる。
UWPリリース当初は、サイドバイサイドが難しいやWin32はなかったが、現在はApp InstallerやDesktop Bridgeを利用したWin32アプリのUWP化がああるので、範囲が広くなっている。
もちろんDesktop BridgeのアプリはPC専用ですが。
開発者モードにもデバイスポータルが追加され、ネットワーク経由でデバイスに接続し診断などができるようになった。
(接続の際、証明書エラーが出るけど、そのまま無視して表示すること)
VS2017に関しては、必要な機能、コンポーネントを選んでのインストールがしやすくなった。
VS2017でまずは抑えてほしいライブラリ
・Template 10
・UWP Community Toolkit
・Windows Template Studio
Creators Updateで強化されたAPI
・Windows Ink
・XAMLコントロール
・Windows Mixed Reality
・Bluetooth LE
等多数
Creators Updateでアプリインストールに関してストリーミングインストールやコンポーネント化インストールに対応、ただし、ストアでの公開は現在限定されている。
次のWindows10アップデートではeffect等のAPIが強化される、これは現在MSが提案している新しいUIを実現するための強化
さらに先では「.NET Standard」により、Windows,Android,iOS,Cloud,Linuxも共通コードで行けるようになるんではないか

というDay1でした、Day2に関しては別記事で。

Windows 10 Mobileで色々繋いでみる

この記事はWindows 10 Mobile / Windows Phone Advent Calendar 2016 10日目の記事です。

Windows 10 Mobile で GamePad

さて、最初はGamePadです。
Windows 10 Mobile アプリを開発する際に外部入力機器を使用したいという時があります。
入力機器を制御するUWP用APIとしては、Windows.Gaming.Input または Windows.UI.Core.CoreWindow を使用することとなります。
Windows.Gaming.Input
Windows.Gaming.Inputは内部的にはDirectXに含まれるAPI、XInputをラップしたUWP用APIです。
XInputに対応したGamePadであれば使えるのですが、困ったことに一般的に販売されているモバイル向けGamePadは非対応なため、USB HID 機器として個別に機器IDをアプリ内に登録して、Windows.UI.Core.CoreWindow でキーボード等のように個別にコードを搭載することになります。
モバイル向けでなければUSB接続でXInput対応のGamePadはあるのですが、せっかくContinuum機能もあり、大きな画面に出しながらプレイするならBluetooth接続で使いたいところ。
Bluetooth接続での利点はもう一つあって、最新のW10M端末であればUSB OTG(USB機器どうしを直接接続する規格)に対応していますが、対応していないものや、USBのポート数が足りないなどに縛られません。

Xbox ワイヤレス コントローラー

自分は日本マイクロソフトのWEBstoreで購入しましたが、Amazon等でも取り扱いがあります。

XBox One用のBluetooth接続にも対応したXInputゲームコントローラーです。
動作確認にはUsing your Xbox One controller in a UWP appを使用させていただいて、動作を確認しました。

・Bluetooth接続でつながっています。

そして、動作することを確認しています。

ELECOM U3HC-DC03B

HP Elite x3で有線Continuumで接続できることを報告していますが、この機器はUSB HUB機能も持っているので、複数の機器を接続するのに便利です。
購入最初にテストした際はFullHDで表示されていたのですが、次の週にテストしようとしたところ720P表示に解像度が下がってしまいました。

ThinkPad トラックポイント・キーボード

こちらはBluetooth版ではなくUSB接続版ですが、しっかりトラックポイントも使用できるので、キーボード&マウスとして使用できます。

ContinuumでGamePad確認

きちんと動くので、今後Continuumに対応したUWPゲームでは対応しておくのがいいと思います。

CENTURY CBTTR-AV2


音声送受信専用Bluetooth機器ですが、aptXにも対応しているのでAnniversary UpdateされたW10M端末でもaptX使えるかなと思うのですが、機器側でもW10M端末側でも使用しているのか判断つかないので、通勤時に使用する際に好きなヘッドフォンを使うのに便利くらいでいいかもしれません。

このほかにもUSBマウス、USBメモリなど接続しましたが、問題なく接続できました。

Windows 10 Mobile 端末は個人でも法人でも使用して不足を感じることは少ないのではないかと思います。
もちろんゲーム関連に関してはまだまだ少なく、これからという部分はありますが、Windowsとの親和性は高く、セキュリティも高い端末ですので、ぜひ次の買い替えの際には選択肢に考えていただければいいなと思います。

そして開発者としてはUWPを進めることで、PC/Mobileともに連携の高いアプリが作れますので、ぜひUWPアプリを作りましょう!
UWPなら今話題のVRもマイクロソフトのHoloLensにも対応できるうえにXBoxにも対応できますよ。

UWPはいいぞ!

Windowsストアでのマネタイズ入門

#Surface チャレンジモニター で借りた機体で開発してみた

壁紙だけとなると何なので、開発系な自分としては当然のように #VisualStudio で #UWP アプリの開発を試すわけでして

・まずはインストール!
WP_20160519_13_00_45_Pro

・インストール後のアカウント認証でHiDPI非対応なのかずれが、、、
WP_20160519_13_30_14_Pro

・開発中だったネタをVisual Studio Team Servicesで引っ張ってきてこつこつ
WP_20160521_20_18_38_Pro
Windows 10 Mobile Emulatorもきちんと動いています。

重い3Dの開発ということでなければ、UWPでもAndroidでもXamarinでも遠隔開発でもなんでも行けると思います。

ただし、デスクトップと違って内臓SSDが256GBまたは512GB(今回お借りした機体は256GB)ですので、あまりアプリケーションを大量に入れたり、大きなデータを中に持つという開発には少々向きません。

MicroSDカードスロットはありますので、128GBなどの大容量SDカードを使用することで、データ領域は増やせるとは思いますが、あまり頻繁な書き換えには速度的にも向きませんので、NAS を用意するなど工夫は必要でしょうか。

Syncfusion Essential Studio に COMMUNITY LICENSE が!

Syncfusion 社の「ESSENTIAL STUDIO」に≪COMMUNITY LICENSE≫が追加されました!

ESSENTIAL STUDIOって?

ESSENTIAL STUDIOはアプリを開発する際に使用可能なコンポーネントライブラリです。
android、iOS、Xamarin(Android,iOS,Forms)、JavaScript、ASP.NET、ASP.NET MVC、Windows Forms、WPF、WinRT、UWP、Windows Phoneの各種プラットフォームに対応しています。

何ができるの?

自作しようとすると面倒になりがちな「チャート」や「カレンダー」、「ダイアグラム」、「PDF」などをコンポーネント提供してくれています。

COMMUNITY LICENSEって結局なに?

・個人開発者
・年間売り上げ100万$(約1億円)以下の企業
・使用可能な開発ユーザー5人まで
上記の条件を満たしていれば「無償」で使用可能なライセンスになっています!
しかも、「商用アプリも可」というすごいライセンスです。

なんでそんなすごいライセンスが提供されたの?

マイクロソフト社が「Visual Studio Community」という開発ソフトの無償ライセンスの拡充を行ったことに触発されて、Syncfusion 社が提供に踏み切ったそうです。

使うにはどうするの?

COMMUNITY LICENSEのページ≫からユーザー登録をしてダウンロード後、インストールしてください。
専用のアンロックキーが提供されますので、キーの入力で使用可能になります。

さて、さらにありがたいことにSyncfusion 社は≪METRO STUDIO≫というフリーのアイコンツールも提供していただけています。
アプリの作成時に必要な各種アイコンはこれでほぼ事足りますので、ぜひ一緒に使用しましょう。

そして最後にVisual StudioXamarinを利用して、ぜひアプリを作りませんか?

Windows Phone/Windows 10 Mobile に関するゲームパッド考察

ゲームパッドを使用することができるのか?

さて、「Windows Phone/Windows 10 MobileでGamePadは使用できるのか?」ですが、結論から先に言っておきます、条件付きで可能、ふつうは無理です。

WindowsPhone8/8.1用として実は「MOGA Game On Anywhere(以下 MOGA)」が出したコントローラーがBTを利用した(おそらく)シリアル通信的な方法で、使用できるようにしていました。
ただこれは専用SDKが提供されない限り使用できないという形で、更新をしていない状況から今後使用できることはないだろうと思います。

次に目を付けたのは「Windows8.1 UpDate2(以下 WP8.1UP2)」から解禁された「Bluetooth HID Profile」の存在です。
HID(Human Interface Device)、USBにもありますが所謂入力機器の受け取りができる機能です。

さてこれを実験だと思ったのですが、残念ながら手持ちの端末には「WP8.1UP2」が降りてこないという状況でしたが、この機能は「Windows 10 Mobile(以下W10M)」でも使用可能になりました。

これはやるしかないということで、いろいろ仕込んでいたのですが、まずは先だって開催された「Microsoft MVP Asia Meet Up」イベントに参加した際にMADOSMAをW10Mにアップされた方が持ってきているよなと思い、接続を試させていただくことにしました。

結果

BT機器があるということは認識するもののペアリングは却下されるという状況でした。
もちろんイベントの隙間を利用した短時間での確認のため、これだけで出来ないということは確定できないですが、正直どうしようと思いました(汗

次の一手

wp_ss_20150411_0003
あきらめるわけにもいかないので、1320にInsider Programでアップデートをかけて実験という形にしました。

wp_ss_20151211_0003
こちらでも認識(SS取れなかったですがキーボードHID認識のようです)はしました。

wp_ss_20151211_0004
そして、ペアリングも完了!

なら使うぞ!

UWP向けにAPIが追加されているのですが、その中に「Windows.Gaming.Input」というそのものずばりなAPIがあります。
で、APIを確認している限りではMobileに対する縛りはないようなので、「これは使える!」と実験開始

いきなりモバイルというわけにもいかないのでまずはDesktopUWPで実験、、、困ったことにWindows上では認識しているもののUWPのAPI上では存在しないというのが返ってきました。
とりあえずAPIの確認のためDevice転送でチェックしたところAPIはそのまま通りました。
機能宣言は「AllJoin」「Bluetooth」にはチェックを入れたものの、HIDに関する項目ないなこれ(汗
API条件に宣言しなければいけないようなことは記載されていないので、API自体はチェックなしでもエラーなく動きます。

さて、「Windows.Gaming.Input」ですが、内部的には「XInput」ではなかろうかと思います。
となるとMoga2では認識しないですよねこれ、、、
手持ちにXInput対応機器がないので、自分には検証しきれませんでした。

というわけで最初に書いた通りなのですが、「条件付きで可能 / ふつうは無理」が今のところの結論です。
もちろんもっと深く探っていけば可能になるんではと思ってはいます。
もう少しさっくり対応できるようになっていると「A端末とかi端末で出来るのに、WP出来ないから~」とは言われなくて済むかなーと

まあ、解放できない理由は、セキュリティーとか考えるとわからないでもないので………

というわけで、「ゲームコントローラー周りの対応状況をぼそっと公開してくれないかなー>MS様」等と書くためだけのネタ記事でした。

「Windows 10 Mobile」は良い端末ですし、まだまだこれからさらに良くなっていくことでしょう。

おまけ

さて、これだけで何なのでちょっとおまけを

WP_20151212_10_16_39_Pro
こんなのを入手したわけですよ。
ええ、ご想像の通りです…………「1320はUSB OTG非対応
何をつなごうが全く認識しません(;´Д`)

Windows Phone / Windows 10 Mobile Advent Calendar 2015」に参加しています。

裏ではいろいろ仕込んでるんですが、公開レベルに持っていけなくてこんな記事になりましたが、ほかの方の記事には良いものがあるので、是非一読を!

※追記(2015/12/12/21:30)

DirectInputじゃダメなの?

もちろんこうなれば「DirectInput」をラップ実装してというのは頭の片隅にあったのですが、XInputをストアアプリ荷を調べていた際に「XInput and DirectInput」というMicrosoftの公式ページを見つけましてそこに

Note Use of legacy DirectInput is not recommended, and DirectInput is not available for Windows Store apps.

レガシーでストアアプリには対応していないと書かれていました。

VS2015でUniversal Windows Platform アプリを作成する際の注意点

Visual Studio 2015でUniversal Windows Platform アプリを作成する際にWindowsの「設定」で「開発者モード」を有効にしていないとXAMLを編集する際にデザイナのExtensionが登録できないためエラーを起こします。

System.Exception
パッケージを登録できませんでした。
エラー 0x80070005: 要求を処理しているときに次のエラーが発生したため、windows.capability 拡張を登録できませんでした: アクセスが拒否されました。

このエラーですが、「開発者モード」を「有効にしていない」という形ではエラー表示されないため、非常にわかりにくいエラーです。
Windows8.1用のXAMLデザインはエラーが出ず編集可能なので混乱のもとになりそうです。

開発者向け設定

Windows10で「Universal Windows Platform」

Microsoftによる開発者イベント「Build2015」と日本マイクロソフト主催の「de:code2015」が終了しました。

そこでたびたび出てきたWindows10における開発に関する言葉は、「Universal Windows Platform(以下 UWP)」でした。

「Universal」といえば、Windows8.1とWindowsPhone8.1用ストアアプリ開発として「Universal Application」という言葉が生まれ、両環境共通のコード(一部は専用)で開発が行われ、連携もするというのがあります。

「UWP」はこれをもっと踏み込み、「One Windows、One Store」を実現するための開発定義のようです。

Windows10とVisualStudio2015を使用して、Windows10、Windows10 Mobile(WindowsPhone)、Xbox、Windows IoT、これらに一括で提供できるように、さらに、Android、iOSのアプリケーションを「UWP」としてリコンパイルする機能がVS2015に搭載され、デモの限りではObject-CがVS上でコンパイルされ、「UWP」アプリとしてパッケージされる、Androidは「NDK」だとおもいますが、同じようにコンパイル、パックされていました。

もちろん、ストアアプリだけがVS2015の機能ではなく、制限はあるような気がしますが、Win32ベースのアプリも「UWP」にできるような部分もありました。

当然XamarinやApache Cordova等を利用したマルチデバイスへの開発も力が入っていました。

また、マイクロソフトのVR「Holo lens」も着々と開発が進んでいるように見受けられました。
いつごろ出てくるのかは大変楽しみなVRデバイスです。

さて、国内に目を向けると先だって「de:code2015」が行われ、「Build2015」での発表を受けた技術解説などが行われたようです。

自分は参加できなかったためTLを追いかけていたかぎりでは、大きなサプライズはなかったようですが、MouseComputerがこの夏発売予定の「MADOSUMA」に「Windows10 Mobile」をインストールしたものを展示していたようです。

発売時はWindowsPhone8.1のようですが、検証を重ねて「Windows10 Mobile」を判断するようです。

間もなくWindows10が走り出すと思われます、そして「Universal Windows Platform」により、10億デバイスへのリーチが可能になるかもしれないです。

「Windows10 Mobile」は少し後になるようですが、そろったときに面白い相乗効果が生まれることを期待していますし、当然自分は開発へ踏み込んでいきます。

まずはストアアプリの開発を通じて開拓してみませんか?

MWCでWindowsPhone日本発売の光明が増えました

Mobile World Congress(MWC) 2015でfreetelと京セラの端末が公開

マウスコンピュータに続いて国内メーカーから発表がありました。

freetelブランドの端末はMWC前にプレスリリースが行われました。
最新 Windows Phone OS 搭載スマートフォン、 2015 年夏までに国内発売予定のお知らせ
なんと夏までに出すという表明です。
freetelは日本向けのSIMフリー端末販売会社なので、日本向け端末が確定したことになります。

京セラはプロトタイプとして高耐久端末にWindowsPhone8.1を搭載したようです。
engadgetさんのレポート記事がありました。
京セラがWindows Phone 8.1スマホをMWC出展。『Windows Phoneは高耐久と親和性が高い』
元々のAndroid端末にWP8.1を搭載しましたという段階のようで、端末のボタンがAndroidのままですね

AcerからWindows10 for Phones対応確約端末が発表(日本発売未定)

PC watchさんにAcer社がWP8.1端末が出すとの記事が出ました。
Acer、79ユーロでWindows 10へのアップグレードを保証したスマホ
端末としては欧州向けローエンドですが、Acer社は日本向けにAndroid端末をブックオフ経由で発売していることを考えると、もしかして選択肢が増えるということかなと思いたいところです。

Microsoftからは新端末(日本発売未定)

MWCではMicrosoftからLumia640/640XLが発表されました。
端末としてはミドルレンジの端末になるようです。
追加の特徴としては「Office 365サブスクリプション1年分」と「OneDrive 1GB 1年分」が標準でサポートされ散ることでしょうか。

開発者に向けて

それぞれの端末はWindowsPhone8.1ではありますが、Windows 10 for Phonesが視野に入っているようで、時期が来ればOS更新が降ってくることになると思います。
Windows 10 からはさらにデスク/ノートOSとモバイルOSの融合が進みます。
A社やG社のOSに比べても使用率の大きなWindowsというデスク/ノート向けOSと連携するには非常に心強い環境が整ってきます。

もちろんデスク/ノート向けがそのまま動くということはないですが、いわゆるWindowsストアアプリであれば、ユニバーサルアプリとして、モバイルにもゲームコンソールにも展開可能になり強い連携を生み出すことができる基盤が、クラウド(Azure)も含んでOneSolution/OneStoaが実現してきます。

VisualStudioによるストアアプリ、マルチデバイス開発はC/C++/C#/HTML5(JavaScript)/F#等で可能になってきていますし、UnityやUnreal Engineなどによるマルチデバイス開発もできます。

開発の親和性も非常に高い環境ですので、ぜひ開発者の皆さんには飛び込んできてほしいと思います。

Unityでuniversal Appのメモ

Unityスクリプト上でBackKeyは「KeyCode.Escape」になる。
でもあんまり行儀のいいコードでは無いような気がする

#if UNITY_WINRT
        if (Input.GetKey(KeyCode.Escape))
        {
            Application.Quit();
        }
#endif

※これは間違い
Main.csにBackキーをとるためのコードをMainPage関数に追加したものの、発生しない模様

		public MainPage(SplashScreen splashScreen)
		{
            …
#if UNITY_WP_8_1

            Windows.Phone.UI.Input.HardwareButtons.BackPressed += (sender, e) =>
		    {
                Frame frame = Window.Current.Content as Frame;
                if (frame == null)
                {
                    return;
                }

                if (frame.CanGoBack)
                {
                    frame.GoBack();
                    e.Handled = true;
                }
		    };

#endif
		}

傾き検出
 全部テスト
 いくつか機能しない、実機では「Input.gyro.enabled」をtrueにしていても「False」と表示される

	void Start () {
        Input.gyro.enabled = true;
        Input.gyro.updateInterval = 0.01F;
	}
	
	// Update is called once per frame
	void Update ()
	{
        var gyroText = "enabled : " + Input.gyro.enabled.ToString() + Environment.NewLine;
        gyroText += "attitude : " + Input.gyro.attitude.ToString() + Environment.NewLine;
        gyroText += "gravity : " + Input.gyro.gravity.ToString() + Environment.NewLine;
        gyroText += "rotationRate : " + Input.gyro.rotationRate.ToString() + Environment.NewLine;
        gyroText += "rotationRateUnbiased : " + Input.gyro.rotationRateUnbiased.ToString() + Environment.NewLine;
        gyroText += "updateInterval : " + Input.gyro.updateInterval.ToString() + Environment.NewLine;
        gyroText += "userAcceleration : " + Input.gyro.userAcceleration.ToString() + Environment.NewLine;

        guiText.text = gyroText;
	}

GyroTest

Unity-chanの表示がおかしいですが、これはWindowsPhone8.1(実機)がカスタムシェーダーに対応していないためです。
マテリアルを改良または取り去れば、きちんと表示されるはずです