2012年4月24日火曜日

Windows Developer Days サマリ

Windows Developer Dayに参加してきたので、その内容をまとめます。
※1日目+2日目で、新しいメトロアプリの内容を中心にマージしました

○Topics
Windows8 Release Preview が6月第1週に公開される。


○Windows8の特徴
Windows7で培った基盤の上に、メトロスタイルと呼ばれるデザインを実装したというイメージ。
Windows8では、これまでのアプリも、新しいメトロスタイルのアプリも両方動く。
メトロアプリはWinRT(Windows Runtime)という.NET Frameworkとは異なるアーキテクチャで動く。
メトロスタイルには細かいガイドラインがあり、このためデザインがしやすくなっている。
クラウドとの統合が行われ、例えばマイピクチャとSkyDriveの画像は区別がない。


○メトロアプリについて
Windows8から新登場した、いわゆるタブレットアプリ。

1..実行環境
Windows Runtime(WinRT)という新しい実行環境で動く。
WinRTはネイティブの実装であるため、C++では直接コールできる。VB.NET/C#ではCLR、JavaScriptではChacra(IEのJavaScriptエンジン)を通じてアクセスが可能だが、この動作は裏で各ランタイムのAPIとWinRTのAPIをマッピングするWindowsメタデータと呼ばれる機構が働いていることによる(言語プロジェクション)。

2..開発言語・コーディング
上述のとおり、各種言語で開発可能。
VB.NET/C# + XAMLが素直だが、C++を使うこともできるしJavaScript+HTML5でも可能。パフォーマンスの差異は特にないとのこと。

メトロアプリは基本的に非同期で動くため、データ抽出など完了を待ってから処理を行いたい場合は新シンタックスである await をつける必要がある。

非同期処理を行うメソッドはasyncで宣言を行う。返り値はvoidかTaskのみだが、Taskはジェネリクスで型が指定できるため、実質制限はあまりない。なお、await処理が可能なのは返り値がTaskのメソッドのみ(これは、返り値を待つという風に考えれば当然か)。

3.動作プロセス
メトロアプリの状態は、起動中->サスペンド->破棄という流れで遷移する。
起動中からサスペンドに移るのは他アプリの背後に隠れたときであり、サスペンドから破棄されるのはメモリなどのリソースが枯渇した時となる。
サスペンド->破棄の際イベント検知はできないため、サスペンドになった際必要なデータは保存しておく必要がある。

制約として、起動は5秒以内、サスペンド状態でのデータ保管も5秒以内に行う必要がある(この時間はデバイスの性能に依存するため、実際は2秒程度が好ましい)。

動作はサンドボックスで行われるため、OSアクセスには制限有り。また他アプリとの通信はクリップボードに似たコンテキストと呼ばれる仕組みで行う。

4.配布形態
Windowsストアから配布、となる。インストーラーは作成できず、パッケージ内に格納したマニュフェストファイルに基づきOSが自動でインストールする。
マニュフェストファイルにはアプリがアクセスするリソース(カメラ・GPSなど)が宣言されており、ここで宣言されていないリソースはアプリで使用できない(インストールする際の目安にもなる)。

購入はユーザー単位であり、同じ端末でもユーザーが異なれば共有はできない。ただ、一度購入したアプリはクラウド経由で他端末と共有が可能(ローミング)。ただ、5台までなので注意。


○メトロスタイルについて
細かいガイドラインがあるため、詳細はそちら参照 Metroスタイルの設計原則
1.起動前
アイコンは2種類用意する。縮小表示された際の1:1正方形サイズのものと、通常表示の1:2長方形サイズのもの。
起動していなくても裏側で通信が可能なため、例えばメールなら1:2表示の際、アイコン以外に新着メッセージを問い合わせその件数を表示するといったことが可能(ライブタイル)。

2.表示時
通常起動時・スナップ(画面の端に表示)・ポートレイト(タブレットの縦置き)の主に3種類の表示スタイルがあり、それぞれに対応しておく必要がある。

