Windows8ストアアプリのサイドローディング

こんにちは。アスカクリエイション 石原です。

本日はWindows8ストアアプリのサイドローディングについて書きたいと思います。

ストアアプリでは基本的にストアからダウンロードしインストールする仕様となっており、従来のデスクトップアプリのように直接実行ファイルをコピーしセットアップすることができず、入手経路が制限されています。ストアアプリはMicrosoftで審査を経て掲載されるので品質の低いアプリや悪意あるアプリが混入しづらい点や、ユーザーがWeb上に点在するアプリを見つけ出さなくても、ストアで検索することで目的のアプリを入手することができるという面や、開発者にとっても自分のアプリを発信する場として、また、アップデートや収益、ユーザーからのレスポンスを管理できるという面で便利です。が、反面デメリットもあります。

社内システム等の限られた環境向けのアプリの場合、ストアに掲載したくないでしょうし掲載しても関係のないユーザーにはまったく無意味なアプリとなってしまいます。また、セキュリティ面で好ましくない場合もあるでしょう。

そのようなニーズの為にサイドローディングという手段があります。サイドローディングの手法を使うことでストア経由ではなくアプリのパッケージファイルを手動でインストールすることが出来ます。

しかし、サイドローディングが行えるシステム要件はかなり厳しいものとなっており一般ユーザーや中小企業が導入するには敷居の高い感が否めません。要件を以下に記載します。

 
・Windows8 Enterpriseで、グループポリシーで”信頼できるすべてのアプリのインストールを許可する”が有効になっているアクティブディレクトリドメインに参加していること。

・Windows8 Enterpriseでアクティブディレクトリドメインに参加していない環境ではサイドローディングプロダクトキーを購入し導入していること。

・Windows8 Pro、 RTではアクティブディレクトリドメインに参加しているかに関わらずサイドローディングプロダクトキーを購入し導入していること。

表にすると以下のようになります。

Windows 8 Windows RT Windows 8 Pro Windows 8 Enterprise
ドメイン環境 非サポート 非サポート サイドローディングプロダクトキー グループポリシーで許可
非ドメイン環境 非サポート サイドローディングプロダクトキー サイドローディングプロダクトキー サイドローディングプロダクトキー

 

無印のWindows8ではサイドローディングは出来きません。また、サイドローディングプロダクトキーは一般ユーザーが個別に購入するこは出来ず、Microsoftとボリュームライセンス契約を結んでいなければ購入出来ません。Microsoftに問い合わせてみたところボリュームライセンス契約にはいくつかの形態がありますが、サイドローディングプロダクトキーが入手できる契約には最低57万7千円かかるそうです。Windows8 Enterpriseも一般販売されていませんから、いずれにしても企業でMicrosoftと契約を結ぶ必要があり、一般ユーザーや小規模オフィスで気軽に導入できるものではないようです。

通常運用で使用する場合は上記のような要件が必要ですが、実は開発者ライセンスというものがあり、Visual Studio 2012 for Windows8等をインストールすると取得できます。開発者ライセンスは一定期間で期限が切れ、更新する必要がありますが、一時的にサイドローディングが可能になります。開発中のアプリをローカル環境で動作確認、デバッグするための配慮と思われます。

 

開発者ライセンスを取得した環境で手動サイドローディングを試してみたので手順を紹介します。

Step1. アプリの作成時にサイドローディング用のパッケージを作成する必要があります。 Visual Studioで「ストア」メニューから「パッケージの作成」ウィザードにて「Windowsストアにアップロードするパッケージを作成しますか?」で「いいえ」を選択。

sideloading_package

 

Step2. ルート証明書をインストールする必要があります。(実運用では信頼できる署名をアプリにバインドしておくべきで、本来この手順は不要のはずです)作成したパッケージフォルダ内(AppPackages)の.cerファイルを右クリックし「証明書のインストール」を選択。ウィザードにて「保存場所」→「ローカルコンピュータ」(「現在のユーザー」ではサイドローディングに失敗した)を選択。「次へ」をクリック「証明書をすべての次のストアに配置する」で「参照」をクリック「信頼されたルート証明書機関」を選択「次へ」をクリック。→完了。

sideloading_cer

sideloading_cer2

 

