霜月のい のすべての投稿

今年買ったW10M端末とそれからアプリでのバックグラウンド再生実装

Windows 10 Mobile / Windows Phone Advent Calendar 2016の17日目、終わりも近づいてまいりました。

去年の11月末にNovember Updateのバージョンで正式リリースされたW10Mは、今年降ってきたAnniversary Updateが初めての大型アップデートとなりましたね。W10Mリリースが何だか遠い日の出来事みたいに感じるのですが、そう、まだ昨年末の話です。

NuAns NEO

現在メインで使用している端末です。注文自体は去年でしたが、端末の入手と支払いは今年なのでカウントします。

薄さ合戦が行われる中で敢えて厚くしてきたボディには、5インチ端末としては大容量のバッテリーが搭載され、またSuicaなどのカードを収納するスペースも用意されています。

さらにTWOTONEと呼ばれる上下半分に分かれたカバーをそれぞれ自由に付けて外装をカスタマイズできることも特徴で、私は通常版のTWOTONEを第一、二弾とも全種揃えています(コンプリート特典を貰った最後の1人)。

サイズとスペックのバランスから、まだしばらくはメインを張りそうです。

MADOSMA Q601

マウスが発売したMADOSMAシリーズ第二弾。初代Q501の5インチに対してこっちは6インチ。個人的に6インチは大きすぎるので開発機兼イベント用。

ふかふか団地として参加した文学フリマではUWPアプリとして自作した会計用のツールをこの端末で使用しました。

HP Elite x3

HPが出してきたW10Mでの世界最強スペック端末。Windows Helloによる虹彩認証と指紋認証を備え、SD820搭載ゆえの有線Continuum対応というすごいやつ。

5インチ以下なら間違いなくメイン端末にしていた。6インチってやっぱり普段使いするには大きいなぁ……。

スリープ状態のとき、指紋センサー部分に無駄に触れたくなるのが特徴。

NEOのカバー一式も含めると全部で20万円くらいでしょうか……うーん随分使いましたね。今年はしかもこの間AmazonのCyber MondayセールでSurface Book(もちろん言うまでもないほど至極当然のことだがメモリは16GBである)を22%オフだったとはいえ30万で買ってしまったので来年ちょっとどうしようかなぁという感じに。

Anniversary UpdateとUWPと超!A&G+プレイヤー

今年の前半くらいからUWP化しようと思ったまま作りかけで放置していた(その状態で毎週使っていた)超!A&G+プレイヤーを、Advent Calendarやるしそれまでに仕上げるかと思い立って書き直していたわけなんですが、いやはや今更ながらAnniversary Updateでのメディア再生API改善を知ってこれはもう良いじゃないのと。

昔ながらのバックグラウンド再生

Windows Phome 8.1向けに作成した超!A&G+プレイヤー 1.0はバックグラウンド再生に非対応で、つまりそのアプリを常に表示した状態でないと再生できません。動画無しの番組だから画面を切って再生したいとか、Twitterアプリで実況ツイートしたいとか、そういうことをしようとスリープさせたりアプリを切り替えたりするとサスペンドされて再生も止まってしまう……という少し残念な仕様でした。(実はアプリコーナーを使うと前者は実現できる)

もちろん実装したい機能ではあったのですが、WP8.1時点では(そしてW10MでもAnniversary Updateが来るまでは)フォアグラウンドとバックグラウンドをそれぞれ別のプロセスとして実行させる必要があり、それ故にその両方で別々にストリーミングサーバとの通信をしなければなりませんでした。

音声データであればバックグラウンド側に寄せてしまえば済むのですが、アプリ上に映像を表示しなければならない動画ではそうもいかず、アプリ切り替え時には通信が再開するまで数秒程度再生が中断されることになります。

それでもまあ実装できるならすればよかったのですが、微妙な挙動の上に実装が面倒くさいために見送っていました。

シングル プロセス モデルだと……!?

それでもやはり実装したいなと思い、UWPにする機会に対応させようと改めてバックグラウンド再生の資料を漁ってみると、「シングルプロセスモデル」なる表記が。Anniversary Updateから導入されたというではありませんか。