表示コンセプトとしては、ダッシュボードのように必要な情報を1画面でまとめるようなスタイルが良い(と言っているように思う)。
検索してコンテンツにたどり着くというよりは、コンテンツをまず前に出す。検索はチャームかアプリバーに移し、画面から外す。
※チャーム:右から出るメニューバーで、コンテキストメニュー的なもの。アプリバーは下から出るメニューバーで、アプリケーション固有のメニューをまとめられる。

レイアウトは方眼紙を意識し、そこに配置するようなイメージで行う。
ボタンは(押せるのが)7mmがだいたい下限のため、それ以上でデザインする。また、hoverのようなアクションを返すことが望ましい。

3.動作時
スクロールは1方向に統一し、1アプリ内で縦と横のスクロールが混在することを避ける。
アクションに意味を持たせる。スクロールなら左に概要・右に行くにつれ詳細、ズームなら縮小した場合カテゴリ別表示、拡大した場合詳細表示にするなど(セマンティックズーム)。


○ストアについて
開発者登録料は個人49$企業99$、売上は25000$を越えるまで70%、以降80%が手取りとなる。アプリの価格は開発者が1.49~999.99$の間で決定可。

アプリの配布に当たっては試用版配布がサポートされており、期間限定はデフォルト、機能制限はコード内で試用か否かが判定できる。

ストアのエミュレータを使用することでアプリ購入をシミュレート可能だが(=試用版/購入版の動作確認が可能)、本番とクラス名?が異なるためアップ前には書き換える必要あり。
広告はAdvertising SDK により数行で追加可、収益確認及び広告設定はpubCenterより可

審査はプロセスが公開されており、いま審査のどの段階か、どこで止められたかなどが確認できる。


○その他トピック
WebSocket、SqlServer2012について。
WebSocketは、要するにまだ実装しない方がいいと感じた。Windows8でないとNGなのだが(IIS8・.NET Framework4.5も必要)Azureでまだ提供されておらず、またAzureではWebsocketを行う場合定期的にpingをうつ必要があり結局Long Porling方式と変わらないため。

SqlServer2012はFileTableというフォルダ構造をまとめて格納したようなデータを持てるようになったらしい。GUIが伴えば、スケール可能なファイルサーバーとして使えるかもしれない。
SqlServerToolという便利なツールも提供され、Azure/SqlServer/ローカルDBが簡単に複製・同期できるようになっている。Azure開発はこれでかなり楽になりそう(その前に無償枠がないと使う気が・・・という気もするが)


内容に誤りなどあったらご指摘願いますm( _ _ )m。

2012年4月12日木曜日

ASP.NETの無料ホスティング

Azureには無償枠がないため、自分で作ったアプリを公開したいな~というときは結構困る(トライアルはあるけれども期間が終われば削除されてしまうし・・・)。

日本ではあまりないが、海外にはいくつかあったため紹介します。結論としては、SOMEEが一番良い。

○無償ホスティング一覧
スペック的な比較はこちらから。free_aspnet_hosting 。以下は、実際に使用してみた感想です。

AspSpider
    無償ホスティングでは結構有名どころのようだが、会社から使うとセキュリティで引っかかる・・・ちょっと怖いので、退散。

Free ASP Hosting
    結構よさそうだが、申し込みがメールで当然英語で書かないといけないため、退散。

brinkstar
結構有名そうでアカウントも作ってみたのだが、作成されたサイトにアクセスできず・・・。動いたとしてもUIが結構使いづらかったため、作ったばかりのアカウントを即閉鎖し、退散。

host-ed.net
無料だが、申し込みのところでドメイン名が有料のようなオーラを感じたため、退散。

TSoft Server
日本のサイト。ただ、申し込みがメールで、人の審査的なものがありすぐに使えるわけではなさそうだったので、退散。

SOMEE
1ヶ月に5回以上アクセスがないと落とされるという制約はあるものの、非常に使いやすいI/Fですぐにデプロイできた(FTP不要)。サイトには広告が入るが気にならない。