Windows 8 Developers

Windowsストアアプリ開発とかその他もろもろのブログ。

※参加自由なWindows8開発コミュニティをFacebookグループでやってます。
https://www.facebook.com/groups/win8.developers/

その他、技術情報リンク集を下記にまとめています。
http://windows8-developers.hatenablog.com/entry/2013/02/20/155410


TizenとかFirefoxOSとかUbuntuとか「第三極モバイルOS」と呼ばれるものを調べてみた

「Webプラットフォーム勉強会」という所でプレゼンさせてもらいました。

講演内容は第三極モバイルOSの基礎情報とかだったのですが、実は何も知らないとこからスタートした訳ですが、ちゃんと調べると色々勘違いがあったなぁと思ったので資料と合わせてここに書いて行きたいと思います。

※注:2013/5/末時点での情報なのでまた変わる可能性もあります

 

そもそも第3極モバイルOSって何?

いわゆるTizen、FIrefoxOS、Ubuntu Touch、SailfishOSあたりのモバイル端末として載せるのを目的に作られたOSを指しています。WindowsPhoneやタブレットもカウントするならばWindows 8も入れる事が出来ますが、今回の主旨とは違うのであまり紹介していません。

f:id:win8dev:20130526161714j:plain

 

一般のメディアとかだとこのモバイルOS達は

Android,iOSに変わる新しいモバイルOS」とか「HTML5でアプリが作れる」とかそういった部分が囁かれていますが、それだけだと本質の説明にはなってないと思います。あんまり細かくなってもいけないので本当にざっくりした所だけ解説します。

 

f:id:win8dev:20130526162451j:plain

世の中がけっこう誤解しているのは「Samsung=Tizen」という図式と「Tizenアプリ=HTML5」という所。どっちも説明としては正確ではないのでご注意を。

 

f:id:win8dev:20130526162643j:plain

 

声を大にして言いたいのは「FirefoxOSはNativeアプリは無い」という所。その為にアーキテクチャーも自前で全部用意してAPIも必要な数を揃えている訳です。

あと、「途上国向け、ローエンド端末向け」と言われています。Androidを動かす為にはそれなりに端末スペックが高くないといけませんが、FirefoxはWebベースで動く事を前提にしていてNativeかまない為に低いスペックの端末でも動作する事が出来ます。だからローエンド向け、と言われている訳です。

ただ、ディストリビュートしている日本のKDDIや韓国はハイエンド端末が既に普及している為、ローエンド市場としては当てはまらないと思います。では何故、KDDIが手を挙げているのかと言えば恐らく今現在のスマートフォンの固定料金の高さへの対策ではないかと思います。いまは老人でも子供でもスマートフォンを使えるようにしていますが、昔みたいに月額980円みたいな事は出来なくなっています。端末料金を下げて、そういったユーザ層を「ローエンド端末」と位置づけて売るのかもしれません。

 

なので、TizenとFirefoxOSを同じ位置付けとして見るのも見少々違うかなぁと思ったりもします。

 

次にUbuntuTouch

f:id:win8dev:20130526163538j:plain

 

Ubuntuはそもそも今やっているビジネスがあります。そこから水平展開出来るのが目的になるかと思いますが、そもそも一般コンシューマがUbuntuを入れている事も少ないので、デスクトップからモバイルまで一貫したプラットフォームという考えは正しいけれど日本で成功するのは難しいのかなぁと思っています。

HTML5でアプリ開発も出来ますが、結局の所、HTML5の標準化が進むまで第3極OSとかAndroid/iOSとの互換性も期待出来ないので 一緒くたにしちゃいけないとも思います。

 

そもそもフリック操作とかアプリバックグラウンド時の挙動とか独自になるのでその辺りを共通化させる事は出来ないんじゃないかなーとも思います。

ちなみに一部で話題になっているSailfishOSは今の情報だと期待薄なのでココでは言及しません。

 

結果的にこれら第三極が今後どうなるのかは後編で書きたいと思います。

ちなみに全体のスライドはこちらです。

 

つづく。

 

 

【10分で出来る】Windowsストアアプリを開発環境以外で動かす(デバッグする)方法

