ラベル StoreApp の投稿を表示しています。 すべての投稿を表示
ラベル StoreApp の投稿を表示しています。 すべての投稿を表示

2015年8月12日水曜日

WinRT とタイムゾーン・夏時間の話

2018年4月追記…なななんと北朝鮮がタイムゾーンもとに戻すらしいですね。
今回もおそらくMS先生はWindows Updateで対応するのではと思います。
ちなみに前回の変更お知らせはこちら
https://blogs.technet.microsoft.com/dst2007/2015/10/09/upcoming-windows-dst-update-for-turkey-democratic-peoples-republic-of-korea-and-fiji/




先日、北朝鮮が2015年8月15日を以て時制を現在のUTC+9から30分遅らせるよというニュースがありました。UTC+8:30になると。意図はさておき、とにかく一国の採用するタイムゾーンが変わる事になります。

で、この手の話はそれほど珍しい事ではなく、年に数回はどこかの国や地域でタイムゾーン・夏時間の変更が行われています。Windows の場合、その都度Windows Updateで対応するタイムゾーン・夏時間の情報が配信されます。


Windows のタイムゾーン・夏時間更新は、Technetのblogで通知されます。
普通に使っていればWindowsUpdateで自然と更新される感じです。
右のArchiveを見ると分かるように、結構頻繁に更新されます。


アプリ側は、上品に…自分の中にタイムゾーン情報等を持たず、OSのサービスから情報を取るようにしていれば、OSの更新に合わせて自動的に新しい情報を使えるようになるという仕組みです。

Wheel World Clock のタイムゾーン設定UI
これらのタイムゾーン(時間と名前)はアプリ内部で持っている訳ではなく、
OSの持っている情報を右から左に表示しているだけです。
北朝鮮用のタイムゾーン情報が配信されれば、ここにその旨が追加される…はず。


ただ、WinRT 上でタイムゾーン・夏時間の列挙・変換を行うには注意が必要です。

…この言い回しで、賢明なる読者様ならばあーはいはい大体わかったWinRT だからねだからなのね?とお分かりでしょう。はいそれで正解で、

WinRT API からは、「自分のローカルタイムゾーン」と、「UTC」 この二つしか見えない作りになっています。

  • OSのサポートするタイムゾーン・夏時間の列挙
  • 各タイムゾーン間の時間の変換

がバッサリ落ちてるんですね。困る。

※とはいいつつ、世界時計でも作るのでなければ…ローカルタイムとUTCだけで「大抵は」済む話かもしれません。

ただOS自体には機能があるので、それを叩くPCLがNuGetで公開されています。ありがたいことです。

WinRTTimeZones
https://www.nuget.org/packages/WinRTTimeZones/

ページにはWinRT, WinStore, WP8, WPA81, .NET4.5 がサポート環境として記載されていますが、試したところ Win10 UWP でも使えています。

拙作の世界時計アプリ Wheel World Clock も、このNuGet Packageを使ってタイムゾーンの列挙・時間の変換をWindows Phone 8.1 / Windows 8.1 / Windows 10 UWP 上で行っています。




※ 30分刻みのタイムゾーンは例が無い、けしからん!という論調のニュースが一部にはあるようですが、そんなことは無く…イラン、ネパール、中央オーストラリアのようにUTCから30分ずれたタイムゾーンを採用している国・地域は幾つか存在します。


2015年8月3日月曜日

Wheel World Clock UWP版 を公開しました


世界時計アプリ Wheel World Clock の Universal Windows Platform (以下UWP)版を公開しました。


Wheel World Clock
https://www.microsoft.com/store/apps/wheel-world-clock/9nblggh10zzn


今回の作業、UWP化の恩恵をフルに活用しよう!という訳では無く、この元々簡単な時計アプリをダシにしてアプリのUWP化・ビルド・ストアへの提出等の作業を一度全部通して試してみるのが目的です。

このため、UWPの売りであるところのAdaptiveなLayout変更やx:Bind等は全く使っていません。
Appとして破綻しない程度に動けばOK!くらいの簡単な実装です。



Win10 Desktop でWheel World Clock UWP が動いている様子



UWP対応でやったこと


Wheel World Clock(以下WWC)は元々「Win/WP8.1の」Universal アプリで、

  • Windows 8.1用Project
  • Windows Phone 8.1用Project、
  • 共用のShared Project

 から成るソリューションになっています。

今回、これに「Universal Windows」…UWP のProjectを追加し、3Project+Sharedのソリューションとする変更を行いました。


※今回は練習のため8.1 UniversalにUWPを追加する形にしていますが…今後特にWin/WP8.1用をメンテする予定がないのなら、素直にUWPだけのソリューションにしたほうが話は早いと思います。


UWP Project の追加


追加時にはフォルダ作成先に気を付け、三つ仲良く並ぶように作成。

Project三つ+Shared一つ


フォルダはこんな感じに並びます
ソリューション .sln ファイルは一つ上のフォルダ


8.1 Sharedは、各々のProjectの名前空間を共通にすることでSharedのソースを共通に参照する、という仕掛けになっています。
このため、UWP Projectをその名前空間に変更します。

  • Main.xaml / cs
  • PackageManifestのスタートアップを指定してるとこ


そして、参照にShared Projectを追加します。

Shared.projitem を参照に追加


最後に、App.xaml / cs を削除 (App.xaml / cs を共用している場合)。

ここで一発Appをビルドし、実行されAppのWindowが出てきたらソリューション・プロジェクトの枠組み作成はとりあえず成功です。

Project Unique な部分の変更


ここから先はApp Specificな部分が多いのですが、その中でもある程度アプリ共通な部分を挙げてみます。




備考…WWCの構成

WWCの構成を簡単に説明します(以降のUWP化作業理解の助けのため)


アプリが持っているページは二つ


  • Main.xaml  メイン。時計を表示するページ。
  • Cities.xaml  表示するタイムゾーンをカスタマイズするページ。

Win8.1用のCities ページ

WP8.1 用のCities ページ





そして、ぐるぐる回る時計はユーザーコントロールとして作ってあります。

Win8.1/WP8.1 Universal では、Main・CitiesをそれぞれのProject用、ユーザーコントロールは共通として作っていました。
今回のUWPも、MainとCitiesのみ別持ち、時計は共通のユーザーコントロールをそのまま使うという方針です(このためコード変更があんまり無い…)



SuspensionManager, NavigationHelper等のテンプレート部分


このあたり、今回UWPはBlankで作ったため初期状態では何もありません。

そこで、Microsoft が Githubに上げているSample集から当該ファイルをパチっ(持ってきて)使います。
今回、名前空間だけ変更しました(そのままでも別にいいですが…使う人のUsingが変わるだけ)

Commonに置くファイル 最低限これだけあればなんとか


一つ注意なのは、これらのSourceは8.1と異なりUWP用であるため、中でMobile DeviceFamilyのExtensionを参照しています。このため、参照にMobile Extensionを追加する必要があります。


App.xaml.cs の変更


WWCでは Application Insights を使っています。今回、UWP用を別集計としたいので…#ifdefで分け、UWP用のInstrumentation Keyを指定します。


Windowの最小サイズ変更・タイトルバーの色変更


UWPではAppの最小サイズを縦・横で指定できます。
指定はManifestでは無くコードで行います。
また、タイトルバーの色もここで変更します。OS標準の白は正直見づらいので。

App.xaml.cs で指定している様子
App.xaml.cs はShared コードであるため、UWP用の部分はIFDEFで分けます。


Main.xaml の変更


