読者です 読者をやめる 読者になる 読者になる

はつねの日記

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

Xbox One Sがきた!

Hardware Xbox

E3で発表ありましたね。

現行に比べて本体サイズ40%小型化。

最大2TB HDD搭載。

4KテレビとHDRに対応。

299ドル(500GBモデル)~

HoloLens Wave 3

HoloLens

image

HoloLensのDeveloper EditionはWave 1~Wave 4、そしてその後に追加でWave 5という形でいくつかの発送ブロックに分かれて順次発送されています。

残念ながらWave 5時点ではまだ米国+カナダ限定ですが。

 

1つのwaveが2、3カ月かかるのかと思っていたら、3/30からWave 1が始まって、5月中くらいにWave 2。

「あれ?1.5カ月とかはやい」と思っていたら、wave 3がもうはじまりました。

もしかして、当初の予想だとwave 5は来年かと思っていたんだけれど、wave 4やwave 5の割り当てでも比較的早くきそう?

マイクロソフトのモバイル戦略

Windows10

弊社アプリをスマホで使いたいとWindows 10 Mobile機をご購入していただけたり、短期間であれば弊社からお貸出ししてトライアルしてもらう場合が最近増えております。

自社保有機器といっても開発用なので手持ち機器だけではどうしても対応しきれず(予想外の引き合いの多さで緊急で予算確保のための折衝中→なんとかある程度の台数を購入できそう)端末メーカーさんにご協力いただきトライアル用端末を貸していただいていたりもします。

 

そんなお客様の中でも特にWindows 10 Mobileを気に入っていただき、UWPアプリの作り方などもご質問頂いたお客様からこんなことを言われました。

 

Windows 10 Mobileはすごくよいし、自分たちもアプリを作っていくけれど、あとは心配なのはマイクロソフトの方針だね。」

 

最初、何をおっしゃっているのかと聞き返そうと思いましたが、思い当たる節があったので次のように回答しました。

 

マイクロソフトスマホ事業を縮小したのは、自社でつくらなくても様々なメーカーがWindows 10 Mobile機を作り出荷し始めたので、Lumiaから移籍した技術者を元の鞘に戻しただけですよ。Mobile First, Cloud Firstって方針は変わっていません。Windows 10Windows 10 MobileはOSコアは同じですし、そのうえで動作するFrameworkも同じ.NET Coreだし、UWPアプリもどちらでも動くし、あえてデスクトップとモバイルと分けて情報発信しないでいいのでモバイルって言葉が話されなくなっているだけですよ。」

 

この説明には、すごくご納得頂けたようで、Windows 10 MobileがなくならないこととUWPやっていって無駄にならないことがわかってすごく満足な笑顔を頂いた。

de:code 2016で感じた違和感と期待感

Windows10

2016/05/24~25にザ・プリンス パークタワー東京で開催されたde:code 2016に参加してきました。

サンフランシスコで開催されたbuild 2016参加直後から「de:codeはbuildの雰囲気をよく出している」という話をしてきました。

de:code 2016もその期待を裏切らないすばらしいものでした。

 

そして、同時に「違和感と期待感」という感想を私に抱かせました。

 

違和感の発端は初日キーノートです。

すでにキーノートはネットにも公開されているので、まだ視聴してない方はぜひ視聴してみてください。

channel9.msdn.com

参加された方や視聴された方は、もうなぜ私が違和感を感じたのか共感していただけるのではないでしょうか。

 

今までの日本マイクロソフトの技術系年次イベント(TechEdWindows Developer Day、過去のde:code)でこれほどまでに開発者に対して

自分たちの技術を楽しみ、そして開発者に対して『一緒に楽しみましょう』どうですか?

と語りかけてくれたことはあったでしょうか。

 

マイクロソフトだけではなく多くのベンダーのイベントでは、最新の技術をわかりやすく、かっこよく、それこそ驚かせるように示してくれます。

しかし、今回のキーノートでは、まず自分たちが楽しみ本当に価値観を理解し、だから、みんなもよかったらどうぞとお裾分けしてくれるようなすがすがしいくらいに押しつけがましさがない内容だったのです。

 

他にも違和感はありました。

buildにはなくde:codeにだけあるぎゅうぎゅうづめの通路(通路の幅は4倍くらい違う)ですれ違う中に、マイクロソフトのイベントで見かけたことがない知り合いの顔ぶれが多く見られたことです。

そして、その表情は「きてやったけど、まあ、マイクロソフトだよなぁ」のような敵対する勢力の変わらぬ姿勢をみてやれやれというった表情ではなく、同じ開発者という枠組みの中で同じ価値観を見出して、同じテンションでワクワクしているそういった表情をしているのです。

OSの違いやオープンソースかどうかなんて小さいこと。

キーノートでも日本マイクロソフトCTOの榊原さんがおっしゃってました「良いものかそうじゃないか。世の中の役に立つのか立たないのか。」まさに言葉通りに、まるで我々にお手本をしますようにマイクロソフト

「開発者にとって良いもの、世の中の役に立つもの」