今日はアプリを作成する際に開発環境以外の実機でアプリを動かす(インストール)する手段について書きます。

開発環境であるVisualStudioでのアプリ起動は開発者は当然のように自分の開発用PCで動かせますが、例えばクライアントや、Windows8端末はあるけれどVSは入っていない人の端末で動かすにはどうするか、という事です。

最近話題のSurfaceもRT端末なので開発環境を入れる事は出来ないので、ふつうに公開前のアプリを動かす事は出来ません。自分もAndrroidやiPhoneみたいにとりあえず有線で接続すりゃあ動くだろう、と思っていましたがUSB突っ込んだだけではSurfaceは沈黙状態でした。

では、どうするかというと、ちゃんとリモートでアプリを入れられる仕組み(Remote ToolsFor VisualStudio2012)が用意されています。セットアップも難しくないので、10分もかからずに入れる事が出来ます。

f:id:win8dev:20130410151218p:plain

 

1.動かしたい端末にRemote ToolsFor VisualStudio2012をインストール

■ダウンロードサイト

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

Windows8Proの人はX86またはX64を、Surfaceを含むRT端末の人はARMを選択して下さい。(違うCPUアーキテクチャ選択してもexe実行できないのですぐ分かります)

f:id:win8dev:20130410151140p:plain

 

 

2.スタート画面から「Remote Debugger」を起動

f:id:win8dev:20130410151259p:plain

f:id:win8dev:20130410151332p:plain

3.VisualStudioにて実行対象を「リモートコンピューター」に設定

f:id:win8dev:20130410151423p:plain

RemoteDebuggerで表示された対象機器の名前を設定してください。

リモート対象の端末のログインIDとPASSを求められますので、入力。

f:id:win8dev:20130410151448p:plain

※セキュリティの厳しい会社等では他人にログインアカウント教えるとかご法度だと思うので、リモートを行う前にちゃんと説明しましょう。

 実行をすれば無事アプリが開発環境以外でも動くようになります。Surfaceでのデバッグや、ハードウェア依存でNFCついてないPCだったりする場合に使えると思います。

一度入れたアプリは基本的には端末内に残るので再度動かす事は可能ですが、入れ直したいときは既にリモート対象端末に入っているアプリをアンインストールしないと新しいの入れられないのでご注意下さい。

 自分は特にひっかからずにスムーズにリモートインストール出来ましたが、何かあったら公式ページをご覧ください。

 

■公式ページ

リモート コンピューターでの Windows ストア アプリの実行

http://msdn.microsoft.com/ja-jp/library/windows/apps/hh441469.aspx

 

 

Windowsストアアプリ開発イベント(アイデアソン+ハッカソン)をやります。

2013年GWに向けて開発イベントを色々やっていきます。

アイデアソンはわたくし、進行をやらせていただきます。

 

2013年4月16日(火) 19:30-22:00 

第1回@IT Windowsストア アプリ選手権追いこみアイデアソン

場所:赤坂王子ビル 7F アイティメディア

 https://event.atmarkit.co.jp/events/852e657e5e17013ee3fc8e6e60322f13

 

2013年4月26日(金) 19:30-22:00

第2回@IT Windowsストア アプリ選手権追いこみアイデアソン

場所:赤坂王子ビル 7F アイティメディア

 https://event.atmarkit.co.jp/events/46206f6e227dbfb33ac60915f97d2b74

 

2013年4月28日(日) 10:00-18:00

Windows 8 Developers ハッカソン5.0

f:id:win8dev:20130410122632p:plain

場所:マイクロソフト品川本社

http://atnd.org/event/win8devhack5

 

2013年5月3日(金) 10:00-18:00

Windows 8 Developers ハッカソン4.0

f:id:win8dev:20130410122710p:plain

 

場所:株式会社EngineYard

http://atnd.org/event/E0014704

 

各リンクから簡単に参加登録出来ます。

どなたでも参加可能なイベントですので、ご興味ある方は是非ご参加ください!!

Windowsストアアプリリジェクト(審査不合格)理由まとめ

毎回リジェクトされて切ないので資産として活用する為のまとめ。(※随時更新)