Step3. 現在のユーザーのアプリとしてインストールするにはPowerShellを起動し以下のコマンドを実行します。

> import-module appx
> add-appxpackage "アプリのパス\アプリ名.appx"

 

もしくは、全ユーザー向けにプリインストールされているアプリのようにシステムイメージにインストールすることも出来ます。その場合はまず、ファイル名を指定して実行からgpedit.mscと入力しローカルグループポリシーエディタを起動し、「コンピュータの構成」→「管理者用テンプレート」→「Windowsコンポーネント」→「アプリパッケージの展開」→「信頼できるすべてのアプリのインストールを許可する」を「未構成」から「有効」に変更します。

gpedit1

PowerShellからgpupdateコマンドを実行し設定を反映させた後、PowerShellを管理者権限で起動し以下のコマンドを実行します。

> DISM /Online /Add-ProvisionedAppxPackage /PackagePath:"アプリのパス\アプリ名.appx" /skiplicense

 

手順は以上です。上記手順ではコマンドを打つ必要がありますがMicrosoftのWindows IntuneSystem Center 2012 Configuration Manager SP1という製品を使うとGUIでサイドローディング環境を構築できるようです。

 

Share

Windows 8.1 Previewを試す

皆さん。ご無沙汰しております。アスカクリエイションの石原です。

このところプロジェクトが忙しくて、なかなか記事を書く時間が取れませんでしたが、ようやく落ち着いてきたので久々に書こうと思います。

さて、今回はWindows8ネタで書こうと思います。先日、Windows BlueことWindows8.1のプレビュー版が公開されました。早速インストールして使ってみた中で、目立った変更点を紹介していきたいと思います。

Windows8.1プレビュー版は下記URLから入手できます。

http://windows.microsoft.com/ja-jp/windows-8/preview-download

なお、今回ISOイメージをダウンロードしVMWare上にインストールしてみましたが、インストール手順は従来のWindows8と大きな変更点もなくスムーズに完了しました。

 

まず、Windows8.1の前評判として期待されていたデスクトップのスタートメニューの復活ですが、Windows7以前のスタートメニューを期待していた方には期待外れかもしれません。

win8.1_desktopたしかに新Windowsロゴマークのアイコンがタスクバーの左下に追加されていますが、これは単にタイルのスタート画面への切り替えでした。

現在のWindows8ではアイコンは表示されていませんが、デスクトップの左下の隅にマウスカーソルを持っていくとタイルのスタート画面への切り替えとなっていたものが、アイコンとして明示的に表示されるようになったにすぎません。

なお、左下の隅で右クリックすると表示されるコンテクストメニューに若干の追加がありました。

win8.1_desktop_startPowerShellとシャットダウンメニューが追加されました。現在の8ではシャットダウンはチャームから設定で行うので、少しわかり辛かったのが多少楽になるかもしれません。

その他、エクスプローラのリボンがデフォルト最小化になっていました。

win8_explorer

 

スタート画面です。

win8.1_startスタート画面は魚があしらわれています。これは恐らくベタでしょうか。Windows7のベータ版でも壁紙にベタの画像が使用されていました。ちなみにベタの泡が時間の経過によって動きます。

スタート画面での変更点でまず、目につくのは左下の矢印アイコンの追加です。これをクリックすると以下のようにインストールされているアプリの一覧表示になります。

以前のスタート画面からチャームの検索の表示と同様のものですが、確かに、Windows8を使い始めたころはメモ帳や電卓、ペイントなどのデスクトップアプリを探すのに戸惑った経験があります。地味ですが気の利いた改善だと言えます。

 

win8.1_app

 

なお、スタート画面でチャームから検索すると、すべての場所の検索、つまりPCのファイルやアプリやストアとWeb(bing)での検索結果の表示という動作に変更されたようです。

win8.1_search

 

また、タイルの固まりにグループ名をつけられるようになりました。

win8.1_group

 

さらに、目立った点としてタイルサイズがこれまで標準とワイドのみでしたが、新たに小と大が加わり4段階になりました。これはアプリ開発時の対応が必要になってきそうですね。

start_tile

 

その他、特筆すべき点としてスナップの動作が変更されました。

win8.1_snap従来のスナップでは横幅320ピクセル固定だったのが、自由な割合でスナップできるようになっていました。