実装方法もMediaPlayerを使うだけ(画面で表示する場合はMediaElementではなくMediaPlayerElementを使いMediaPlayerを設定する)。ちょっとまって簡単すぎない? 今までのやり方と比べて遙かに楽なんですがこれ。

しかもフォアグラウンドとバックグラウンドで同じSourceを共有するのでアプリを切り替えても途切れることなく完全にシームレスに再生が継続する。ようやく、といったらまあそうなんですが、これが出来るようになってある種の感動を覚えました。

もっとも、コード側でやることが少なくないのでMVVM的にやりたいってなったらBehaviorを作るなりMediaPlayerElementを継承したコントロールを作るなりしてバインディング出来るようにするとかの一手間は掛かりますがIBackgroundTaskでごにょごにょするのに比べたら(比べなくても)すぐに済む作業ですよ。

と、いうわけでバックグラウンド再生に対応したUWP版の超!A&G+プレイヤー 2.0を申請しました(まだ通ってない)ので公開された折にはよろしくお願いします。

Advent Calendarも残すところもあと8日、明日の担当は Naba0123 さんです。

Elite x3 有線Continuum編

DisplayPortのケーブルを買ってきたので有線Continuumをやるぞー!

2016102901

デスクドックにDisplayPortのケーブルを差し、ディスプレイと接続する。で、Elite x3をセット。

ドックがディスプレイと繋がった状態でx3をセットすると自動でContinuumが始まる。

2016102902

1280×720のディスプレイ。720pで出力される。

2016102903

1920×1080のディスプレイ。1080pで出力される。

有線接続なので遅延もほぼ無く、無線の場合と違ってドックに差し込むだけでサッとContinuumを開始できるのも良い感じ。終了するときはドックから取り外すだけ。

2016102904
2016102905

ところで、有線接続を行った場合、Phone本体に表示されるContinuumアプリの画面に無線時にはある切断ボタンが表示されない。切断ボタンは無線用で、有線の場合はドックから外してねというスタンスなのかと思ったら、HPのサポートアカウントがこのようなツイートを。

仕様通りっぽいけどなー。

Elite x3

はい、HPのElite x3が届きました。

2016102601

なかなか大きな梱包で。下の大きい方がデスクドックです。

2016102602
2016102603
2016102604
2016102605

中身。本体の方は端末とAtoCのUSBケーブル、充電器。デスクドックの方はドック本体と付け替えのアタッチメント、ACケーブルはデスクトップPC用かな? という感じの太いケーブルでなんともHPらしい。

セットアップ

2016102606

電源投入。

2016102607
2016102608

他の機種と違うのはセットアップの時にHPの登録画面が出てくるところ。姓名に漢字を入れたら弾かれてしまった。

2016102610
2016102611

初期状態のスタート画面にはHP Workspace、Salesforce、HP Picks、HP Device Hubの各タイルが。

2016102609

セットアップ直後のバージョン情報。どうやらOS、ファームウェア共に初期出荷版から更新されている模様。最初からAnniversary Update後のバージョンに。

2016102612

プリインストールの設定がないのでAPN設定は手動で。

Windows Hello

2016102613
2016102614
2016102615

Windows Helloの指紋認証と虹彩認証。アップデートしないと使えないという話でしたが、初期出荷版から更新されているためか最初から使用可能でした。

2016102616
2016102617

虹彩認証もセットアップして早速確認。虹彩認証はロック画面を表示させてから、指紋認証はスリープ状態でも通ります。

デスクドック

2016102618

さて、デスクドックの方には上部のガワを付け替えるアタッチメントが4つあります。ケースに応じて適したサイズのものを使用する形。左下のやつはケーブルを挿して使うというわけですね。なお本体は設置時の安定性を重視したかズッシリ重たい。

2016102619

デスクドックの端子類。DC電源、有線LAN、USB Type-Aが2つ、USB Type-C、DisplayPort……。DisplayPortだって!?

持ってません。というわけで有線Continuumは試せません。そして我が家は全面的に無線LAN化していて適当なLANケーブルがないので有線LANも試せません。