[参考]Windowsストアアプリ認定の要件

 

 要件3.6に抵触

 ・アプリを閉じる手段として、ボタン、ジェスチャ、またはその他UI要素が使用されている。

・アプリがプログラムで閉じるように設計されている。

・アプリを中断して適切な状態で再開することができない。

・アプリにアプリ バーが使用されているが、そのバーが下から上へのスワイプによって表示されない。

・ナビゲーションバーが使用されているが、バーが上から下へのスワイプによって表示されない。

 要件4.1.1に抵触

・アプリがネットワークに対応している場合はプライバシーに関する声明を用意しなければならない

要件6.5に抵触

・アプリが、1 つ以上の認定言語をサポートしていない。

・提出時に指定された言語の一部ではアプリが動作するが、すべての言語では動作しない。

・ [説明] ページの情報 (説明、機能、スクリーンショットなど) がローカライズ量を反映していない。

要件6.8に抵触

・1 つ以上のスクリーンショットに、実際より良く見えるようなグラフィック処理が施されている

WIndowsストアアプリの申請→公開の手順(後篇)

前回エントリでアプリパッケージの作成までをおこないました。今回は最後の仕上げ、ダッシュボード側の手順になります。とはいえ、

手順9:「販売の詳しい情報」の入力

アプリが有料か無料かと、販売する場所を設定します。有料アプリの場合は無料期間の設定有無や価格についてもここで入力する事になります。無料アプリで日本が配布対象の場合はほぼ設定する事はありません。

f:id:win8dev:20130316121219p:plain

手順10:「高度な機能」の入力

プッシュ通知と Live Connect サービスまたはアプリ内販売を行う場合に入力します。今回は基本的なアプリ申請手順になるので、高度な機能は無い事を前提とします。なので、何もない場合はそのまま保存ボタンを押せばOKです。

手順11:「年齢区分と評価証明書」の入力

Windows ストアでは、年齢区分を使うことで、顧客がニーズに合ったアプリを見つけやすくします。 ここでアプリの対象ユーザーに対応する年齢区分を選びます。 基本的には推奨になっている「12歳以上対象」にしておけば大丈夫です。アプリの対象が明らかに子供の場合は年齢区分は3以上または7才以上に設定します。ただし、子供対象にすると相応の審査基準が追加されるようなので注意してください。また、18歳以上を設定するとストアの一覧に出ない等、色々とありますので企画やアプリのターゲットがある場合でもそれを馬鹿正直に入力すると問題になるので注意しましょう。

f:id:win8dev:20130316123844p:plain

評価証明書はゲームアプリの場合に必要なようです。自分はゲームアプリ申請したことないのでよくわかりません。

手順12:「暗号化」の入力

アプリ内で暗号化が行われている場合にはその内容を記載します。何もしていなければ「いいえ」を選択するだけでOKです。

手順13:パッケージのアップロード

アプリ認証キットを使って認証されたパッケージファイルをUPします。パッケージファイルは申請対象アプリフォルダの[AppPackage]に「アプリ名_1.0.0.X_AnyCPU.appxupload」といった具合に入っているのでこれをUPします。

f:id:win8dev:20130316124356p:plain

 

手順14:「説明」の入力

ストアで表示される各項目の入力やスクリーンショットの設定をします。説明は好きに記載すればOKです。スクリーンショットは申請対象となるアプリの画面を最低1枚は載せなくてはなりません。各画像に対する簡単な説明も書かないと完了できないのでお気を付け下さい。問い合わせ先についてはユーザからの問い合わせの受け口になるので、申請アカウントのメールアドレス書いておけば大丈夫です。

f:id:win8dev:20130316124833p:plain

 

各項目にちゃんと説明書きされてるし、ミスるとエラー出るのでそれに従えば大丈夫です。

手順15:「審査担当者へのコメント」の入力

いよいよ最後の手順ですが、実はここの記載がいちばんキモです。ストアアプリはiOSアプリのように審査担当者が申請内容とアプリの最終テストをします。アプリの操作方法も全然知らず、しかも価値観も違う人が見るので色々と齟齬が発生します。なのでコメントとして「こういう観点で使うアプリである」とか「この機能はこうやってテストする」といったコメントをわかりやすく記載しましょう。記載は日本語で大丈夫です(リジェクトコメントは英語で返ってきますが)。