を選択する会社に変わったということなのでしょう。

そこには、そういった判断以前にオープンソースかどうかで判断していたころのマイクロソフトの姿は微塵も感じられなかったのではないでしょうか。

 

Microsoft MVPとして、マイクロソフトの技術に注目してきたので「マイクロソフトノギジュツ チョットワカル」はずですし、buildも参加して米国本社の変わりようは知ってはいました。

そんな予備知識があったのに「日本マイクロソフトすげー!」と驚きの違和感、そして、ともすればマイクロソフトの技術に注目していなかった層をぐっと引き寄せた「そうだよ!わかっているね!」感はキーノート後のセッションでも様々なところで感じられました。

だって、スピーカーの人ってマイクロソフトの技術だからスゲーって感じじゃなくて

「この技術すごいでしょ?いや、これで開発したら楽しいでしょ?あ、これマイクロソフトの技術だけどね」

のような感じで、会社すげーというより、自分の推しメンのことを話すように技術のことを話しているのですもの。

 

一応、私が受講できた(満員ではいれなかったり展示会場サポートやコミュニティブースでみれなかったものを除く)セッションは

Day1

Day2

でした。

これ以外にも見たいセッションはたくさんあって、早く資料と録画公開が開始されないかと待っている状態です。

UWP、Cortana、Congnitive、Xamarinと好きな技術、注目してきた技術の最新情報に触れられて、本当に楽しくすごした2日間でした。

 

人は誰でもが、きっと誰かの役に立ちたいと思っていると思います。

組織や会社も同じではないでしょうか。しかし、組織や会社はともすれば成長という中で市場のオンリーワンになるがために競争相手を敵とみなして必要以上に恐れ憎み「役に立つ」というところの出発点からはずれて行ってしまう場合があります。

サーバーOSがUNIXだった時代、サーバーOS市場に食い込み拡大しようとしていたときに挑戦者としてのマイクロソフトがとった戦略がまさにそうでした。クライアントOSの覇者が闘志をむき出しにしてUNIXやそしてオープンソースを否定していく様は、まさに「悪の帝国」のように映ったのでしょう。

マスターヨーダの言葉を借りれば「Anger... fear... aggression. The dark side of the Force are they.」です。

時代は変わり、ポストPCと呼ばれる時代。マイクロソフトは再び挑戦者としての立場に立ちましたが、その戦略は前回と異なります。

「開発者にとって良いもの、世の中の役に立つもの」

それを提供することで共に歩んでいける信頼を得て進んでいく。そういったビジョンは、マイクロソフトの従業員にも、マイクロソフト製品を使って開発する開発者にも、そして世の中のすべての人にとってもより良き方向に進むための灯になるのではないかと考えます。

 

最後に、de:code 2016の最終セッションの最後の実例紹介で感じた自分のツイートを引用して終わりたいと思います。ここに期待感のすべてが詰まっています。

 

 

 

 

Xamarinで始めるAndroidアプリ作成(その3)

Xamarin Mobile VisualStudio

Xamarin.FormsがサポートしているAndroidのバージョンをおさらいしてみましょう。

https://developer.xamarin.com/guides/xamarin-forms/getting-started/installation/#android

 

公式ドキュメントによれば

Android 4.0.3、つまり、「Ice Creame Sandwitch」以降をサポートしています。4.0.3は2011年12月16日に提供開始されています。

4.0.3以降ということであれば、世の中にあるAndroidデバイスのほぼ100%(残念ながらそれ以前のバージョンも多少は存在する)をカバーできます。

日本でいえば、ドコモのGalaxy SII SC-02Cなどが4.0.3ですが、2016年時点でキャリア2年縛りはすでに超えていますから、ほぼカバーしていると言っていいでしょう。

 

ただし、素直に4.0.3かといえば、若干違和感があります。

その違和感はXamarin.FormsとXamarin.Android.SupportとAndroid SDKの関係を表にしてみるとはっきりしています。

  Xamarin.Forms Xamarin.Android.Support Android SDK
プロジェクト作成時 v1.3.3.6323 v4.21.0.3 4.0.3 (API1 5)
nuget最新 v2.2.0.31 v4.23.3.0 5.0 (API 21)

このように最新のXamarin.Forms v2.2が要求するXamarin.Android.Supportはv4.23.3.0であり、v4.23.3.0が要求するAndroid SDKは5.0になるのです。

 

それではなぜ、公式ドキュメントには「4.0.3」以上となっているのでしょうか。

答えは同様に公式ドキュメントにあります。

Target

Mini

つまり、ターゲットは最新(または少なくともXamarin.Android.Support.v4.23.3.0が要求する5.0以上)として、Minimum Android versionとして「4.0.3」を指定できることが、Xamarin.Formsの要求仕様がAndroid v4.0.3以上という意味だということです。

 

Visual Studioならプロジェクトのプロパティの[Application]-[Application properties]

 

