特集:Windows 8開発に向けて準備しよう Metroスタイル・アプリの開発者が知るべき3つのこと 2012/03/13 |
|
|
■その3: [設計の原則] 万全のリジューム機能を装備すべし!
最後は、アイデアの実現性に直接関わるわけではないが、考慮せずに開発を進めてしまうとコーディング時にひどく苦労することになる原則だ。
Metroスタイル・アプリは、ユーザーに対してはずっと動き続けているように見せかけることが求められている。しかし実際にはシステムにより終了させられるので、次に起動されたときには最後の状態を自分で復元(=リジューム)する必要がある。
●ライフサイクル
Metroスタイル・アプリのライフサイクルを、大まかに図で示す。
実行中の状態から中断されるタイミング(図中)は、システムが管理していてアプリでは予測できない。中断されるときに、後で状態を復元する()ための情報を保存する。中断状態から終了させられる()ときには、アプリに何か処理をするチャンスは与えられない。
中断状態からリジュームするとき()は、単に実行が再開されるだけなので、アプリでは特に対処する必要はない。終了状態からリジュームするとき()は、アプリにとっては普通に起動されたのと同じであるので、自分で状態を復元しなければならない。
ライフサイクルで考慮すべき点は次の2つ。
- 終了状態からでも、中断状態からのリジュームと同様に、以前の状態を復元しなければならない*2
- 中断されるときには、そのときの状態を復元するためのデータを全て保存する必要がある
*2 このことは証明書の要件3.6に「適切な状態で再開する必要があります」と書かれている。なお、以前の状態をそのまま再現するのが不適切な場合(例えば、日めくりカレンダで、中断している間に日付が変わったなど)には、適切な状態を表示するよう求められている。 |
復元するためのデータをどのようにするかは、アイデア段階から検討しておくべきである。その画面の状態や表示すべきデータはもちろんだが、画面遷移の履歴を復元しなければならないこともあるだろう。リジューム用のデータ設計と、リジューム処理の実装を検討する段階では、下記の2つのルールに留意する必要がある。
●中断2秒ルール
中断時の処理は、低電力のコンピュータであっても「2秒以下」で終えなければならない。これは前述した証明書の要件(3.8)であるので、守れないとWindows Storeで配布できなくなるのだ。
2秒というのは、数Mbytes程度のデータをローカル・ディスクに保存するにはずいぶんと余裕のある時間だが、インターネットにアップロードするには十分とは言えないだろう。扱うデータが大きいアプリを作ろうとするなら、十分な検討とテストが必要だ。
なお、MSDNによれば、「5秒」を超えるとハングアップしたとみなされ、そのアプリは強制終了されることになる。
●起動5秒ルール
起動時には、低電力のコンピュータであってもリジューム処理を含む初期化は「5秒以下」で終えなければならない(「15秒」で強制終了)。ただし、いったん初期化処理を終えてしまい、自前のスプラッシュ・スクリーンを表示しながらデータ読み込みを続けるという手はある。
リジュームのためのデータ構造・画面遷移手法、そして2秒ルール・5秒ルールは、アイデア段階から検討するとともに、実装の早い時期からテストし始めることが肝心である。後になって問題が発覚した場合には、相当に大きな設計変更が必要となることだろう。
■
■まとめ
以上で説明した「アイデア段階から考慮しておくべき3つのポイント」により実現されるMetroスタイル・アプリのコンセプトは、次のようなものになる。
- Metroスタイル・アプリは、ウイルスやマルウェアのないエコ・システムを目指している
- Metroスタイル・アプリは、ユーザーのプライベートを重んじ、信頼を得る
- Metroスタイル・アプリは、バックグラウンドでも動き続けているかのような「良好な操作性」と、実際には中断・終了することによって「電力消費の低減」を、両立させる
これらのコンセプトを踏まえて、素晴らしいMetroスタイル・アプリを作ってほしい。
INDEX | ||
[特集] Windows 8開発に向けて準備しよう | ||
Metroスタイル・アプリの開発者が知るべき3つのこと | ||
1.[配布の原則] Windows Storeで配布すべし! | ||
2.[機能の原則] ユーザーのプライバシーを守護すべし! | ||
3.[設計の原則] 万全のリジューム機能を装備すべし! | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -