カテゴリー別アーカイブ: Windowsストアアプリ

HP Elite x3で有線Continuum

HP Elite x3って?

HP社から発売されたWindows 10 Mobile(以下W10M)端末、所謂スマホです。
ほかにも何社からか日本で使用可能なW10M端末は出ているんですが、現在出ている中で最新高スペック端末です。

Continuumとは

TVやモニターを外部ディスプレイとして画面を表示して、デスクトップPCのように大画面で操作することができます。
もちろん以前からのWindowsソフトが動かせるという事ではなく、Windowsストアで提供されているW10M対応ソフトでUWP化されているアプリという条件があります。

有線Continuum?

実はContinuumは有線と無線の二通りの方法で、接続が可能になります。
無線はケーブルに煩わせられない代わりに、遅延などが発生し、有線はその心配がない代わりに、W10M端末にスペックが必要になります。
無線はMiracastを利用した出力で、有線はUSB-TypeC-Display 変換出力機能により出力となるため、USB3以上のスペックが必要です。

ELECOM U3HC-DC03B

HP Elite x3向けにはHP社がアクセサリとしてデスクドック(V5H01AA#ABJ)とディスプレイ一体型でノートPCのようなノートドック(Y4T08AA#ABJ)を出しています。
デスクドック(V5H01AA#ABJ)なんですが、ディスプレイ出力部分がDisplayPortなため、私の環境では使えないためどうしようかと思っていたのですが、ちょうど発見した「ELECOM U3HC-DC03B」が使えるのではないかと思い購入しました。

早速つないだところ、無事に有線Continuumが出力されました!

USB PD

U3HC-DC03Bは電源接続部分にUSB PD(Power Delivery)が使われているため、普通のUSB Type-C電源アダプターでは有効になりません。

なので、今回充電ケーブルをまとめたいというのもあったのでAnker PowerPort+ 5 USB-C Power Deliveryを導入しました。
もちろんUSB PD接続にはUSB PD対応ケーブルが必要になります。


このケーブ購入したのですが、USB2.0でした。
ただ、充電機能は問題なく機能します。

USB3.1対応にする場合下記ケーブが良いと思います。

充電しながら使えない

充電機能を利用した場合、有線Continuumが解除されてしまいます。
これが「HP Elite x3」と「ELECOM U3HC-DC03B」どちらに起因するのかが自分ではわかりません。
HPのデスクドック(V5H01AA#ABJ)を購入した方が試されて、充電しながら使用可能なら「ELECOM U3HC-DC03B」の制限なのではないかと思うのですが、どちらの制限なのか不明です。

UWPはいいぞ!

さて、有線Continuumを使用して思うことは、UWPを進めるべきだなという事です。
オフィス向けアプリにせよコンシューマー向けアプリにしろUWP化してContinuum対応にすることで、ユーザーの利便性が上がり、よりよい使い方が増えていくので、UWPアプリ開発に力を入れていきたいです。

マルチデバイス対応したいんだけど

Xmarin等を使用したマルチデバイス開発が増えていくと思います、Xamarin等では共通部分と個別部分の作りこみが可能なので、基本的には同じアプリとしながらもこういった部分で対応することで、少し違うアプリを提供できると思うので、ぜひ対応してほしいと思います。

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

Visual Studio 2015 RTM は7/20にリリース(条件付き)

さて、最新の開発環境「Visual Studio 2015 RTM(最終リリース版)」のリリース日が2015/7/20に決定しました。

Visual Studio 2015 RTM のリリースが 7 月 20 日に決定! 記念イベントも同日開催

VS2015はクロスプラットフォーム開発への起爆剤になるかもしれません。

また「Visual Studio Code」というLinuxやMac上でVSスタイルでASP.NET5やNode.jsの開発ができるアプリもプレビューながら公開されています。

さて、タイトルに「(条件付き)」としましたが、これは「UWP(Universal Windows Platform)」用のアプリ、つまりはWindows10専用ストアアプリ開発SDKがWindows10リリース日の7/29に正規版になるためです。
このためWindows10専用ストアアプリ開発は九日間とはいえお預けになります。

もちろん、UWPアプリ以外の開発は可能ですので、「早速最新環境で開発を!」という方はぜひ導入してください。

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(実機)がカスタムシェーダーに対応していないためです。
マテリアルを改良または取り去れば、きちんと表示されるはずです

Unity3dでuniversal App Projectを吐き出す際のメモ

※再度試したところ、プロジェクトファイルを書き換えなくてもコンパイラが通りました。
 自分の環境のせいで何かしらおかしなことが起こっていたのかもしれないですが、なぜ通らない現象が起きたのか、何が原因なのかよくわかりません。


吐き出して其の儘だとVisualStudio2013Up3でコンパイルが通りません。

参照の中にリンク不明のエラーが二つでます。

Unity3d Ver4.5.4p2
VisualStudio2013 UpDate3
VisualStudio Tools Unity 1.9.1
上記環境で現象が起きています。

・.Windows.csproj
・.WindowsPhone.csproj
上記二つのプロジェクトファイルの一部を書き換えます。
エラーを起こしているファイルは「Assembly-CSharp.dll」「Assembly-CSharp-firstpass.dll」の二つです。

	<Reference Include="$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp-firstpass.dll" >
		<HintPath>.\$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp-firstpass.dll</HintPath>
	</Reference>
	<Reference Include="$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp.dll" >
		<HintPath>.\$(UnityProjectDir)\bin\Store 8.1\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp.dll</HintPath>
	</Reference>

このように書かれており、一見問題なく通ると思われるのですが、なぜか「$(PlatformName)」がコンパイラで指定している「ARM」「x86」ではなく「AnyCPU」となってしまうために起こるエラーです。
(「Store 8.1」の部分はWP8.1用では「Phone 8.1」となっています)

    <Reference Include="Assembly-CSharp">
      <HintPath>bin\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp.dll</HintPath>
    </Reference>
    <Reference Include="Assembly-CSharp-firstpass">
      <HintPath>bin\$(PlatformName)\$(ConfigurationName)\Assembly-CSharp-firstpass.dll</HintPath>
    </Reference>

そこで上記のように書き換えます。
さらに、VisualStudio2013Up3の「デバッグ」>「オプションと設定」>「全般」の中の「起動時にユーザーコードが見つからない時警告(マネージのみ)」についているチェックを外します。

debugoption
これが自分の環境のせいなのか、VS側の問題なのか、Unityの書き出しの問題なのか不明です。
もう少し調べてみたいところですが、そんなことよりアプリ作るために作業を進めたいと思います。

※追記
Unity-chanというUnity公式キャラクターがあります。
オフィシャルページからUnity用のAssetファイルをダウンロードすることができます。

このキャラクターを使ったアプリを作成しようとテストしていたのですが、ストアアプリ向けに吐き出そうとするとエラーが発生します。

困ったことにエラーのログが文字化けして詳しいエラー内容がわかりませんが、エラーコードから「Script/AutoBlink.cs」に書かれている「using System.Security.Policy;」はassemblyがないというエラー。
これはコメントアウトすれば解決するので、それほど問題はないと思います。
(もしくは#ifで囲ってしまうほうがいいかもしれません)

もう一つは下記画像なのですが

BycphOiIYAEf1nW.jpg large

「Script/SpringManager.cs」にある「UpdateParameter」関数内

			var prop = springBones [0].GetType ().GetField (fieldName, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);

GetType しているGetField の内容が不正ということだと思うのですが、取りあえずこれも「#if」で囲って使用されないようにすることで、吐き出すことができました。

とりあえず出だしのところで躓くというへっぽこな開発スタートでしたが、まずはどうすればいいかを早いところ洗い出しておきたいです。

WindowsPhone8/8.1 Game Pad/Controller

WindowsPhone8/8.1(以降WP8/8.1)にはGame Pad/Controllerが有りませんでした。
これはモバイル向けGame Pad/Controllerとの接続で良く使用されるBluetoothですが、WP8/8.1にはBluetoothは搭載されているものの、対応profileとして「HID」が無いため外部入力機器が使用できませんでした。

ところが、最近検索していて見つけたのですが、Bensussen Deutsch & Associates, Inc(以下 BDA)社の「MOGA Game On Anywhere(以下 MOGA)」シリーズの一部が対応しているとの記事を見つけました。

MOGAにはiPhone用とAndroid用のゲームコントローラーがあるのですが、Android用でWP8/8.1に使用できる機能が付き、WP8用SDK(WinPRT)が公開されています。

MOGA Pro SDK – WindowsPhone8

自分は下記のコントローラーを購入して、SDKにあったサンプルでコントローラーが動作することを確認しました。


此方はUSB充電伝可能なリチウム電池内蔵型です。


価格は安いものの、単三電池二本が必要になる、リチウム電池やUSBコネクタはありません。

というわけで、WP8(WinPRT)用とはなっているものの、WP8.1WinRTベースで使用できるようにできないかと、色々試してみました。

続きを読む

WinRTで画面遷移の履歴スタックを削除する

WindowsRuntime(WinRT)アプリで画面遷移を行っている際に、一気にTOPページに戻したいけど、戻した後に戻ってこられては困るという時があります。

そこで下記のコードを「OnNavigatedTo/NavigationHelper_LoadState」に書いておきます。

Frame.BackStack.Clear();

このAPIで履歴スタックを一括で消せます。

また、あるページに到達した時点で、直前のページには戻したくなく、入力などを行ってるページまで戻したい場合などに、戻す件数を把握してBackKeyが押された際の制御を行うのもアプリの構成としてはありだと思います。

下記のように「Frame.BackStack.RemoveAt」を利用して指定したスタックを削除することもできるので、使い分けるといいでしょう。

            // 画面遷移の履歴スタック数を取得する
            int stackCount = Frame.BackStackDepth;
            for (int i = 0; i < stackCount; i++)
            {
                // 指定した位置のBackコレクションを削除
                Frame.BackStack.RemoveAt(0);
            }

dynabook TabをWindowsストアアプリのリモートデバッガで使用する

2014/05/29-30に行われた日本マイクロソフト社主催のイベント「de:code」で学習用機材として配布された「TOSHIBA dinabook Tab VT484/22K」を活用する一歩として、Windowsストアアプリのリモートデバッグを出来るようにしてみました。

使用した機材
・母艦PC:デスクトップPC
・タブレット:TOSHIBA dinabook Tab VT484/22K
・LAN:BUFFALO 10/100M USB2.0用 LANアダプタ LUA3-U2-ATX
・USB変換:ELECOM タブレットPC用USB変換アダプタ A(メス)-microB(オス) TB-MAEMCB010BK

リモートデバッグを行う場合は同一ネットワーク内にある必要があります。
その為デスクトップPCと接続するため、有線LANにするためUSB-LANアダプタを使用しました。

設定
・ルーターのDHCPでMACアドレスを利用してIPを固定しています。
固定していなくても実行可能とは思いますが、IPがコロコロ変わるのは面倒なので、固定しました。

必要なソフト
・母艦PC側はVisualStudio2013(Update3適応済み)を使用しています。
・dynabook Tabには「Remote Tools for Visual Studio 2013 Update1 x86」をインストールします

「Remote Tools for Visual Studio 2013」は「x86」「x64」「ARM」があります。
dynabook Tabでは「x86」版を使用しています。
dynabook Tab以外で行う場合は其々環境にあったバージョンをご使用ください。

インストール後、「Remote Debugger」を起動します。
起動すると各種設定に関する承諾が出ますがOKを押してください。
「Visual Studio リモート デバッグ モニター」が表示され、「サーバが開始され、接続を待っています」と表示されれば、「dynabook Tab」側は準備完了です。

Remote
母艦PC側のアプリソリューションを開き、アプリ動作先を「リモートコンピュータ」に変更して実行します。
実行の際、dynabook Tabがロックされていないように注意してください。
ロックされていると転送エラーになり、作業できません。

実行すると「接続先の選択」が表示されますので、きちんと接続準備ができていれば、リモートの「dynabook Tab」が選択可能です。(使用している開発言語で違いがあります)

接続が完了すると「開発者ライセンス認証」が促されます。
認証を行うとアプリが転送され、リモートデバッグが可能になります。

マルチタッチやカメラ、比較的非力なタブレット型でのデバッグが可能になり、開発のアイデアも浮かびやすいのではないかと思います。

Windowsデベロッパーセンターに「リモート マシンでの Visual Studio からの Windows ストア アプリの実行」という項目があり、ここに詳細がかかれています。