2016102620

ま、まあとりあえず無線マウスとRealforceだけ繋いでみる。これは問題なく動作しますね。

とりあえずアップデート

2016102621

ファームウェアとOS両方の更新有り。

2016102622
2016102623

アップデートしたら何やらプリインストールのAPN設定が付いたが……3つしかねえ! しかしdocomoの2つはわかるけど、残り1つがFREETELとな?

はてさて

DisplayPortはうっかりしてたけど、まあしかし、いやあ良いですねえ……。それにしてもちょっと今年お金使いすぎなんじゃないですかね自分。実家暮らしなのに全然貯金が増えませんけど。

2016102624

Windows 10 Mobileシリーズ。左からMADOSMA Q501、NuAns NEO、MADOSMA Q601、Elite x3。

NuAns NEO、1日使ってみて

さてさて遂に出ましたNuAns NEO。さっそく1日使ってみたので感想をば。OSやアプリ周りのあれこれについてはもうMADOSMAを使ってきているので比較とかそのくらいで。なお、iPhoneやAndroid端末を持たない純Windows Phone/Windows 10 Mobileユーザなので感想には偏りのある可能性があります。

我らが大正義MADOSMA先生。最近はもっぱらオレンジカバー。
WP_20160201_19_56_46_Pro
NuAns NEO起動ロゴ。
MADOSMAのバックアップを利用可能。

サイズ・形状

5.0インチはやっぱり大きい。MADOSMAと比べると、画面サイズは同じで、本体は縦が僅かに短く横が少し広い。持ちやすいデザインということで、しっかりグリップしたときの持ち心地は良い。グリップせず手に乗せるだけの使い方では滑りにくいオレンジカバーなMADOSMAの方が上(これはカバー選択によるか)。

やはり特筆すべきはその厚さで、MADOSMAのおおよそ1.3倍、IS12Tをも僅かに上回る(あの出っ張ったカメラ部分を除く)という近年稀に見る分厚さ。個人的には正直あまり薄さに対してメリットを感じてはいないのでこの厚さにして大容量バッテリーを載せるという選択はグッド。あとは画面サイズがもうちょっと小さいと片手持ち派としては嬉しいのだけれど。

カバー

ひとまず上下1セットを購入。そのうち追加で注文するつもりではいる。さわり心地は良い。触っていて上下の境目が気になるということもない。気づいた点としては、材質故なのだろうか、木材カバーは端の方の作りがやや粗い。それほど気にするレベルではないけれど。

あと、最初装着しようとしたとき、あれ、これサイズ合ってないんじゃないかというくらいキツかった。ただ、その後は特に苦戦することなく装着できている。

ボトムを木材にしたのだけれど、前述の通りさわり心地は良いのだが手との摩擦がちょっと小さいので、グリップせず乗せるだけの片手持ち運用にはあまり適していないかも。

バッテリー

さすがに大容量バッテリーを載せているということで、MADOSMAでは残量5%以下になって電源が切れていただろうくらいの使い方をしていたが20%を切らずに1日過ごせた。

Quick Charge 2.0対応の充電器を買ったので充電速度も凄く速い。届いたのがNEO到着の翌日(というかNEO届いてから充電器注文した)なので初回は普通の充電器を使ったのだが、比較すると段違いだった。QC2.0では30分で40%近く充電される。バッテリ容量がNEOより少ないMADOSMAを遙かに上回る速度。充電器もお値段高くないのでこれは買わない理由がないレベル。

トリニティのブログ掲載の品。6ポートあるのでNEOとMADOSMAとIS12T(退役検討中)が同時に充電できる上に更に増えても大丈夫。

画面の明るさ

MADOSMAより暗く出来る。良い。自動調整もMADOSMAより適切な明るさに見える。

輝度10以下に変化がないのはMADOSMAと同じ。再起動時に明るさが設定と一致しなくなったりするのも同様。MADOSMAは次期ファームウェアで修正されるっぽいような記載がある(「動作が不安定」という書き方なのでこの症状を指すのか不明)けれど……。

音量