これはアプリ開発のスナップ時のレイアウトに影響しそうですね。ちなみにスナップは従来1366×768以上の画面解像度が必要でしたがこの制限は取り払われたようです。

また、従来はスナップ時のメインとサブが明確だったため、スナップ中に新たにアプリを起動するとメイン側が入れ替わるのに対し、領域が自由に分割可能になりメインかサブか明確では無くなったためか、新たにアプリを立ち上げると左右のどちらに表示するかを選択する画面になります。

win8.1_snap2

駆け足で目立った変更点を紹介しましたが、他にもストアの表示が変更されたりと細かな改善が見られます。正式リリースで仕様が変更される可能性もありますが、一ユーザーとしてリリースが楽しみです。開発者としてはタイルやスナップの仕様変更によって考慮しなければならない点が増えそうです。

今回は以上です。

Share

Windows8/RTストアアプリ開発 ~開発環境構築~

こんにちは。アスカ・クリエイション株式会社 研究開発チームの石原です。前回に続き、今回は開発環境の構築について書きたいと思います。

まず、開発には以下のソフトウェアが必要となります。

  • Windows8
  • Visual Studio 2012 Professional以上、または Visual Studio Express 2012 for Windows8

Windows8は開発PC用のOSとして必要になります。Windows7以前のOSでストアアプリの開発は出来ません。

Visual Studioに関してはほとんどの場合、無償のExpressで十分アプリ開発が可能ですが、カスタムデバイスを制御するようなアプリの場合、ドライバのSDKの関係でProfessional以上が必要になってきます。今回はVisual Studio 2012 for Windows8での開発環境構築を説明しようと思います。Visual Studio 2012 for Windows8は以下よりダウンロード可能です。

http://www.microsoft.com/visualstudio/jpn/downloads

vs2012

.exe形式と、.iso形式が用意されていますので、好みのほうをダウンロードします。.isoの場合はマウントするかCDに焼き付けwin8express_full.exeを実行します。

 

vs2012_inst

ライセンス条項に同意するにチェックしインストールを開始します。しばらくするとインストールが完了します。特に迷う部分は無いと思います。

初回起動ではプロダクトキーの入力を求められるのでオンライン登録を行いプロダクトキーを入手します。また、Windows8開発者用ライセンスを取得するよう促されるので同意して取得します。

Visual Studioでは開発用PCのローカル環境でアプリを実行しデバッグ可能な他に、以下のスクリーンショットのような端末のシミュレータが使用できます。

vs2012_emu

シミュレータでは、解像度の変更やマウスで疑似的にタッチ操作のシミュレートやGPSセンサーのシミュレートが可能です。しかし、これはOSイメージを仮想マシンで動かすようなものではなく、ローカル環境に別ウインドウでログインしているようなもので、ローカル環境で実行しているのとあまり変わりません。別解像度でのレイアウト確認など、補助的な用途には便利な場面もありますが、加速度センサーやジャイロセンサー等はシミュレート出来ませんし、マウスでのタッチ操作のシミュレートはやはり実際の操作感とはかけ離れているので、本格的な動作確認には確認用ハードウェアを用意するのが望ましいです。

ハードウェアについては、タッチ操作や各種センサーを利用したアプリの動作確認にはそれらを備えたWindows8やRTが動作するPCやタブレット端末が必要になります。もう一つ注意すべき点として古いPCにWindows8をインストールして動作確認に使用する場合、ストアアプリを実行するには最低1024 x 768 以上の画面解像度が必要なこと、さらにスナップという横端にアプリを小さくドッキングさせて表示する機能を使用するには1366 x 768 以上の画面解像度が必要となります。スナップ時にはレイアウトを大きく変更する必要が出てきますので、動作確認のために1366 x 768以上の端末を用意することが望ましいです。

別の端末にリモートでアプリを配置しデバッグを行うにはターゲット端末にRemote Tools for Visual Studio 2012をインストールする必要があります。このツールはARM版もあるのでWIndowsRT機にインストールしてデバッグすることも可能になります。このツールは前述のVisual Studioのダウンロードページからダウンロードします。

vs2012_Remote

ターゲット端末のCPUに応じたインストーラーを選択します。インストール後、Remote Debuggerを起動します。