WWCでは、Windows用に三点リーダのAppBar引きずり出しボタンを自作して使っていました。UWPでは同じ物がCommandBarに組み込まれているため、そちらを利用しました。

広告

困ったことに、UWP 用のMicrosoft Advertising SDK はまだリリースされていません。無いものは仕方ないので、今回UWP版には広告を出さないことに決め、関連コードをコメントアウトしました。

Cities.xamlの変更


WWCでは、

  • 電話用 Pivot
  • PC用 Hub

で、UIを作り分けていました。

今回のUWP版ではPC・電話両方で動くわけですが…Hubは電話では使いづらいため、電話用に作ったPivot版をそのまま持ってくることにしました。 PCで動かすと見た目は少し悪いです。

UWP用のCities ページ
PC・電話ともにこれが表示されます
上のWP8.1用と構成が同じなのが見て分かります



また、元の電話UIにはバックボタンをつけていませんでした。これは電話では常にバックボタンがOS(またはハードウェア)で用意されているため、アプリ側では(特に処理が無いのなら)何もしなくてもよかったためです。

今回はそうもいかないので…タイトルバーに表示するバックボタンを使うことにします。
これはよくできていて、
Window表示…タイトルバーにバックボタン表示
フルスクリーン表示…タスクバーにバックボタン表示

という切り替えをOSが勝手にやってくれます。ありがたい。


バックボタンの追加
Cities.xaml.csのコンストラクタで行っています


タイトルバーのバックボタン


Win2D


WWCでは文字盤に貼り付ける画像の切り出しにWin2Dを使っているのですが、このライブラリがVS2015RTMのタイミングでWin8.1用とUWP用に分かれました。
このため、UWP版を使用するよう変更しました。



画像リソースの追加


これが一番面倒なんですが… UWP用にアイコン・タイル・スプラッシュ画面等の画像リソースを作成します。
UWPではベースのスケールが200になっているので、そのままではWin/WP8.1用の画像は使えないです。諦めて一個一個リサイズしましょう…
(.csprojでスケールを指定する方法も一応あるのですが、今回はUWP標準に揃えました)

また、UWPは電話・PC共通ですが…特に電話ではタイルを透明にすると見栄えが大変良いので、タイルはなるべく背景を透明で作ると良いです。

UWP用画像リソース


ストアへのアップロード用パッケージのビルド


本来なら引っかかる所では無いのですが…8月3日現在のWin10 SDKには問題があり、私のPackageはこれに引っかかってしまいました。
詳しくはMSDN Forumの当該スレッドを見て頂ければと(私も書いてます)。このスレの通り、更新版の.targets fileを使う事でBuildに成功しました。

RTM Known Issue: Release configuration fails to build on using Desktop and Mobile Extension SDKs in a Universal Windows app
https://social.msdn.microsoft.com/Forums/en-US/2887e169-348d-4d97-a359-aee413b5fa26/

この問題、鍵になっているのは.NET Native 用のFileです。
既定の設定では、UWP Projectは

  • Debug Build .NET Native Off
  • Release Build .NET Native On

になっています。
このためリリースビルドのアップロードパッケージ作成で問題が発覚した感じです。
私のようにリリース直前にエラー出て慌てるのもなんなので、開発中も「たまには」リリースビルドを行い様子を見るのをお勧めします。
私の経験では….NET Nativeに対応するためにコード変更が必要になった事は無いのですが、有るときは有るので(凝ったSerializerを自作してるとか)…その意味でもたまにリリースビルドを行い動作を確認するといいよ!とBuildでMSのエンジニアが言っていました。

なお….NET Native をOnにするとコンパイル・ビルドに偉く時間がかかります。私のポンコツマシン(Core2Duo 2GHz, Memory 4GB, SSD)だと、ARM/x86/x64 全部ビルドするのに17,8分。

ストアへのアップロード


ここはWebの言うとおりに進めることができ、特に引っかかる所は無かったです。
WWCは既にWin8.1とWP8.1用のパッケージがアップロード済みで、それに今回ビルドしたWin10 UWP パッケージが追加される形になります。
Win8.1/WP8.1用アプリが独立していた頃とは異なり、ストア上のエントリ…登録の扱いは一つ、その中に各OS用のパッケージが格納される感じです。

Win10 / Win8.1 / WP8.1 それぞれのパッケージが並んでいる様子


ユーザーがストアにアクセスし「インストール」ボタンを押すと、システムに応じたパッケージのみがDLされます(Win10に無理くりWin8.1用を入れる、とかは無し)。


最後に…


VS2015RTM+Win10SDK、出たばかりという事もあり中々スリリングでして…私のポンコツマシンだと、Win10 をクリーンインストールした上にVSをインストールした環境でも頻繁にフリーズが発生し、若干使い物にならない感じ(マイルドな表現)です。特にスタートアッププロジェクトを変更すると100発100中で死ぬんですが。困った。

そんな中でも今回の作業や画像掲示板ブラウザ F10の開発を続けられているのは、Azure VM上に安定したWin10+VS2015の仮想環境を確保できているのが大変大きいです。
本来なら使用料が発生する所ですが、昨年 Microsoft Taiwan が主催したアプリコンテスト「MSCC」の参加賞として3年分の「AzureとVisualStudio Enterpriseをタダで使える権」を頂いたので無償で使えています。本当に、Microsoft Taiwan には感謝しか無いです。有難うございます。




2015年7月20日月曜日

Windows / Windows Phone ストアへのリンクが動作しなくなっている件(修正されたようです)

(7/21朝更新: 現在、正しくストアへのリンクが動作していることを確認しました。リダイレクトの問題は修正されたようです。)


私の気付いている範囲では、7/17(金)よりWindows ストア・Windows Phone ストア へのURL リンクが動作しなくなっているようです。

具体例を挙げると、
Windows ストア へのリンク (Win8形式、例:PICT8)
http://apps.microsoft.com/windows/app/04366e7f-e3f2-4dd8-aa4b-629223935359

Windows ストア へのリンク (Win10形式、例:PICT8 *1)
https://www.microsoft.com/store/apps/9WZDNCRDHM4C

Windows Phone ストアへのリンク (例:WiFiSD8)
http://windowsphone.com/s?appid=0c242c2c-5c7a-4498-9999-118b116b162a

これらのURLを開こうとすると、関係の無い「マイクロソフト ストア」へリダイレクトされてしまいます。
検索で見つかる他のアプリも軒並み同じページへ飛ばされるようです。

「マイクロソフト ストア」

現状、回避策としては…ブラウザの言語設定を英語に変更する ことで、正しくストアのサイトにリダイレクトされるようです。
ただ、普段使いのブラウザで英語に設定といわれても…中々現実的な回避策とは言いづらい処です。

ちなみに7月18日(金)は、Windows 10用のストア、のWeb版が公開になった日でもあります。このタイミングでリダイレクト設定がおかしくなったのかもしれません。

Apps on Windows
https://www.microsoft.com/en-us/store/apps/

Windows 10 用のストア Web版
Windows / Phone アプリが一つにまとまっています

なお、この新ストアからアプリをクリックすると正しいページに飛びます。
見たところ、ダッシュボードそのままのURLではダメで、URLで明示的にen-usを指定すると日本語設定ブラウザでもアプリページが表示されるようです。

日本語設定ブラウザでも動く形式
https://www.microsoft.com/en-us/store/apps/PICT8/9WZDNCRDHM4C

困ったことに日本語の説明ページに飛ぶにはやはり日本語設定ブラウザではダメで、英語設定にする必要があります(ややこしい)
https://www.microsoft.com/ja-jp/store/apps/PICT8/9WZDNCRDHM4C