大きい。イヤホン使用だと音量1〜2で十分。MADOSMAはいつも12くらいに設定しているのでその差は歴然というところか。逆に言うとこれ以上下げられないということなのだけれど。

Continuum

NEOといえばやはりこれ。なのでとりあえずさわりだけ使ってみた。

WP_20160201_22_31_51_Pro
推奨品のActiontec ScreenBeam Mini 2。注文時点で在庫残り1だった。
WP_20160201_23_48_15_Pro
接続し、Continuumの紹介ビデオが流れ終わっての初期画面。

NEO本体がタッチパッドになり、入力欄では通常のスクリーンキーボードも出現するのでマウスやキーボードがない場合でも一応使える。ただ本格的にContinuumを使うなら当然ながらマウスとキーボードはあった方が良い。

ちゃんと計測を行ったわけではなくあくまで体感ではあるが、遅延は0.1~0.2秒程度。反応速度が重要なゲームであれば望むべくもないが、WordやExcelの編集程度なら支障ないんじゃないかと思う。UWPアプリの普及次第な所はあるけれど、いろいろ使い道が広がりそう。

その他

気になったのは電源ボタンの反応。妙に鈍いことがしばしばある。NEO固有の問題としてはそんなところか。

初回の充電時に動作が不安定になったが、これは充電器との相性問題だろうか。安い充電器だったので供給される電気の品質が悪かったのかもしれない。新しく買ったQC対応充電器では大丈夫だった。

PCに繋いだUSB2.0ハブでは充電できず、認識さえされず。尤も、MADOSMAでは接続と切断を無限に繰り返す状態に陥っていたのでこれもNEOの問題というわけではなさそう。USB3.0直付けだと認識され、充電もされた(MADOSMAも同様。USB2.0直付けは空きポートがないため未確認)。

それ以外に音楽再生が何やらおかしい挙動をしていた(曲が切り替わり再生が続いているのに音が出ない。音飛びが起こる)が、こちらはファイル破損の可能性もある(未確認)ので現時点では保留。

WP7.5アプリ作成の思い出とUWP化雑感

Windows Phone / Windows 10 Mobile Advent Calendar 2015の22日目です。

2015年は本当に、2014年時点では想像も出来なかったような展開になりました。2015年? どうせまた何も展開ないんでしょ……みたいな雰囲気も漂っていた1年前、まさかこんな怒濤の端末リリースが予想できたでしょうか。2015年早々にWP8.1端末開発が発表され、6月に発売されて、そして11月末からはW10M端末が続々と発売される……。イレギュラーな手法ながら世界最速でのW10Mアップグレードという恩恵を受けた我らがMADOSMAを日々使いつつ、au回線のため生き残り続けているIS12Tの処遇も考えながら、この年末を過ごしています。

とはいえ、IS12Tから救世主MADOSMAまで大分期間が空いたわけで、昔公開したWP7.5用のアプリが暫く放置されたままになっていて……。

これまでに5つのアプリを作成、公開しているものの、「超!A&G+プレイヤー」以外の4つはWP7.5 Silverlightアプリという状態。もちろん依然として動作はするわけだけれど、しかしもうW10M用にしてしまいたいというわけで、時間を見ておいおい置き換えていくつもり。どこぞの大社畜には遠く及ばないものの、それでもやはりWP7.5アプリを作っていた頃と比べるとまるで時間が無いので、果たしてどれだけかかるやら……。

とりあえずは手始めに自分が一番よく使うアプリでなおかつWP8以降ちょっと不便になってしまったPhotocessorをまずは直していきたい。

画像加工系のアプリはそれこそWP7.5の頃から結構あったのだけれど、何でまた自分でそれを作ったのかといえばあの頃のOSの仕様というか制限が関係していました。……WP7.5では、ImageやBitmapImageで縦横いずれかが2048pxを超える画像を読み込むと、勝手に縮小されてしまうという仕様があったのです。それが2048pxぴったりになるよう縮小されるならばまだよかったのですが、実際は2048px以下になるまで1/2縮小を繰り返すというものでした。