remote_debug

このツールが開発PCと通信することになるので立ち上げっぱなしにしておきます。開発PCとターゲット端末の接続はネットワークで行いますので、有線LANやWifi等で同一ネットワーク上に属している必要があります。

remote_debug2

リモートでアプリを実行するにはVisual Studioのツールバーにある実行ボタンからリモートコンピューターを選択します。

remote_debug3

初回時はネットワーク上をサーチしデバッグモニターの起動している端末が表示されるのでターゲット端末を選択します。またユーザー名とパスワードが求められるのでターゲット端末側のログインユーザーとパスワードを入力します。認証を保存にチェックを入れることで次回から省略出来ます。

以上で、リモートでアプリが実行されリモートデバッグが可能になります。

次回以降はコードを交えて、より踏み込んだ内容を書いていこうと思います。

Share

Windows8/RTストアアプリ開発 ~アーキテクチャ概要~

はじめまして。ASTEC LABでWindows8/RTストアアプリの開発を担当させて頂いております、アスカ・クリエイション株式会社の石原繁彦と申します。

Windows8、WindowsRTが発売されて3ヵ月が立ち、ストアアプリも少しづつ充実してきました。私も発売の数か月前からRelease Preview版での検証や、開発者セミナーに参加するなど情報収集してきましたが、限られた情報の中で、まだまだ試行錯誤の連続です。このブログを通して、これまでの成果や、実験的な内容も交えつつノウハウの蓄積と発信を目指していこうと思います。

さて、記念すべき第一回は、ざっくりWindows8/RTストアアプリのアーキテクチャをまとめてみたいと思います。

ストアアプリでは下図のような構成になっています。従来のデスクトップアプリとの大きな違いは、これまでのWin32 APIではなくWinRTという新しいAPI群を使用するということです。

WinRT

Windows8/RTではWin32 APIとその上位フレームワーク及び、デスクトップ環境も搭載しているためWindows7までのデスクトップアプリも動作します。が、しかし、ストアアプリの実行環境はAPIレベルで全くの別物、別環境と言っても過言ではないほど異なります。そしてストアアプリはご存じの通り、タッチ操作に特化しており、動作やコンセプトはAndroidやiOSのそれに近いものとなっております。従来のデスクトップ環境とタッチ向けの環境が同じカーネル上に同居しているようなOSとなっています。つまり、WinRT APIはWindowsにタブレット端末の実行環境を実現させるためのAPI群という位置付けになるかと思います。

ストアアプリを作成するためのプログラミング言語の組み合わせは以下にになります。

  • HTML/CSS + JavaScript
  • XAML + C#
  • XAML + VB
  • XAML + C/C++
  • DirectX + C/C++

この他に、一部C++ でDLLを作成してC#から呼び出すハイブリッドアプリという手段もあります。HTML/CSSとJavaScriptの組み合わせでストアアプリが作成できるのでWeb系開発者も参入しやすいかもしれません。一方でDirectXを使用した3Dゲーム等はC/C++で作成する必要があります。標準的なアプリ開発ではUIをXAMLで作成しロジックをVB、C#、C/C++で好みのものを選択するケースが多いのではないでしょうか。XAMLによるUI作成はWPFのWindowsアプリケーションと共通する部分も多く、WPFを触ったことがある方なら扱いやすいと思います。

 

ストアアプリの開発で留意しなければならない点としてライフサイクルが従来のデスクトップとは異なる点が挙げられます。

storeapp_lifecycle

図のように一時停止という状態が存在します。具体的にはバックグラウンドに回った時に一時停止状態に遷移します。さらに、一時停止中のアプリはメモリ等のリソース減少によりOSの判断で自動的に終了します。しかもアプリは終了前に通知を受けません。状態の保存には一時停止時にイベントが発生するので、このタイミングで保存しておく必要があります。また、この中断処理は5秒以内に終わらせる必要があります。

その他の留意点としてサンドボックスで実行されるためデバイス等にアクセスするにはアプリマニフェストの定義とユーザーの許可が要ること、アプリ間やOSとのデータ受け渡しにコントラクトという仕組みを使うことなどが挙げられます。これらは、また後日詳しく紹介していこうと思います。

 

Share