f:id:win8dev:20130316125410p:plain

 

コメントが申請の合否を左右する事も多いそうです。ちなみに審査が通らなくてリジェクトされた際にここのコメントで「いやいやそうじゃなくて」みたいなコメントをちゃんと書けば修正しなくても通る事もあります。

手順16:提出

以上の手順をすべて行い、心の準備ができたら「認定を受けるために提出する」ボタンをおしましょう。あとは数日待てばもれなく審査結果が届きます。

 

番外:リジェクトへの心構え

最初のうちはリジェクトがたくさん来る事でしょう。「お客様のアプリを認定できませんでした」というメールを見るたびに嫌気が指しますが、不可理由を見ながら根気よく修正したり、審査対象者へのコメントをすれば必ず通る日が来るので否定されても心を折らずにがんばりましょう。

WIndowsストアアプリの申請→公開の手順(前篇)

ストアアプリの申請は開発者をリードする為の仕組みが揃っていて順序立っているので「やり方全然分からない」という事はありませんが、結構時間がかかります。審査についてはAndroidほどゆるくはなくiOSほど厳しくなく時間ももう少し短いです。技術書や公式サイト等でもやり方は載っていますがここでは実体験をもとに一連の流れを書きたいと思います。

 

■ストア申請前の注意事項

・最初のうちは「少なくとも1時間は審査作業にかかる」と思ってください。業務で行うのであれば半日は申請作業時間として見ておいた方が良いです。申請から公開までは10日は見ておいた方が無難です

・お仕事として実施する場合にはアプリコメント、公開対象国、スクリーンショット(ストア内販促用含む)、各種ロゴ画像等々、クライアントの人に用意してもらう事も色々あります

・アプリのコードは完成形を前提とし、不要なファイル等があってはいけません

手順①:アプリケーション名の予約

ストアへの申請はVisualStudioの[プロジェクト]→[ストア]の各項目を行っていけば完了出来るようになっています。

f:id:win8dev:20130315004937p:plain

各項目はWindowsデベロッパーセンターのダッシュボードとも連動しているので、ここから操作をするという事は覚えておいてください。今回は既に開発者アカウントは取得している事を前提に説明します。まず、申請にあたってそのアプリ名をストアに「予約」する必要があります。既に誰かが利用または予約しているアプリ名は使えないので、アプリ名の予約は本当は開発前にやっておいた方が無難です。

f:id:win8dev:20130315005512p:plain

手順②:package.appxmanifestの記載を整える〜コンテンツUI〜

つぎにアプリのマニフェストファイルを整えていきます。package.appxmanifestファイルには「アプリケーションUI」、「機能」、「宣言」、「コンテンツURI」、「パッケージ化」の4つのタブがあり、それぞれ申請に必要な情報を記載する必要があります。これは左から順に記載していけば問題ないです。

 

f:id:win8dev:20130315003447p:plain

ここで不備がある場合はリアルタイムにエラーと原因が表示されるので、それに従えば大丈夫です。ロゴ等の画像はimageフォルダに入っているものになりますが、サイズが規定値より少しでも違うとエラーになるので注意。ロゴデザインが作成できない人はテキストベースで作成したアイコンのサイズだけ変更してすべてに適用するのが近道です。

手順③:package.appxmanifestの記載を整える〜機能〜

f:id:win8dev:20130315003836p:plain

アプリケーションが利用する機能です。ハードウェアやネットワーク通信をする場合にはチェックが必要になります。どれにも当てはまらない場合はチェックなしで大丈夫です。

手順④:package.appxmanifestの記載を整える〜宣言、コンテンツURI

f:id:win8dev:20130315004236p:plain

この2つは基本的に書いた事ありません。書かないで審査落ちた事もありません。

手順⑤:package.appxmanifestの記載を整える〜パッケージ化〜

f:id:win8dev:20130315004615p:plain