これがIS12Tのカメラが撮る画像サイズとは相性が悪く、縦横1/4、画素数にして1/16まで縮小されてしまうために、横向きで撮影した画像をロック画面に設定すると画面サイズの800×480をも下回ってボケボケになるという残念なことになっていました。

で、それを解消するためにあらかじめJPEG画像のバイナリを読み取って縦横サイズを取得し、そのサイズでWriteableBitmapを生成してそこに画像を読み込むという手法を使って縦横2048pxを超える画像でも縮小無しで加工できるというのを売りにしていました。

……まあ、今はそんなことしなくても良いんですけどね。

というわけでPhotocessorの個人的一番の売りがOSの進歩により今は昔の状態となってしまっているわけですが、そんなことは気にしない。UWP版、作っていきますよ。

WP7.5から変化したことといえば、あと大きなのは解像度。かつては800×480固定だったけど今や何でもあり。スケーリングも100%から300%まで幅広く、その関係でアイコンも昔は透過PNG画像(それも1解像度分)で矩形をマスクしていたものが今は外字領域にアイコンを設定した埋め込みフォントを使うのが主流のようで。InkscapeとFontForgeを使ってフォントを作ります。InkscapeでSVGを作成し、それをFontForgeで取り込んでフォントとして出力。FontForgeにはスクリプト機能があるのでそれによって自動で処理をさせると楽ちん。

photocessor-uwp

あとはまあ、VisualStateManagerを使って各サイズに合わせたレイアウトにするとか、WP7.5では無かったあれこれを。とはいえ複数画面サイズに対応させるなんてのはWebではごく当たり前にやることでもあるのである程度コツを掴めばそこまで大変でもないかな。完成するのがいつになるかはわからないけれど!

さてさて、翌23日のWindows Phone / Windows 10 Mobile Advent Calendar 2015は、Xamarinでお馴染みの@ytabuchiさんです。残すところあと3日ですよ。

MADOSMAをWindows 10 Mobileにアップグレード

しました。

熾烈な国内最速合戦。満を持して最速を宣言したFREETELのKATANA01、その後に突如として現れたヤマダ電機のEveryPhone、そして直営店への持ち込みという変則的な手段により、世界最速でIPではないWP8.1→W10Mのアップグレードを提供したマウスコンピュータのMADOSMA……。

本当はOTAの配信(米国MSの準備が整わないと始まらないらしい)を待ってもよかったのだけれど、ちょうど都内に行く用事が出来たことだし、と秋葉原のマウス直営店へ行ってきました。

行ってきたのは11時過ぎ。わりと開店時間すぐだったはずなのですが、既にアップグレード手続をしている先客が……。私と同じくオレンジのカバーを付けていた人と、デフォルトの白いカバーを付けていた人がいました。さらに続けて他の人も来たりで、店員によるとその時点でどうやらもう7〜8台のアップグレード受付をしているらしく……。あなたたちどれだけ早くアップグレードしたいんですか!!

店頭でのアップグレードはいわばクリーンインストールのような形で、データの初期化が行われる旨、説明がありました。データは基本microSDカードに保存しており、定期的にバックアップも取得されているので、指示に従いmicroSDカードを外して本体を預けました。

電話番号記入欄もあったのでアップグレード完了したら連絡が来るのかなと思っていたのですが、特に来なかったので1時間半後に行ったら完了していました。MADOSMAの番号だと思ったのでしょうか。私は2台持ちですよ。

で、Windows 10 Mobileです。OTAによるアップグレード配信がIPを除いてまだ始まっていないので、まがりなりにも正式なアップグレードとしてはMADOSMAが世界最速になるわけですね、すごい! しかもビルド番号はLumia 950やEveryPhoneより新しいみたい。

よくなったところ

クイックアクションがたくさん表示できるようになった

クイックアクションはこれまで4つ(高解像度端末とMADOSMAは5つ)だったのが、W10Mでは「展開」をタップすることでいっぱい出てくるようになりました。展開しない状態での表示量はこれまでと変わりませんが、タップ1回だけで他のアクションも表示されるのは良い。

スケーリングが調整できるようになった(MADOSMAのスケーリング問題が直った)