(*1) Win10 形式のアプリケーション URLは、新しい統合版ダッシュボードの各アプリページ → App Management → App Identity から確認できます。


2015年6月18日木曜日

MADOSMA で動作する自作アプリの御紹介

世は空前のMADOSMA ブーム(*1)に沸いておりますが、皆様は手に入れられましたでしょうか。僕も1台購入しました(*´▽`*)

*1 TwitterのTL見てるとそんな気がしてくる…

私の作っているアプリの中では、以下に挙げる二つがMADOSMA でお使い頂けます。
両方ともWindows Phone 8.1 / Windows 8.1 両方で動作するユニバーサル アプリとなっています。

小ネタ系の何でもないアプリですが、ちょいと試していただけると嬉しいです。

Wheel World Clock


Wheel World Clock
Wheel World Clock - Windows Phone ストア
https://www.windowsphone.com/ja-jp/store/app/wheel-world-clock/0c242c2c-5c7a-4498-9999-118b116b162a

Wheel World Clock - Windows ストア
http://apps.microsoft.com/windows/ja-jp/app/wheel-world-clock/1e591002-4ffa-4d49-b8e7-4d82f1211d16

窓の杜さんにご紹介頂きました。有難うございます。
【レビュー】くるくる回して時刻を算出。世界各地の時刻が一目でわかる「Wheel World Clock」
http://www.forest.impress.co.jp/docs/review/20150126_685175.html

くるくる回してピタリと判る世界時計。
世界各地の「現在時刻」が判る世界時計は多いですが、Wheel World Clockは「あそこの何時が日本の何時だっけ?」というときに文字盤をくるくる回すとすぐ判る、というアプリです。
…MADOSMAで動かすと、こう回転描画の滑らかさに欠けてイマイチな感じはありますね。直るかな。


ごみ出しカレンダー


ごみ出しカレンダー
ごみ出しカレンダー - Windows Phone ストア
https://www.windowsphone.com/ja-jp/store/app/%E3%81%94%E3%81%BF%E5%87%BA%E3%81%97%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC/4d7fece7-ccb5-4318-b6fd-6079c06153cf

ごみ出しカレンダー - Windows ストア
http://apps.microsoft.com/windows/ja-jp/app/gc-calendar/c3cdaa23-5b99-4b28-803f-00b90c86a601

窓の杜さんにご紹介頂きました。有難うございます。
【レビュー】入力データを複数端末で同期できるごみ収集日専用のカレンダー「ごみ出しカレンダー」
http://www.forest.impress.co.jp/docs/review/20141006_669662.html

Windows Phone のスタート画面(いわゆるホーム画面)は各アプリが様々な更新情報を表示できるようになっているのですが、そこにゴミ出しのカレンダーを出そうぜというアプリです。
登録したカレンダーのデータは、Windows Phone とWindows 間で自動的に同期されます。どちらか一方で入力して放っておくとじんわり伝わる感じです(すぐ同期される時もあれば十数分かかるときもあります。MS様のご機嫌次第)。


こんな感じ。それだけなんですけどね。






2015年6月4日木曜日

DDLGで製作しているアプリ Windows 10 以降の対応予定


私が作っているアプリの、Windows 10 以降の対応予定・どれがどのOSで動くのかについて簡単にまとめてみました。


AppWin8Win8.1Windows Phone 8.1Win10 PCWin10 Mobile今後の予定
futa8××Win8.1で終了
F10×××Win10 UWP版 今年後半予定
PICT8×××未定
WiFiSD8×××未定
Wheel World Clock×未定
GC.Calendar×未定


…表にすると意外にややこしくて驚くのですが、


  • futa8 … Win8/8.1 StoreApp。 F10に引き継ぎ、futa8の更新は終了する予定です(ストアには置きます)
  • F10(仮称) … Win10 UWP版の画像掲示板ブラウザです。今作っています。
  • PICT8 … Win8.1 StoreApp。現在、Win10 PCでは画像表示時の初期倍率がたまにおかしくなる不具合があります。UWP化は未定。やりたい気持ちはありますがまずはF10を片づけてから、な感じです。
  • WiFiSD8 … Win8.1 StoreApp。UWP化は…もうWebDAVがあるので別に要らないかなとも思ってます。
  • Wheel World Clock … Win/WP8.1 UniversalApp。このままでWin10 PC・Mobileで動くので、今のところいじる予定は無いです。
  • GC.Calendar … Win/WP8.1 UniversalApp。このままでWin10 PC・Mobileで動くので、今のところいじる予定は無いです。

ちなみに、マウスコンピュータさんのスマートフォン MADOSMA はWindows Phone 8.1で出荷、Windows 10 Mobile 対応は「やる気はあるけど未定」という言い方のようです。
Win10(PC)は7月末リリースが決まりましたが、Win10 Mobile の方は「今年後半」だけでまだふわっとしてますね。


2015年4月6日月曜日

Windows 10 UAP : Photo っぽいSplitView を作るには(途中)

 Win10 UAP のお手本として参考にしているMicrosoft の「Photo」、良く見ると結構謎な動きをしていて…


Win10 の Photo
ダンジョン出会いの奴面白いですね作画もいいし(関係無い)

  • 動作からすると画面上部のバーはCommandBar (※)
  • CommandBarの上には基本AppBarButton、AppBarToggleButton, Splitterくらいしか置けないはずなんだけど何故か「Collection」という字が乗っている
  • CommandBar、の親のTopAppBar・BottomAppBarはPageに生やすので、その上に何か乗ったりはしないはずなんだけど、SplitViewのPaneを展開すると上に被さってるように見える
※ CommandBar・AppBar共に見え方がWin8.1から変わっています 既定はボタンが見えてる状態の「Compact」State  昔のツールバーチックな使い方が想定されてるように見えます。



どうやってんでしょうね?


うーnうーnとそれっぽいのを作ってみたのが下です。

フォトのまねっこ


実現のキモとしては、


  • CommandBarのCompositeModeをMinBlendにして、他のElementの上書きを許す 又下の文字を透かす
  • そのままだとAppBarButtonのHoverが効かないので、ボタンのCompositeModeはそれぞれSourceOverに設定
  • そのままだとSplitViewのPaneを展開したときにCommandBarのBgColorが透けて見えてしまうので、PaneのOpen・Closeに合わせてCommandBarのLeftMarginを変える(ダサい…)
  • 「CommandBar上の」TextBlockは、実はCommandBarでは無くその下のRelativePanelに置いてしまう(ダサい…)


現状、動作の面でPhotoと違うのはCommandBar右端の「…」のHoverEffectが効かない所です。


ただ、ご覧になると判るようにかなり無理やりなので、今後の保守性・拡張性、また電話用にVisualState をくっつけていくと破綻するのでは…等、大いに不安が残る所です。
話半分で見て下さい。


 



    
        
               
    
    
        
                
                    
                        
                            
                            
                            
                            
                            
                                
                            
                        
                    
                    
                        
                        
                    
                
            
                
                    
                        
                            
                            
                            
                            
                            
                        
                         
                    
                        
                            
                                
                            
                        
                    
                
            
        
    






加えて、CodeBehindでCommandBarのMarginを変えています。

 

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (mySplitter.IsPaneOpen)
            {
                cbTop.Margin = new Thickness(mySplitter.CompactPaneLength, 0, 0, 0);
                mySplitter.IsPaneOpen = false;
            }
            else
            {
                cbTop.Margin = new Thickness(gdSplitterPane.ActualWidth, 0, 0, 0);
                mySplitter.IsPaneOpen = true;
            }
        }



2015年2月28日土曜日

MSCC Round 1 敗退しました

首記の通り、MSCC Round 1 敗退という結果になりました。
ほぼ自分向けの記事で、他の方に読んで頂いても得られるものは少ないかもしれませんが…この数か月間かなり本気で取り組んでいたものでもあるので、しっかり反省してケリをつけておこう、という趣旨の記事です。


完成


画像ビュアー+PDF/Zip リーダ PICT8 と、世界時計 Wheel World Clock で参戦しました。
MSCC、3年分の開発環境を頂ける参加賞は素晴らしいですが、やはり圧倒的に魅力なのは一等賞金60万円です。今のストアアプリ市場で60万稼ぐ事の困難さを考えれば、当時の私の目の色が変わったのも止む無しという所です。
こういう事はっきり言うのは何ですが、私は一等を取りたくてアプリを開発していました。
12月~1月にアプリを完成させた時は、やるだけのことは出来たという自負がありました。後は他の参加者のアプリ・Azureサービスがどれくらいのものなのかと。

増長


告白するのは大変に恥ずかしく、またその内容は他の参加者に対して大変に失礼なのですが、正直に言いましょう。
1月下旬でしたか?1週間ほど応募作品のリストが表示されていたことがありました(※1)。ざーっとストアを眺めた時…1等は別にして、「あ、これ箱1いけるんじゃね?」と思ってました。傲慢、なんたる傲慢。石を投げてくれて構いません。
箱1届いたらゲーム何買おうかなーーやっぱGTAVかなーウヘヘヘとAmazonを覗いたり。
哀れなピエロとはまさにこの事でしょう。ああああ。

※1 そのとき picolyl さんが作られた アプリリストのサイトがあります。本家 MSCC よりずっと見やすく便利。
MSCC App List
https://aliapps.azurewebsites.net/msccapps/

兆候


だがしかし、その増長も長くは続きませんでした。アプリは Application Insights で使用状況の統計を見られるようにしているのですが、PICT8 はその結果がはっきりと悪い。DL・販売数に比して使用回数が伸びて無いんですね。また、これは売りになるだろう、と自信のあった機能…FilePickerContract 機能、Zip/PDF閲覧機能…の使用頻度が極めて低いことも分かりました。

(こういう事象を察知できるのは Application Insights の面目躍如という所ではあります。便利です)

有料アプリ故DL数がそれ程伸びないのは想定内でしたが、その後の使われ方は予想を裏切るものでした。あ、これは…やってしまったかも……、今のデザインとアプリの展開方法に大きな問題があるのが判ったのが2月でした。

現実


2月27日のRound 1 発表、結果は改めて申すまでもありません。
ガックリと来たのですが…上に述べたような兆候もありました。
この結果は当然の事であったのでしょう。

反省


PICT8 

80MBくらいの巨大画像を連続でFlipできる、ズームで拡大操作を行ってから本サイズでデコードするのでメモリ食う量が少ない、ファイルのサムネイル表示が速い・詳細なEXIF情報表示等……自慢できる所はあるのですが…しかし、それらは数分さっと使って評価する場合には、あっさりとチュートリアルそのままに書いた簡単な画像ビュアーとほとんど差別化できない所です。アイデアを評価するという視点で見ると、如何にも普通の画像表示アプリであったのでしょう。引きが弱い。

Wheel World Clock

こちらはやっつけで書いてしまったアプリなので、評価低いのも止む無しかなと。時計ですからね。ただこれ、AIで使用状況を見ると World Wide に使われているようで、作者としては(こちらは)嬉しい誤算でした。無料ということもあり、DL数はPICT8よりずっと多いです。

フォーラム点数

質問2件・回答としてマーク1件、獲得ポイントは0点でした。
私がフォーラムの閲覧・回答作成に費やせる時間と今のフォーラムの状況では、これが精一杯だったかなと思います。が、評価点数の半分を占めるフォーラムで0点はやはり致命的な所です。


展望


私も技術屋さんなので、つい「技術的に可能になったイカす事」=「喜ばれる、売れるもの」と思い込んでしまう所があります。気を付けなければと思っているのですが、それでも今回のようにやってしまう。誰に向けての製品なのか、よく考えなければいけないですね。
今年はWindows 10 のスタートに加え、ここ数日で急に降ってわいたWindows Phone への日本市場の再参入話等イベントが多いです。せっかく参加賞として頂いたAzure+MSDNの3年使用権を使って、Azure や Mobile Service 系で面白い事(そして喜ばれるもの)を作ってみたいなと考えています。

☆☆☆

最後になりますが、
Round 1 敗退の皆様、お疲れ様でした。後は勇者に任せましょう。
勝ち抜かれた勇者の皆さま、おめでとうございます。魔王オスクリダの討伐…は中止ですので、是非エスポワール王国に光を取り戻すべく尽力していただければと思います。


2015年2月23日月曜日

Windows Phone ベースのデバイスで動作する Universal Windows アプリ開発着手のお知らせ


Windows Phone ベースのデバイスで動作する
 Universal Windows アプリ開発着手のお知らせ
 
 
(画像はベース)
 
 


DDLGは、Windows Phone ベースのデバイスで動作する Universal Windows アプリの開発に着手していることをお知らせいたします。 我々は、マイクロソフトの一つの Windows で幅広いデバイスをサポートするという取り組みを強く支持しており、これまで Windows 8 で動作するWindows ストアアプリ、並びに Windows / Windows Phone 両方で動作する Universal Windows アプリを提供して参りました。

今回マウス コンピュータの Windows Phone をベースとした製品を最新ユビキタス端末としてラインナップ化していくという発表を受け、この日本でも Universal Windows アプリのさらなる需要拡大が見込まれております。 弊社CEO佐藤は「Windows Phone エコシステムに日本という有望な新興市場が爆誕することを歓迎したい」と述べ、「一つのアプリ開発ベースで、従来のデスクトップパソコン、ノート、タブレットからWindows Phone、そして Windows 10 ではRasPi2 や XBOX One まで動作可能となる見込みの Universal Windows アプリには最早魅力しか無い。我々もアプリの Universal 化を加速し、この市場がアプリ開発者・デバイスベンダー双方にとって投資する価値のある、Win-Win な場となるようサポートしていきたい。Windows だけに」としています。


なお、現時点では Windows ストアアプリとして提供している 無線LAN内蔵SDカードクライアント WiFiSD8 の Universal アプリ化を予定しております。詳細な製品構成や販売時期につきましては、改めて後日発表させていただきます。


(簡単に言うと、WiFiSD8のUniversal化そろそろ始めるかーマウスコンピュータさんから遂にWindows Phone出るしな!、という意味。多少浮かれています:)

2015年2月22日日曜日

ストアアプリ が C#/C++/HTML どれで書いてあるかを確認する方法

ストアアプリがC#/C++/HTML, どの言語で書いてあるか気になりませんか?特に…これXAMLでどうやってんの?HTMLかも?という場合。以下がその方法です。

(2016/01/29 追記:Win10 以降の UWP…Universal Windows Platform Appでは、.NET を使うAppは全て.NET Native で配布されます。このため、この記事後半のC#/C++ の見分け方は通用しなくなっています。この記事の例・PICT8の用に、全てNativeBinaryの形です。)

※ この記事ではC#とVBの.NET 組を合わせてC#と表記しています。VB派の人ごめん。

タスクマネージャの詳細タブを開き、ヘッダで右クリック→列の選択と進み、「パッケージ名」をチェックします。

タスクマネージャ→詳細→ヘッダを右クリックして「列の選択」

すると、このように「アプリのパッケージ名」に対応する「プロセスの実行ファイル名」が分かります。

アプリ名とプロセス実行ファイル名

ここで実行ファイル名が「WWAHost.exe」になっているものはHTML/JS アプリです。

なっていないものはC# 又は C++ アプリです。

C#とC++を見分けるには…色々方法有りそうですが、僕が使っているのは Visual Studio と一緒に入るWindows SDK の CorFlags.exe を使う方法です。

実行ファイルが.NET モノの場合ヘッダには必ずCLR ヘッダが付き、C++ストアアプリ==ネイティブ実行ファイルには付きません(OSのローダはここを見てCLRをロードするか決めるので)。CorFlags に実行ファイル名をパラメータとして渡すことで、このCLR ヘッダ情報を確認する事が出来ます。

Visual Studio の開発者コマンドプロンプトを管理者権限付きで開き(というかSDKの.NET toolsにPathが通ってればなんでもいいですが)、c:\Program Files\WindowsApps 以下のアプリのディレクトリに移動し、アプリの実行ファイルをパラメータとして「CorFlags.exe」を実行します。

CLR ヘッダ情報が表示される場合、それは.NET アプリケーションです。
表示されない場合、それは ネイティブ アプリケーションです。


C#ストアアプリ Wheel World Clock に対してCorFlags.exe を実行した様子
CLR ヘッダが存在しているのが分かります

C++ ストアアプリ に対してCorFlags.exe を実行した様子
CLR ヘッダが含まれないためエラーとなります。


ちなみに、Program Files\WindowsApps を覗くと、HTML AppはHTMLやJavascript ファイルの中身を覗くことができます。ただ微妙にリバースエンジニアリングに片足突っ込んでいる気配もするので…この辺りにしておきます。

※ 管理者権限のコマンドプロンプトからはWindowsApps にアクセスできますが、エクスプローラーでアクセスするには結構色々権限を弄る必要がある+戻すのも大変なのであまりお勧めしません。

※ Win8 ターゲットのC#/C++ XAML アプリは、この方法でXAMLも覗くことができました。ビルドターゲットをWin8.1 にしている場合、XAMLはXBFにコンパイルされた形でインストールされるのでダメですが。


余談

これで色々動かしてるとすぐ判るのですが、プリインストールされているMicrosoft のストアアプリは殆どがHTML/JS アプリです。逆に、ストアに上がっているものはC#が圧倒的に多い感じがします。たまにHTML、まれにC++的な。ゲームだとC++が多いのかもしれないですが、僕はあまりゲームやらないので良く判りません。

余談2

現在はVS2015 で試すことができる面白技術、.NET Native をご存知でしょうか。.NET で書いたアプリをストアからDLする際、実行環境のアーキテクチャに応じてNativeにコンパイルし直した状態でインストールされるという、何周も回ってよくわからないけど凄い感じの技術です。これを使えば.NET Frameworkが全く入って無くてもC# ストアアプリが実行できるんだぜ!とMSさんは豪語しています(そんな環境があるのかどうかはともかく)。

確認してみましょう。C# で書いたストアアプリ PICT8 をこの.NET Native 有効にしてビルドし、実行ファイルを確認すると…

.NET Native アプリでCorFlags.exe を実行した様子

おおおお、確かにネイティブバイナリです。凄い。

2015年2月17日火曜日

うまく行かない人用の Application Insights ガイド

※2016年4月追記 StoreApp / UWP App用のApplication Insights 新規受け付けは2016年4月15日で終了しています。既存ユーザーはHockeyAppへ移行するようにというアナウンスが出ています。

Transitioning Mobile Apps from Application Insights to HockeyApp
https://azure.microsoft.com/ja-jp/blog/transitioning-mobile-apps-from-application-insights-to-hockeyapp/


この記事の要約

  • Application Insights (以下「AI」)とは何か?をこの記事で説明する気は全く無い
  • AIのインストールは上手くいけば簡単だがハマると泥沼
  • そんな沼仲間とインストール方法を共有したい

※ この記事で紹介するのは、Windows / Windows Phone用の C#/XAML ストアアプリのみです。JSもの・サーバものには触れていません。


プロジェクトへのAIの追加はとても簡単(なはず)です


ソリューション エクスプローラーのプロジェクト上で右クリックすると、「Application Insights を追加」というメニューが表示されているはずです。メニューをクリックすると、この記事で延々説明する面倒な作業は全てWizardがやってくれます。おめでとう!一番下の「完了!」へどうぞ。


☆☆☆


しかし、不幸にも…

  • メニューが表示されない
  • 表示されるが何故かVisual Studio Online に飛ばされてしまう
  • ApplicationInsights.configをクリックするとVSごとクラッシュしちゃって笑いが止まらない

…等、うまくいかない場合、Visual Studio の修復インストールで改善される場合があります。

でも…それでもうまくいかない…もうどうしようもない……そんな僕と貴方のための備忘録がこの記事です。
ここからは貴方自身がWizardになるのです。


必要条件の確認

作業に入る前に、環境がAI にマッチしているかどうか確認しましょう。


  • Visual Studio 2013 Update 3 以降 (以下「VS」と略)
  • Windows ストアアプリ 又はWindows Phone ストアアプリ のプロジェクト
  • Microsoft Azure のアカウント


※現状、Universal App の場合はWin・Phone それぞれ別個にAIを追加する事になります。Azure上の集計は別アプリ扱いです。今後どうなるのかは不明(統合するっぽい記述もありますが)。


以前のバージョンのAI の削除


StoreApp用のAIは、去年から今年1月までは「Visual Studio Online(以下VSOと略)上でテレメトリーデータを管理・閲覧」するものでした。
このVSO版は今後無くなることがアナウンスされており、現在使われているのは「Azure版」、AzureのPortal上でテレメトリーデータを管理・閲覧するものです。

そして、2015年2月現在まだPreview版のAIは…Web上のドキュメント、NuGetやVS拡張の説明等がVSO版とAzure版ごちゃごちゃに入り乱れているという大変スリリングな状態です。

以前のVSO版が入っている場合、まずそれを削除する必要があります。

NuGet パッケージの削除

ツール→NuGet パッケージマネージャー → ソリューションのNuGet パッケージの管理
でソリューションにInstallされているAIを確認します。
AIっぽいのが何も無ければOK。
何かAIっぽいのがあった場合は取り敢えず削除します。
何故かというと、説明文の記述が不足しており、コンソール上からVSO版とAI版を識別できないからです。Oh…

AI 拡張の「確認」

VSのAI拡張 (ツール→拡張機能と更新プログラム)を確認します。
VS2013 Update 3 以降をお使いの場合、何もせずともここにV2以降のAIが入っているはずです。
ここに無い場合・古いバージョンが入っている場合(0.7.0とか)…おそらく、修復インストールをするしかないはずです(探したのですが、どうもこの拡張機能のAIは単体では提供されていないようです)。

ApplicationInsights.config の削除

プロジェクト内にAIの設定ファイル ApplicationInsights.config が存在する場合、削除します。

ここまでの旧バージョンの削除でAIの右クリックメニューが表示され、Azure版だった場合…ここからWizardを使う事ができます。おめでとう!一番下の「完了!」へどうぞ。


AI NuGet パッケージのインストール


それでもダメだった場合、手動でNuGet パッケージをインストールします。
AI に必要なNuGet パッケージは全部で4つです。

AIの動作に必要な4つのPackage

依存関係にあるものは自動的に引きずられてインストールされるので、NuGet コンソールから手動でインストールする必要があるのは、2015年2月現在は以下二つです。

Win8.1 → Application Insights API と Application Insights for Windows 8.1 applications

WP → Application Insights API と Application Insights for Windows Phone 8.0 and 8.1 Applications

なお、AIはまだまだPreview版であり、また適用範囲が広い…Web用、DeviceApp用、JS用等、StoreApp用…ため、よく似た名前の別パッケージがごろごろしています。
パッケージを間違えないよう注意して下さい。以下、注意書きが多すぎて見づらくなってしまいました。すみません。

Windows / Phone 共通


Application Insights API
https://www.nuget.org/packages/Microsoft.ApplicationInsights/0.13.1-build00186
注意 2015年2月17日現在、このVersionが最新であるためここにリンクをはっていますが、必ずページ一番下のVersion History を確認し、最新のものを使うようにして下さい。

Windows 用


Application Insights for Windows 8.1 applications
https://www.nuget.org/packages/Microsoft.ApplicationInsights.WindowsStore/0.13.1-build00186

注意 2015年2月17日現在、このVersionが最新であるためここにリンクをはっていますが、必ずページ一番下のVersion History を確認し、最新のものを使うようにして下さい。

注意2
NuGet上には大変良く似た名前の別Packageが存在します。
Application Insights API for Windows 8.1 applications
https://www.nuget.org/packages/Microsoft.ApplicationInsights.Telemetry.WindowsStore/0.8.0-build10578
これはVSO用のPackageで、Azureでは動作しません。入れてはいけません。


Windows Phone 用


Application Insights for Windows Phone 8.0 and 8.1
https://www.nuget.org/packages/Microsoft.ApplicationInsights.WindowsPhone/0.13.1-build00186

注意 2015年2月17日現在、このVersionが最新であるためここにリンクをはっていますが、必ずページ一番下のVersion History を確認し、最新のものを使うようにして下さい。

注意2
NuGet上には大変良く似た名前の別Packageが存在します。
Application Insights for Windows Phone 8.0 and 8.1
これはVSO用のPackageで、Azureでは動作しません。入れてはいけません。

パッケージをインストールすると、プロジェクトに自動的にApplicationInsights.configが追加されます。

注意 この過程で、App.xaml にAIのリソース定義が自動的に追記されるのですが…このとき、App.xamlに自前で入れている空行やインデントは全て吹っ飛ばされるので覚悟してください。

ここまでは単にローカルにパッケージを追加しただけで、Azureとは紐づいていません。


Azure 上でのAI エントリ作成


Azure上にアプリ毎のAIエントリを作成し、インストルメンテーションキーを取得し、ApplicationInsights.config に埋め込んでAzureとアプリを紐づけます。

portal.azure.comにログインし、AIのエントリを作成します。
※ 旧管理画面…manage.windowsazure.comからは作成できません。

画面左下の「+追加」→Application Insights 、と辿ります。


  • 名前 名前です。「PICT8」、「WWC.Phone」など自分で分かる名前で。特にアプリ名等と一致させる必要は無いです。
  • アプリケーションの種類 Windows Phoneアプリケーション 又は Windows ストア アプリケーションを選択します。
  • リソースグループ AIで使用するリソースを選択します。無い場合は適当に作ります。
  • サブスクリプション お使いのサブスクリプションを設定します。
  • 場所 2015年2月現在、米国中部のみ選択可能です。

画面下の「作成」をクリックすると作成されます。

ここの「プロパティ」をクリックすると、インストルメンテーション キー、GUIDが表示されます。

Azure のAI→プロパティ ボタンで
インストルメンテーションキーを表示


これをコピーし、
プロジェクトのApplicationInsights.config の 「InstrumentationKey」に貼り付けます。
ApplicationInsights.config に
インストルメンテーション キーを貼り付ける


完了!

これで基本部分は終わりです。
アプリをDebug Buildして動かすと、数秒でAzureのPortal 上にテレメトリーデータが反映されます。Debugビルドではデータ送信頻度が高くなっているためです。
Release Build では確か1日1回?それくらいの常識的な頻度です。

また、この状態でAIの基本的なテレメトリーは既に動作しています。
セッションの開始・終了、ページ遷移のイベント、送信元のデバイス情報等です。

アプリ独自のカスタムイベント、カスタムテレメトリー(数値や文字列の送信)を追加する事もできます。
詳しくはMSさんのドキュメントを参照して下さい。

なお上でも触れましたが、MSDNのドキュメントはVSO版とAzure版、サーバ用とStoreApp用が入り乱れてカオスな感じになっています。
この↓カバーページから辿ると、比較的よくメンテされたAzure版のドキュメントを読むことができるのでお勧めです。

Application Insights documentation
http://azure.microsoft.com/en-us/documentation/services/application-insights/



又、VSO版と比べて…Azure版は随分細かいデータまで送信されるなという印象です。データの扱いやプライバシーポリシー、アプリの説明云々についてはこの記事では触れませんが、今まで以上に注意して扱う必要があるように感じられます。

最後に


先日、AIのNuGet Packageを最新版に更新すると、ローカルで動作はするもののWACKに通らなくなりストアに上げられなくなるという事故がありました(2月17日現在は修正版が上がっているので大丈夫)。
Preview と言ってもその完成度は様々ですが、AIのPreviewは結構ドキドキ感の強いPreviewです。気合です。
そして判らない事があったらMSDNのAI Forumでばんばん質問しましょう!

MSDN Forum - Application Insights
https://social.msdn.microsoft.com/Forums/vstudio/en-US/home?forum=ApplicationInsights



2015年2月10日火曜日

Windows ストアのアプリ認定にかかる時間調べ(2015年1月版)

2014年12月中旬から2015年2月頭まで、ストアにアプリを提出した後、どれくらいで認定・リリースされていたのか?自分のアプリでまとめてみた、という記事です。

2014年12月中旬~2015年2月初旬
PICT8とWheel World Clock、合わせて12回

平均値を出すと、

平均値

これの読み方と、最近のテストの傾向を挙げると…

現在、ストアの認定テストは「コンテンツ適合性テスト」…コンプライアンステストとも呼ばれ、ざっくり言うとエロス暴力酒薬のような宜しくないものが含まれていないかの有人チェックは、「毎回やるわけでは無い」ようです(正式なアナウンスあったかどうかちょっと記憶が無いのですが)。
上の例で見ると全12回の内、有人チェックがあったのは1回。
このコンテンツ適合性テストが行われる場合テストが完了するには数日かかりますが、無い場合は全部で1時間ちょいで終わります。

また、コンテンツ適合性テストが行われたかどうかは、ダッシュボードの「認定レポート」でも確認することができます。

コンテンツ適合性テストが無かった場合の認定レポート

コンテンツ適合性テストが行われた場合の認定レポート
上の例と比べると「コンテンツの適合性」という項目が追加されているのが分かります。

で、気になるのは「どういう理由でコンテンツ適合性テストが行われるのか?」ですが…これについては全く判らないです。ランダムなのかな?という気はするのですが。
なお、建前としては「毎回一からテストをする」事になっており、前通ったから次も通るとは限らないです(コンテンツ適合性テストは人によりさじ加減がかなり違います)。

また、最近は上のように随分短くなっているのですが、例えば2013年~2014年くらいはほぼ「毎回」コンテンツ適合性テストがあり、毎回数日掛かっている頃もありました。

この先どうなるか判りませんが、Phone と合流してもこの調子の素早い認定が続いて欲しいなと切に願う次第です。






2015年2月8日日曜日

DDLGで製作しているアプリのWin10 bld9926 動作状況

私が作っているストアアプリの、Windows10 build9926 での動作状況について簡単にまとめます。

方針としては、

  • 今年四月の開発者イベント //build 2015 で方向性が出るまでは特にWin10用の修正は行わない予定
  • が、現状特に困る部分があった場合はその限りではない

という感じです。
下で触れられていない気づいた点等ありましたらお気軽にお知らせください。

全アプリ共通


  • Win10でのシステム既定フォントの変更により、これまでメイリオで表示されていた文字が游ゴシックで表示される部分が多いです。
  • 現在のWindows 10 の仕様により、タッチ操作でアプリバー(Win8 では画面下・上からのスワイプで表示されるメニュー)、設定チャーム(Win8 では画面右からスワイプで表示)が使いにくくなっています。

Win10 build9926 での操作方法は、

アプリバー

タッチ


  1. 画面上からスワイプしてタイトルバーを表示
  2. 左端の「三」をタッチしてメニューを表示
  3. メニューの「… App Commands」でアプリバーを表示

マウス

今まで通り右クリックでアプリバーが表示されます。

設定チャーム

タッチ





  1. 画面上からスワイプしてタイトルバーを表示
  2. 左端の「三」をタッチしてメニューを表示
  3. メニューの「Settings」で設定チャームを表示

マウス

  1. 画面上部をクリックしてタイトルバーを表示
  2. 左端の「三」をクリックしてメニューを表示
  3. メニューの「Settings」で設定チャームを表示


今後の方針


PICT8・Wheel World Clock については画面下部にアプリバーを表示するためのボタン(横長で、右端に「…」が表示されている)があるため使いにくさは多少緩和されている物と思いますが、
futa8・WiFiSD8・ごみ出しカレンダー についてはボタンがありません。
このため、これら3アプリについては順次、PICT8のようなアプリバー表示ボタンをつけたVersionをリリースする予定です。

アプリバー表示ボタン
PICT8・Wheel World Clock には付いています



以下は各個の状況です。

PICT8


動作

ほぼ問題ありません。

細かい部分


  • PDF・Zipを開いた場合、最初のページのズーム倍率がおかしくなる場合が多いようです。ページ送りを行うと正常な倍率に戻ります。
  • フォルダを追加する際、「ライブラリ」のルート…例えば、ライブラリの「ダウンロード」を追加しようとするとエラーになります。ダウンロードのもう一階層下のフォルダを指定すると追加できます。

futa8


動作

問題ありません。

細かい部分


  • 現状、特に気づいた所は無いです。ただ、ストアで「Win10で動かない」旨のレビューを付けてくださっている人が居るので気になっています。自分も動かない、という事がありましたらお知らせいただけると有難いです。

Wheel World Clock


動作

問題ありません。

細かい部分


  • 公開初期のバージョンでは、背景画像を指定した場合にアプリケーションが異常終了する、指定しても描画に反映されない等の不具合がありましたが、現在ストアに上がっているバージョン(1.1.0.7)で修正・対策済みです。

WiFiSD8

http://apps.microsoft.com/windows/app/wifisd8/1f490d0d-4c05-4417-ac24-f51c24e29c2b

動作

問題ありません。

細かい部分





  • 現状、特に気づいた所は無いです。

ごみ出しカレンダー


動作

問題ありません。

細かい部分





  • 現状、特に気づいた所は無いです。











2015年1月29日木曜日

Pubcenter での自アプリ広告

この記事の要約

  • Microsoft Pubcenter に、有料の広告が無い場合に自アプリの広告を表示する機能がついた
  • 自分のアプリに自分のアプリ広告を載せる分にはタダ
  • 広告料を払うことで、PubCenter を使っている他アプリに自分のアプリ広告を出す事も可能


Wheel World Clock の下部に
自アプリ(PICT8)広告が表示されている様子

要約でほぼ全て語りつくしているのですが…昨年10月、Microsoft Pubcenter に「広告が無い場合に自アプリの広告を出す」、という機能がつきました。

Announcing New Capabilities for Developers to Promote their Windows and Windows Phone Apps
http://advertising.microsoft.com/en/blogpost/129472/microsoft-advertising-blog/announcing-new-capabilities-for-developers-to-promote-their-windows-and-windows-phone-apps

先日リリースした Wheel World Clock で試しに使ってみています。
※上のblogでは英語圏のみサポートとなっています。が、現状日本でも広告が表示されるようです(販売が日本のみ…en-us用のストアURLが無い場合は無理かもしれない)。

広告の製作


Pubcenter Dashboard から行います。
https://pubcenter.microsoft.com/Dashboard

Dashboard 右側の「Ad Campaigns > Promote your app」をクリック
「Promote your app」をクリックすると、下の広告作成画面になります。
画面に従ってマウスで突っついていけば終わります。


広告を作成している様子


注意点としては…


  • 最初にアプリのストアURLを入れるのですが、ここは英語圏用なので「en-usの」URLを入力します。ja-jpは通りません。
  • ここのフォームの入力チェックは少し変わっていて、入力後フォーカスが外れた所で入力のValidationが行われます。
  • 広告に使う画像は、ストアに登録しているストアアイコン(*1)・スクリーンショットの中から選びます。
  • 使える広告サイズは、728x90, 160x600, 300x250 の三種類です。
  • 一行、アプリの紹介を追加できます。ここも文字数・WordingのValidationがあります。



余談1
広告で使われるアイコンは、アプリのPackage.appxmanifest で指定する「ストアアイコン」です。
これは僕も含めてかなりの人がはまっている罠なのですが、
ストアアイコンは背景を透明にしてはいけません。
Windows ストア だけは背景色をManifestで設定した色で塗ってくれるのですが、それ以外…このPubCenterやWindows Phone ストア、又MS以外のストアのXMLをクロールするようなサービス…AppFedsやApp annie等は全て指定した背景色を無視し、ストアアイコンをそのまま表示します。

この為、背景が透明+前景のアイコン図柄が白の場合はほぼ何も見えないという悲しい結果になります。

辛うじて灰色背景なので見えているアイコン


逆に、スタート画面等で使うタイル 画像については基本、背景は透明にしたほうが見栄えは良くなります。
ただ、デザイン上全部塗るスタイルもあるので…ここはアプリそれぞれです。

余談2
タイル画像・ストアアイコン、数が多いので人力で作るのは大変です。
自動生成してくれるサービスは幾つかありますが、僕が何度もお世話になっているのはここです。(ストアアイコンも背景透明で作ってくれてしまうので注意)

Windows Store Image Generator
http://wat-docs.azurewebsites.net/Tools

  • Windows / Windows Phone 両対応
  • Splash画像やPromotion画像も作ってくれる (そのまま使う事はあまり無いですが、指定サイズの画像が作られるだけでも作業はかなり捗ります。数が多いので。)


2015年1月24日土曜日

Win10 TP build 9926, アプリ開発目線で見た感想

(画像を追加しました 1/25)
首記の通り、今回初めてタブレットでWin10の動作を確認することができました。
アプリ開発にあたって、これは影響あるなぁと思った事を書いたよ、という記事です。

ただ、今回まだTechnology Preview であるので、「Win10はこういう動きをするよ!さあ今すぐアプリを書き換えよう!」というつもりは全く無いです。

APIやDesignの詳細が出る4月の//Buildまではもう何がどう変わってもおかしく無いと考えるべきですし、それの前に作業するのは完全にDouble Effortになってしまいます。
が、
今後MSさんはどうするつもりなのかな、というのは判っとかないと結構怖い。今作ってるアプリが//buildでフタ開けてみたら全然デザインに合わなかった、というのはしんどいです。
そういう視点でチェックした確認と、その感想を思いつくままがーっと書いてみました。

(まだ使って1日目ですが、「1日目の感想」……まだ慣れる前に感じたことは後々はもう思い出せないので)

ファイルピッカーの動作

ストアアプリのFilePickerOpenCallで、FilePickerが出てこない。DesktopのCommonFileDialogが出てくる。
StoreAppから開く場合、CommonFileDialogのナビゲーションペイン内にFilePickerContractを提供するアプリが表示され、Contractはそこから使える。

感想 タッチ用にFilePickerは残しておいてよかった気がするが Contractが使えるのは大きな進歩(以前のWin10 Buildでは使えなかった)


タブレットモードOn・Offの違い

(以降Tab On/Offと表記)

キー入力を食うコントロール(Textbox等)をタッチした場合


  • Tab On 即ソフトキーボードが表示される。
  • Tab Off 手でタスクバーのキーボードボタンを押し、呼び出す。


これはストアアプリ・デスクトップに関わらず共通。

感想 TabOnでデスクトップアプリはかなり使いやすくなったのでは。また、手に持ってピュアタブとして使う場合はTab On 必須になるのでは(いちいち手で押すのは苦痛)

アプリ領域の分割


  • Tab On できる
  • Tab Off できない


感想 これは使ってみると差がかなりあって、ピュアタブとして使う場合Tab Offは苦痛。


所謂Snap動作

これは動作がかなり変わっているようで、

  • Win8.1 アプリによっては最少幅320px、の範囲である程度自由に配置
  • Win10 どうも、4:6程度に寄るのが最大。最小幅320pxのアプリであっても、それのずっと以前の幅で最小化になる。

感想 Win8.1の時のように幅の定義が変わったのかもしれない。//build待ち。

アプリバーの冷遇されっぷり

今までは一番使いやすかったアプリバーがとにかく(UI操作上)遠い。
画面上スワイプ→左上のハンバーガーをタッチ→App Commands をタッチ、でやっと出てくる。

8.1で出てきた画面下部のアプリバーボタン(…)、使っているアプリもあるが、今の8.1ベースの高さであのボタンを押すのは困難。ウィンドウモードだとかなり困難。どうも、ウィンドウモード時はウィンドウのサイズ変更用にエッジの認識エリアをほぼ全部使っているような動作。なのでサイズ変更は指でも結構簡単。

感想
Win10アプリのおそらくお手本であろう「フォト」ではそもそもアプリバーを全く使っていない、現在の距離の偉い遠さからすると、現状のアプリバーUIは下位互換用に取り敢えずつけてるだけなのでは?という気がする。
//buildで新しいCommand UIのDesignとControlを出してくるのでは?//build待ち。
が、今までのようにアプリバーをFirst Class の便利なUIと考えてアプリ作るのは危険だぜ!!という気がビンビンします。

下のキャプチャ画像は、、同じFrameworkを使ってる?ような感じの「フォト」「マップ」です。
左上のハンバーガー「三」をクリックすると、画面左端からメニューがスライドします。
フォトの場合、右のメインコンテンツはそれに合わせて縮小。
マップの場合、Flyout的にマップの上に被さって表示。


「フォト」アプリ、左端のメニューが閉じている画面

左上のハンバーガーボタンを押し、左端のメニューが開いている画面
フォトでは開いた状態で右のコンテンツを操作可能


「マップ」アプリ 左端のメニューが閉じている状態

開いている状態
マップではここで右の地図を操作するとメニューが閉じる
Win8.1のFlyout的なModal動作



MS謹製ストアアプリ

Win10用に完全に作りなおしたように見えるのは

  • フォト
  • XBOX
  • チュートリアルアプリ
  • マップ
  • Skype

の四つくらい。特にフォトとマップは同じ考え方でUIを作っているようで、これがこれからのデフォなのかな・・・と思わせる。
Skypeは元々勝手なUIなのであんまり参考にはならないかな。
他はまだWin8ものをそのまま持ってきてるように見える。

感想
この先、MSがアプリどうするつもりなのか見るには「フォト」「マップ」この二つを使うのが良いのでは。
アプリの標準テンプレートの見た目とか随分変わるのではないかなぁという気がする。//build待ち。

その他雑多なこと

  • StoreAppからFolderPickerを使う場合、ライブラリのルートを選択できない。これ微妙にバグな気がするんだけどどうだろう。FolderPickerの呼び方で何か変わるのかもしれない。//build待ち。
  • ストア版IEって無くなってるような? これはTab Onだとタッチでも普通に使えるのでこれはこれでいいのかもだけど。

2015年1月20日火曜日

Wheel World Clock を公開しました



Wheel World Clock
Windows 8.1 / Windows Phone 8.1 で動作します


ストアアプリ「Wheel World Clock」を公開しました。
Windows 8.1 / Windows Phone 8.1 でお使い頂ける Universal Windows Appです。無料です。

Windows ストアからダウンロード
Windows Phone ストアからダウンロード

Google Play で手に入れよう
Google Play からダウンロード

※ May 2017: Android version へのリンクを追加


Wheel World Clock で できる事

世界時計です。

  • 文字盤はタッチ・マウスでぐりぐりと回すことができ、回転に応じてその時間・日付が表示されます。「1月21日午前9時(米太平洋時間)にイベント開始!」と言われても日本時間にすぐ暗算できないんだよ!UTC で書けよ!という僕や貴方のための時計です。
  • 表示するタイムゾーン・表示名は変更可能です。OSがサポートするタイムゾーンを全て使う事ができます。
  • 夏時間、Daylight Standard Time に対応しています。OSが対応していれば、その季節になると自動的に夏時間のタイムゾーンに切り替わります。
  • 時計の文字盤画像を貼り変えることができます。


米太平洋時間1月21日午前9時、は
Wheel Wold Clockでくるくる回せばすぐわかる!という作為的な例



注意

  • タッチ・マウスでぐりぐり回す際に回転がスムーズに行かない場合、画面下部のアプリバー → 「Settings」→ 「Show each time during rotation」のチェックを外すことで改善される場合があります。Tegra2 世代のWindows RT機や、初期のAtomタブレットではチェックを外したほうがいいかもしれません。
  • アプリ実行中に標準時~夏時間を跨いだ場合、表示は自動的には変わりません。一度アプリを閉じ、再度起動する必要があります。
  • 時計の文字盤画像を貼る場合、Windows 8.1 では左上から最大の正方形を取れる分を自動的に切り取り、表示します。Windows Phone 8.1 では画像の形に関わらず正方形に縮小して表示します。



余談

  • 2006年くらいですか、WPF が入ってきた頃にこの手のサンプルアプリを良く見たような気がします。書いていて少し懐かしい感じがしました。
  • このタイプの時計…というか変換板の元ネタは、大昔にどこかで貰った国際電話のプロモーション用の小さなカードです。カードの真ん中にくるくる回る円盤がはめ込まれていて、中に都市名が書いてあり、回すと各地の時間がわかるという。所謂「世界時計」…各地の現在時刻が並んでいるタイプは良く見かけますが、ニュースやWeb を見ていて「○○時間△時」を日本時間に直すにはあのカードが一番便利だったなーという記憶がずっとあったのでした。MSCC 向けに小ネタで何か作るには丁度良いかなとガーっと書いてみた感じです。