基本的には書かれている事をそのまま記載していきます。テンプレート等を利用していて「発行者」や「パッケージファミリ名」が違っていても後から関連付けられるので大丈夫です。そのまま進んで下さい。

手順⑥:アプリケーションの関連付け

VisualStudioの指示に従って開発者アカウントでログインすると、アプリの関連付けが行われます。先のマニフェストの発行者やファミリ名が予約したアプリ名と合わせて関連付けられます。

f:id:win8dev:20130315010720p:plain

手順⑦:認証キットを起動してアプリの事前審査を行う

ストアアプリは本番の審査に提出する前にローカルで認証キットを利用して自動テストをする必要があります。ストアメニューから「アプリパッケージの作成」を選択し、作成されたパッケージの自動テストを実行します。

f:id:win8dev:20130315010839p:plain

※注※認証キット(Windows App Certification Kit)は都度更新されています。古いキットが古いと本番の審査で落ちる事があるので、最新化しておく事をおすすめします

f:id:win8dev:20130315011125p:plain

自動キットはアプリの内容によりますが、大体10〜15分くらいかかります

f:id:win8dev:20130315011436p:plain

自動テストが完了すると結果が出ます。不合格の場合にはその原因もレポートにてちゃんと教えてもらえます。ちなみにこの時は外部ライブラリで追加したファイルの文字コードutf-8になっていなかった為、不合格となりました。

f:id:win8dev:20130315011701p:plain

レポートに従って修正すれば良いので、最初は不合格も出やすいですが根気よく対応すれば3回目くらいには合格出来ると思います。

手順⑧:アプリのスクリーンショットを撮影する

自動テストにも合格したのでそのパッケージはそのまま申請用ファイルとして使えるようになりました。VisualStudio側最後の行程としてストアで掲載されるスクリーンショットの撮影を行います。スクリーンショットエミュレータで簡単に撮影できます。「スクリーンショットのキャプチャ」を選択すると自動的にエミュレータが起動します。

f:id:win8dev:20130315012257p:plain

エミュレータのカメラボタンを押せば「ピクチャ」フォルダに画像が保存されます。

スクリーンショットは最低1枚で大丈夫ですが、自分の推したい画面は一応撮っておいて、最終的な提出時にチョイスすればよいと思います。

ここまででVsualStudio側での申請に関する作業は終了になります。あとはデベロッパーセンターのダッシュボードでの事務的な作業を済ませれば提出が出来ます。

ダッシュボード側のやり方は後編で説明します。

 

 

 

ストアアプリでMassage Dialog表示を6行で表示させる方法

公式のテンプレートや参考書にちゃんとした方法も書いてありますが、「そんなん見るのめんどくさい。とりあえず表示出来れば良い」という人の為に、余計な部分省いて超シンプルなやり方説明します。ついでにアプリをfinish(自分でアプリ終了)させる処理もいれました。手を入れるのは.jsファイルのみでHTMLやCSSは不要です。

 ■default.js

//①ダイアログ定義を任意の場所に書く

var msg = new Windows.UI.Popups.MessageDialog("メッセージテキスト");

msg.commands.append(new Windows.UI.Popups.UICommand("finish", commandInvokedHandler));

msg.commands.append(new Windows.UI.Popups.UICommand("Cancel", commandInvokedHandler));

msg.showAsync();

//②ダイアログのボタンが押された後のハンドラー

function commandInvokedHandler(command) {

        if (command.label == "finish") {

            window.close();}

 }

-------------------------------

実質6行程度、これだけです。

実行するとこんな感じ。

f:id:win8dev:20130310221918p:plain

 

アプリ終了はどうしようかと考えましたがwindow.close読んだらアプリ終了したので、いささか乱暴ですが今回は良しとしました。

実際にダイアログを出すタイミングや選択時の制御をちゃんとやるにはもっといろいろ書かなきゃならないと思いますが、まあ参考になればと思います。

ちなみにMSDNで配布されているサンプルアプリパック(http://code.msdn.microsoft.com/windowsapps/Windows-8-Modern-Style-App-Samples)の中に「Message dialog sample」というサンプルも入っていますので時間がある方はそちらを動かして色々試してみることをおすすめします。