スケーリングの度合いが設定で変更できるようになりました。MADOSMAにおいては変更できるようになったということよりも、スケーリングが他の端末と異なっていた(それにより色々と問題が生じていた)のが解消された点が大きいです。正常に表示されていなかったアプリやサイト(ジャンプ+とか)が正常に表示されるようになりました。自作アプリに突っ込んだスケーリング対策も不要になるかなぁ……。いや、OS標準で変更できるようになったということは、むしろその辺もちゃんと確認するようにしないといけなくなるか。どちらにせよMADOSMAのW10M化で国内的にはこれ以上WP8.1を対象としておく必要性がほぼ無くなったのでUWPとして作り直しですかね。

輝度設定が細かくなった

発売当初のMADOSMAは眩しいと言われていました。ファームウェアアップデートにより大分暗く出来るようにはなりましたが、そもそもWP8.1以前では輝度設定が低中高の3段階しかなかったため、より暗くしたいというのが出来ない状態でした。これがW10Mではなんと0〜100%まで1%単位で調整できるようになっており、個々人の好みや使用する場所によって細かく変えられるようになりました。

困ったところ

標準フォントがYu Gothic UI

横幅が詰まって縦長になってるUIフォントシリーズは好きじゃないんですよね。MS UI GothicしかりMeiryo UIしかり……。游ゴシックがあるんだから游ゴシックを標準にして欲しい。(そういえばW10MではYu Gothicが游ゴシックとは別物になりましたね)

WP7.xだとIEのフォントがMeiryo UIだったけれど、OS全体の標準はYu Gothic(現在の游ゴシック)だった。

今度はEdgeのフォントはYu Gochic(游ゴシックではない)で、OS全体の標準はYu Gothic UIと、7.xと逆の状態になっている。UIフォントの使いどころとしては7.xよりも正しくはあるけど、そもそもUIフォントが要らない子なんだよなあ……。字形を崩さない、もう少し自然な詰め方ならいいんだけど。

キーボードのキー配置が変わった

WP8.1と配置が変わっているので打ち間違える。ここは慣れないとなぁ。

パスワードのコピペ入力が出来ない

メール設定の際に(Googleアカウントは最初にログインしてアクセスを許可する必要がある)これが地味に不便で、逐一タップして手入力していかないといけない。原則として長い桁数のパスワードを自動生成させ、それをマシンに記憶させておくという運用を行っている身としては、そんなランダムなパスワードの手入力をするのはつらい。幸いにして間違えることなく入力できたけれど。

まだまだ試せていないところはいろいろありますが、とにもかくにも、Windows 10 Mobile、登場です! いやあ嬉しいなあ……。

おでコンに落ちたよ

さて、おでコンに応募してた超!A&G+プレイヤーが無事に落ちたよ! ということで。

まあ機能的にも大分少ないし、そもそもターゲットが超!A&G+リスナーかつWindows Phoneユーザーという限られたものではあるんだけど……でも公式アプリがまだ無い現在では唯一の専用プレイヤーなんですよこれ。

入賞は出来なかったけど、このプレイヤーのまさに根幹を成すライブラリであるRtmpClientの作者さんが言及されてて嬉しかったり。