違和感の原因は、4.0.3以上ということで、では自分たちの作ったアプリも4.0.3以上としようとしたときにターゲットフレームワークを「4.0.3」ではなく「5.0」としてMinimum Android versionで「4.0.3」としていいのかという点にあります。Visual StudioならTarget frameworkが「Complie using Android version」となっているのでさらに不安を感じます。

 

これらのバージョンはどのような意味があるのでしょうか。

注意しないといけないのは、これは、Xamarin固有の話ではなく、Android開発の基本的な話となります。Android StudioJavaで作成したときもbuild.grableに同じように描くことになります。

結論を先に書けばWindowsアプリに比べたらかなりおおざっぱというか、これでいいの?という感じがAndroidアプリ開発なんだなぁと。

Target framework
(targetSdkVersion)
 
Minimum Android version
(minSdkVersion)
指定したバージョン以上にインストールできる宣言

 

これ、トラディショナルジャパニーズカンパニーで開発やっていると、Target framework = Minimum Android versionとして、アプリの動作要件の○○以上とする一番古いバージョンに合わせてコンパイルして、それより上位のOSでも下位互換性確認の意味で動作チェックしてって感覚だと思うのです。

Target frameworkは最新にして、Minimum Android versionにアプリ動作要件の○○以上とするというのがAndroidスタイルだって納得して、きちんとシステムテストで4.0.3 (Ice Cream Sandwich)/4.3 (Jelly bean)/4.4 (KitKat)/5.1 (Lollipop)/6.0 (Marshmallow)とテストするしかないのでしょう。このあたり、Androidで業務アプリを作っていたり、それよりもGoogle Playで人気アプリ配信している個人開発者さんあたりにお話をお聞きしたいですね。ほんと、どうしていらっしゃるのだろうか。

 

まあ、そんなときに心強い味方と言ったら、Xamarin Test Cloudですよね。

例えば、月額249$のBUILDなら、こんな感じにテストができます。

  1. 同時に2つまでデバイスを選んでテスト可能 (2 concurrent devices)
  2. トータル10分かかるテストならば、2多重x10分で合計3時間(3 device hours/day)=毎日90分のテスト時間で18デバイスのテストが可能

 

4.0.3 (Ice Cream Sandwich)/4.3 (Jelly bean)/4.4 (KitKat)/5.1 (Lollipop)/6.0 (Marshmallow)の5バージョンでそれぞれ代表的なデバイスを1つづつテストするのであれば、もう一つ安いSTARTプラン=月額$99でもテストできそうですね。

  1. 同時に1つまでデバイスを選んでテスト可能 (1 concurrent devices)
  2. トータル10分かかるテストならば、1多重x10分で合計1時間(1 device hours/day)=毎日60分のテスト時間で6デバイスまでテスト可能

1日1回しかテストできないの?と思うかもしれませんが、手元の実機やエミュレータでテストしたあとの仕上げテストですから、毎日1回とかで十分と言えるでしょう。

 

そうそう、Visual Studio Enterpirse使っているなら上記の金額から25%引きで利用できますので、さらにお得ですね。

UWPカメラアプリをHoloLensで動作させる

HoloLens Hardware Windows10

HoloLensにはセンサー以外にカメラもついています。

HoloLens標準アプリで写真撮影やビデオ撮影もできますが、UWPアプリとしてカメラを使うアプリを作れば、そのアプリでもカメラ映像を扱えます。

image

Device Portalでその時の様子をCaptureすると視野の中のHolographic領域がそのままカメラアプリにプレビュー表示されているのがわかると思います。

HoloLensを使ったカメラアプリで注意しないといけないのは、上のスナップショットにあるように撮影ボタンや録画ボタンを画面端に配置しちゃうことです。

こうしちゃうとボタンにフォーカスを合わせるために顔の向きをボタン側によせるため、被写体から中心がずれてしまうからです。

要は画面中央、もしくは、画面全体に対するタップ(操作ミスを考えるとホールドがよいかも)で撮影ができるようにUIを工夫する点でしょう。

そこだけが一般のカメラ機能を使用するUWPアプリよりも注意しないといけない点でしょう。

なお、HoloLensで動作しているかどうかを判定する方法はいろいろあると思いますが、例えば

Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == “Windows.Holographic”

で判定するのも判定方法の1つでしょう。

 

なお、カメラ機能を使ったアプリとDevice Portalの組み合わせで注意しないといけないのは、DevicePortalでLive映像やビデオ録画はできますが撮影には失敗するという点です。

HoloLens空間に置いたHolographicオブジェクトがその場に居続けてくれるという意味

HoloLens Windows10 Hardware

HoloLensはウィンドについては壁に貼り付けた感じに配置してくれますが、もちろん何もない空間に配置することもできます。

ただ、ウィンドウは板状なので何もない空間においてもあまりおもしろくありません。

そこで、3Dオブジェクトを空間において、そのあとで装着者が移動したり頭の向きを変えた時にどのようにみえるかを確認した動画を撮影しました。


HoloLensで見る方向を変えたり体の位置を変えた時の表示

天井ちかく近くにオブジェクトを張り付けておいて、立ち上がるとちゃんと見え方が替りのがわかると思います。