いや結構よく出来たと思ってるんですけどねぇ……(どっちの料理ショーの敗者サイドのトーンで

今後もちょろちょろアップデートは掛けていきたいと思っていて、Twitterまわりとあと何よりバックグラウンド再生をどうにかしたいところ。ただTwitterは本来の機能からは外れるものでもあるしそこまですべきかどうか悩ましい。確かに現状だと見ながらツイート出来ないのがちょいと不便ではあるんだけど。バックグラウンド再生が実装できれば聴きながらツイートは出来るようになるしやりたい所なんだけどこれが上手くいかない。再生出来ないことはないんだけど数分でさようならしてしまう。何か他にちゃんとしたやり方あるのかなぁ……。

MADOSMAと他のWindows Phone端末とでアプリのスケーリングを合わせる

さて、エミュレータ含め、普通のWindows Phone端末ではアプリ(Silverlightアプリ除く)のPageは横幅400として扱われます。ところがMADOSMAではこの値が600となっているため、文字や画像が小さく表示されるばかりか、アプリによっては全体が小さく縮んだ変なレイアウトになってしまうものもあります。

修正するとクイックアクションの設定可能数が5つから4つに減ってしまうなどもろもろの事情によりどうやらこのままで行くようで、ユーザ側では簡単操作の文字サイズ設定で小さい文字を大きく補整することもできるのですが、しかし文字以外のサイズは依然として小さいままとなります。

で、まあアプリの側で対応しちゃいましょうと登場するのがViewboxです。Viewboxは、そのContentを自身のサイズいっぱいまで拡大・縮小するコントロールで、単純にはViewbox直下にGridなりを置いてその横幅を400にしてしまえばMADOSMAとそれ以外とでスケーリングが揃うことになります。

それだけでも縦幅が十分に小さい場合はいいのですが、ここでViewboxの縦横比よりその中身の縦横比の方が縦の比率が大きくなってしまうと、縦幅を基準にスケーリングされるようになってしまうわけで、つまり縦幅が伸びるごとにどんどん小さくなっていってしまいます。解決するためには縦幅も指定してやれば良いのですが、画面の縦横比は端末によって異なるため縦幅は一様に定まりません。というわけで算出する必要があります。

自動調整してくれるコントロール

テンプレートコントロールとして作ってしまいましょう。新規作成でテンプレートコントロールを選んで……。

AdjustmentViewbox.cs
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace Sample01.Controls
{
    public sealed class AdjustmentViewbox : ContentControl
    {
        private static readonly double BaseLength = 400;
        public AdjustmentViewbox()
        {
            this.DefaultStyleKey = typeof(AdjustmentViewbox);
            this.SizeChanged += AdjustmentViewbox_SizeChanged;
        }

        private void AdjustmentViewbox_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            if (e.NewSize.Height > e.NewSize.Width)
            {
                // 縦長
                AdjustedWidth = BaseLength;
                AdjustedHeight = e.NewSize.Height * BaseLength / e.NewSize.Width;
            }
            else
            {
                // 横長
                AdjustedHeight = BaseLength;
                AdjustedWidth = e.NewSize.Width * BaseLength / e.NewSize.Height;
            }
        }

        public double AdjustedWidth
        {
            get
            {
                return (double)GetValue(AdjustedWidthProperty);
            }
            set
            {
                SetValue(AdjustedWidthProperty, value);
            }
        }
        public double AdjustedHeight
        {
            get
            {
                return (double)GetValue(AdjustedHeightProperty);
            }
            set
            {
                SetValue(AdjustedHeightProperty, value);
            }
        }

        public static readonly DependencyProperty AdjustedWidthProperty = DependencyProperty.Register("AdjustedWidth", typeof(double), typeof(AdjustmentViewbox), null);
        public static readonly DependencyProperty AdjustedHeightProperty = DependencyProperty.Register("AdjustedHeight", typeof(double), typeof(AdjustmentViewbox), null);
    }
}
Generic.xaml
<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Sample01.Controls">

    <Style TargetType="local:AdjustmentViewbox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Viewbox>
                        <ContentPresenter
                            Width="{Binding AdjustedWidth, RelativeSource={RelativeSource Mode=TemplatedParent}}"
                            Height="{Binding AdjustedHeight, RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
                    </Viewbox>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

で、作ったらあとは使うPageのContentをまるまる覆う形にしてやればよし。

エミュレータ(720p)での表示
エミュレータ(720p)
MADOSMA実機での表示
MADOSMA実機

これでもう文字が小さいなんて言われずに済みますね。

注意点

  • 計算誤差かわずかに隙間が生じることがある
  • Viewboxの外側、上部ステータスバーや下部アプリバーのサイズは小さいまま

MADOSMAを1日使ってみて

さて、本日は我が国に於ける4年ぶりのWindows Phone端末であるMADOSMAの発売日。

というわけで、思いがけず1日早くフライング宅配されてきた我がMADOSMAを今日1日使ってみた感想などをば。Archに参加しても良かったんだけどその日に届くだろう端末を早く触りたかったのと仕事が終わるか判らなかったので見送ったら前の日に届くし仕事はここのところ定時帰り。

なお、比較対象に出来るものがIS12Tしかないので感想には偏りのある可能性があります。

レグザフォンやARROWSで一世を風靡していた頃の富士通東芝が出してきたまさかの良機種。欠点は流行らなかったことと後継が出なかったことくらいか。
配達日指定なし。火曜に発送され、留め置かれることなくそのまま翌日水曜に到着。サンキューNTT-X Store。サンキュー佐川。

サイズ

5.0インチ。デカい。まあデカい。IS12Tが3.7インチなので面積で言えば1.8倍ほどにもなる。片手操作で親指だけを動かして届く範囲はせいぜい画面の2/3程度しかなくてなかなか厳しい。

が、それを差し置いてもこの一画面に収まる情報量はなるほど魅力的。3.7インチ、480×800とは世界が違うレベルだなぁと思う。

それでも本当は3.7~4.0インチくらいの端末が出てくれると良いんだけどね……あれだけ種類のあるAndroidですらこのサイズは希少種な今の時代では難しいか。3.5インチで十分と言っていたiPhoneも順調にでっかくなってしまったし。需要ありそうなんだけど。

動作

IS12T同様スペックの割にぬるぬる動く。まあこの辺りはIS12Tの例もありWPフリークな界隈の前評判もあり心配はしていなかったけど。

発熱

熱くない。IS12Tより穏やか。

まあ3Dのゲームをやるみたいなガッツリ熱くなりそうな使い方まだしてないんだけども。

スクリーンショット

IS12Tでは開発者アンロックしてーの野良アプリいれてーの撮りたい時に起動してーのでスクショ撮ってたけどOS標準機能として備わっているので電源ボタンと音量プラスボタンでさっと撮れる。

この端末はそれら2ボタンが反対の面に付いているから押しやすい撮りやすい。……撮りやすすぎてスリープさせたい時に誤爆することがままあるのが難点。まあ、これは慣れか。

中華フォント

やっぱりあっちゃうのよねこれ。サードパーティ製アプリはまあもうそういうのあるよねなんだけど、MSN系のアプリにもなぁ……。

あとHTMLメールで画像が表示されていない時の「画像のダウンロード」とか。

バッテリー

結構持つ。ここの最近のIS12Tよりも激しく使ってるけどまだバッテリーセーバーが作動する基準になってない。IS12T(1460mA+経年劣化)だともうgood byeなレベルだけど、まあ2300mAだし大画面の消費電力差し引いても十分行けるのな。

ちなみに今日のIS12T(そう、WP2台持ち)は電話・SMS専用機と化した結果80%の残容量である。
昨夜充電している時になんか回復遅いなーと思ってたんだけどそりゃあ容量的にIS12Tの1.5倍掛かってもしかたないわな。

これを書く余裕まである。

Twitterアプリ

とりあえず引き続いてKrile入れてはみたけどさすがに7.x用だし古いしもう更新もないしちょいちょい不具合も見られるので何か良いの探してみる。

見つからなければ作るかな……O-ruri for WPを。

地図

gMapsかMapFanあたりを入れようねぇ。

自作アプリ

まあ動く。動くけど7.x用(解像度480×800のみ)だから上下に空白出来るし画像もぼやける。

あとPhotocessorがカメラロールから起動出来なくなってて使い勝手悪化してる。やっぱ早急に8.1対応版を作らねば。何より自分が頻繁に使ってるアプリだしな。

VPS移行

レンサバからVPSに移行してみた。

借りた当初は十分だったんだけど最近いろいろとやりたいことも増えてきたので思い切って移行。ついでに鍵マークが付くようにした。

結構いろいろと嵌まったりしたこともありつつ概ね出来た感じ。あとはメールだな……。

次の引き落としになる前にレンサバの方を解約しておかないと。

本当は人狼推理補助ツールのアップデートを先に行うつもりだったんだけどこうなった。そっちはもうちょい待ってね。

Cities: Skylinesやろうと思ってたのに全然やらないまま休日が終わるのである。