Windowsストア アプリケーション概要(スタート編)

Preview:

Citation preview

Windowsストア アプリケーション スタートアップ

Agenda

• Windows8概要

• Windowsストアアプリ概要

• 開発を始めるには

• 開発入門

• 開発に役立つTips

Windows 8 概要

Windows 8概要

2012年10月26日発売の最新のWindowsOS

Windows8

Windows 8概要

Windows8

Windows 8概要

Windows8

Windows 8概要

Windows8

Windows 8概要

2つの側面を持つOS マウス+キーボード用のUI タッチ操作用のUI

Windows 8概要

2つの側面

ご存じsurface

Windows 8概要

2つの側面

回転してタブレット

Windows 8概要

2つの側面

やりすぎ?

Windows 8概要

PC+タブレットってことなのです

Windows 8概要

PC=いままでどおり従来のアプリケーションが動きます (WindowsRTをのぞく)

Windows 8概要

新要素のModernUIにばかり目が行きますが、 従来のデスクトップ画面は存在します (リボンになったりスタートボタンがなかったりはしますが)

Windows 8概要

Q.ModernUIはタッチ操作向けということでマウスでは使い辛くないですか?

Windows 8概要

A.使いずらいです

Windows 8概要

A.でも従来のデスクトップ(マウス+キーボードの場合にModernUIの画面に行くことはほとんどないので問題ありません) 私の場合はアプリのデバッグと検索ぐらい マウス+キーボードで作業する場合を考えるとストアアプリ開発者にとってはスナップの有効利用が大事

Windows 8概要

Windows 8概要

Q.Windows8搭載PCを買ったらゲームやPhotoshopなどがインストールできませんでした「うぃんどうずあーるてー」とか書いてありますがなんでしょう?

Windows 8概要

A.・・・・・・

Windows 8概要

Q.Windows8をインストールしたのにディスプレイをタッチしても何も起こりません!!

Windows 8概要

A.・・・・・・・

Windows 8概要

Q.ずばり、買いですか?

Windows 8概要

A.買いな人 ・タッチ操作可能なディスプレイを持っている人 ・新しい物好き ・スタートボタン嫌い ・ちょっとでも起動は早いほうがいい ・新しいパソコンの購入を考えている人 ・Windowsストアアプリの開発を考えている

Windows 8概要

A.買わなくてもいいひと ・Windows7がインストールされたデスクトップPC(タッチ操作できない) ・新しいことを覚えるのが嫌いでいまだにXP、2000 ・Apple製品しか考えられない(まぁ、BootCampか仮想マシンで・・・) (今だとアップデート版が安いようなので買っておくのもいいかも)

Windowsストアアプリ概要

Windowsストアアプリ概要

Windowsストア

Windowsストアアプリ概要

Windowsストア

ModernUI用のアプリケーションは企業用途でない限りWindowsストアにアップして、ストアからダウンロードする

ストアにアプリを提出するためにはストアのアカウントが必要

アカウント作成には個人の場合5000円くらい、企業だと10000円ぐらいかかる

Windowsストアアプリ概要

Windowsストア

アプリを申請せずに開発するだけならストアの登録は不要

ストアでは有料アプリの販売や、お試し期間の指定などが可能

Windowsストアアプリ概要

Windowsストア

アプリを申請せずに開発するだけならストアの登録は不要

ストアでは有料アプリの販売や、お試し期間の指定などが可能

課金の仕組みはマイクロソフトにお任せ

広告を出すことも可能

Windows 8概要

Windowsストアアプリケーション

• ModernUI・デザイン

• 新しいランタイム(WinRT)

• チャーム・コントラクト

• タイル・通知

ModernUI

• ModernUI

• Immersive

• infographic

• そぎ落とす、コンテンツが最優先

• レイアウト

• 作法に従う→一貫性

ModernUI

Immersive

没入した、没入できる、どっぷりつかった、実体験のように感じる

ModernUI

従来のブラウザ=情報が多く没入できない

ModernUI

Metro版IE=情報が少なく没入できる

ModernUI

infographic

Information(情報)とgraphic(図)を組み合わせた用語

ModernUI

そぎ落とす、コンテンツが最優先

コンテンツこそがエクスペリエンスの中心

スクリーン上には、コンテンツに関係のある要素だけを配する

ユーザーの気を逸らす要素は最小限に

ユーザーがコンテンツに没頭できること。それがゴール

ModernUI

レイアウト カリッとしたグラフィックでスッキリした表現に

グループ化や階層化を線とボックスで表現しない

通勤ラッシュの車内のように詰め込みすぎない →余白が大切

ModernUI

ModernUI

ModernUI

作法に従う→一貫性 コンテンツを優先するためにそぎ落とした

コンテンツ以外の要素が隠れてしまった=使い難い

ModernUI 再びIE10 これらの情報は普段隠れている

デザイン

デザイン

• 画面数

• Charm、AppBarを利用する

• テンプレートを利用する

• タイポグラフィー

• パン時の注意点

デザイン

• 画面数 • Windowsストアアプリケーションは用意しなければいけない画面数が多くなる

縦持ち・横持ち、スナップ、セマンティックズーム、プライバシーポリシー

お問い合わせ・・・

デザイン

Charmを利用する

画面内に検索フォームを設けない=チャームの検索を利用する

画面にボタンを多用しない=AppBarに機能を付ける

一般

ミニベロ

ロード

電動アシスト

ピスト

パーツ

クロス

ウェア

MTB

アクセサリー

デザイン

テンプレートを利用する

プロジェクト作成時に選べる

「グリッドアプリケーション」「分割アプリケーション」から作り始めると、

デザインの作法に則っているので楽できる

注目:GridViewの使い方、RitchTextBlockの使い方

デザイン

タイポグラフィー

Windowsストアアプリケーションは文字のジャンプ率が高いのと余白の使い方が特徴

タイポグラフィーにも指標がある

Metro スタイル アプリの設計ガイド

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

デザイン

デザイン

デザイン

パン時の注意

画面内に横スクロールと縦スクロールが混在してはいけない

Contoso Travel

デザイン

パン時の注意

例外もある(納得のいくコンセプトがあればOK? ようは押しか?)

Windows 8概要

新しいランタイム(WinRT)

・非同期処理

・OSの機能を呼び出す

・WindowsMetadata

新しいランタイム(WinRT)

新しいランタイム(WinRT)

非同期処理 50ミリ以上実行にかかるAPI呼び出しはすべて非同期へ

async / await の導入

新しいランタイム(WinRT)

OSの機能を呼び出す Windows Phoneでもおなじみ、処理をOSに渡して結果を受け取る

アプリケーションコード

アプリケーションコード

カメラから動画を撮影する処理はOSが制御

カメラをデバイスを起動

撮影結果の動画ファイルを受け取る

新しいランタイム(WinRT)

DEMO

新しいランタイム(WinRT)

WindowsMetadata JavaScript+HTMLでもC#+XAMLでもアプリケーションを作成できる

中間言語的な存在、翻訳機

チャーム・コントラクト

チャーム 検索、共有、デバイス、設定などの機能を呼び出す

OSの場合もあるしアプリの場合もある

検索チャームからはOSのファイルも検索できるし、あなたのアプリケーションが検索に対応した場合、あなたのアプリケーション内の情報も検索できる

設定チャーム、OSの設定だけでなくアプリの設定もここから行う

チャーム・コントラクト

コントラクト アプリが検索や共有に対応していることを宣言する仕組み

検索に対応していることをコントラクトで宣言した場合検索チャームの検索候補としてアプリが表示される

コントラクトはOSとアプリの契約ともいえるもので、

OSは契約に従い検索候補に表示する。アプリは契約に従い検索結果を返す必要がある

チャーム・コントラクト

コントラクト コントラクトの宣言は

マニフェストファイルから行う

チャーム・コントラクト

コントラクト あなたのアプリからデータをほかのアプリに渡すことができる

Twitterアプリに文字列を渡して共有先のアプリから

Twitterに投稿してもらうなど

Unixのパイプみたいなもの

ほかのアプリやOSの力を借りることでより魅力あるアプリに!!

タイル・通知

タイル(ライブタイル) アプリケーションの起点となる

四角いスペース

情報が切り替わるタイル

=ライブタイル

タイル・通知

通知(トースト通知) ポップアップで情報を通知する仕組み

別のアプリが起動中でも表示できる

タイル・通知

タイルと通知については

眠るシーラカンスと水底のプログラマーの

Windows8まとめを参照してください

(手前味噌ですが)

http://coelacanth.heteml.jp/blog/windows8/windows8-%E3%81%BE%E3%81%A8%E3%82%81/

開発を始めるには

開発を始めるには

必要なもの

• Windows 8

• VisualStudio 2012

• Blend for VisualStudio

• (ストアのアカウント)

開発を始めるには

必要なもの

開発を始めるには

Windows 8

Windows ストアアプリケーションの開発が可能なOSはWindows 8のみです。

今回のノベルティの「Windows8 Enterprise 90日体験版」でも

3か月は開発できる!!

Enterprise版なのでWindows To Goも試せる

(時間があればデモします)

開発を始めるには

VisualStudio 2012

無償のExpressを利用するか

上位のエディションの90日体験版を利用する

開発を始めるには

VisualStudio 2012

今日のノベルティの30日体験版でも・・・ん?30日?

開発を始めるには

VisualStudio 2012

今日のノベルティの30日体験版でも・・・ん?30日?

WebでDLしたほうがいいじゃないか!!

開発を始めるには

VisualStudio 2012

Expressも使いやすくなった

エクスプローラーから右クリックでフォルダーを開けるように

TeamFoundationServerに接続可能に

(アドオンのインストール不能、テンプレートの作成不能)

開発を始めるには

Blend for VisualStudio

VisualStudioとあわせてインストールされるようになった

Expressエディションでも同様

ビヘイビアが使えない・・・

開発入門

開発の言語を選ぶ

多彩な言語

XAML+C#+(DirectX)

XAML+C++(DirectX)

XAML+VB

HTML+JavaScript+CSS

開発の言語を選ぶ

グリッドアプリケーションを眺める

アプリの起点

App.xaml.cs

// ナビゲーション スタックが復元されていない場合、最初のページに移動します。 // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを // を構成します

if (!rootFrame.Navigate(typeof(GroupedItemsPage), "AllGroups")) { throw new Exception("Failed to create initial page"); }

開発の言語を選ぶ

グリッドアプリケーションを眺める

アプリの起点

App.xaml.cs

// ナビゲーション スタックが復元されていない場合、最初のページに移動します。 // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを // を構成します

if (!rootFrame.Navigate(typeof(GroupedItemsPage), "AllGroups")) { throw new Exception("Failed to create initial page"); }

GroupedItemsPageが最初のページだ

開発の言語を選ぶ

グリッドアプリケーションを眺める

ページ構成

GroupedItemsPage.xaml = グループ分けされたリストページ

GroupDetailPage = グループの詳細ページ

ItemDetailPage = グループのアイテム詳細ページ

開発の言語を選ぶ

グリッドアプリケーションを眺める

デザインビューになぜ値が入っているの?

開発の言語を選ぶ

グリッドアプリケーションを眺める

デザインビューになぜ値が入っているの?

<!-- このページで表示されるアイテムのコレクション -->

<CollectionViewSource x:Name="itemsViewSource" Source="{Binding Items}" d:Source="{Binding AllGroups[0].Items, Source={d:DesignInstance Type=data:SampleDataSource, IsDesignTimeCreatable=True}}"/>

開発の言語を選ぶ

グリッドアプリケーションを眺める

GroupDetailPage.xaml.csを眺めてみる

ポイントは2つ

class GroupDetailPage :App1.Common.LayoutAwarePage

this.DefaultViewModel["Group"] = group;

開発の言語を選ぶ

グリッドアプリケーションを眺める

Common以下は宝の山だ(サンプル的に)

開発の言語を選ぶ

グリッドアプリケーションを眺める

Common以下は宝の山だ(サンプル的に)

開発の言語を選ぶ

入門の次はこれを覚えよう

LINQ

データの集合(コレクション)をSQLライクに処理できる

開発の言語を選ぶ

入門の次はこれを覚えよう

データバインディング

XAMLコードとC#コードを関連づける仕組み

C#側でコードを変えるだけでXAMLコード(ビュー)の表示が変わる

開発の言語を選ぶ

入門の次はこれを覚えよう

MVVM

データバインディングの次はMVVM(Model-View-ViewModel)を学んでみよう(規模の大きな開発向け)

CommandだけでもOK

Tips

Windowsストア攻略

ストア登録のポイント&はまりどころ

を紹介しようと思います

1.画面について

2.レイアウト&コントロールについて

3.デザインについて?

Windowsストア攻略

1.画面について

Windows8はPC、タブレット・・・様々な画面解像度に対応している必

要があります。

では開発者はどのようなポイントに気を付ければ良いでしょう?

Windowsストア攻略

1.画面について

・最少サイズで必ずチェックする

画面サイズは1024×768が最小サイズ

このサイズで文字やコントロールが切れないかチェック

シュミレーターはかならず最少幅で

動作確認

Windowsストア攻略

1.画面について

・最少サイズで必ずチェックする

画面サイズは1024×768が最小サイズ

このサイズで文字やコントロールが切れないかチェック

デザインビューは最少幅を選べないので

シュミレーターでチェック!!

Windowsストア攻略

1.画面について

・縦横をチェックする

縦持ち、横持ち時の動作を必ず確認する

シュミレーターでチェック!!!

Windowsストア攻略

1.画面について

・縦横をチェックする

縦持ち、横持ち時の動作を必ず確認する

横持ちから縦持ちに持ち替えたときに横スクロールが発生するような

場合に縦スクロールがすでにあるようなレイアウトは注意

Windowsストア攻略

1.画面について

・縦横をチェックする

縦持ち、横持ち時の動作を必ず確認する

横持ちから縦持ちに持ち替えたときに横スクロールが発生するような

場合に縦スクロールがすでにあるようなレイアウトは注意

そういう場合にRichTextColumnsが便利

Windowsストア攻略

1.画面について

・縦横をチェックする

縦持ちと横持ち時はどうやって表示を変える?

方法1:VisualStateManagerで制御

(ー)実行時にエラーになる

(+)x:nameの重複がさけれる

VSのデバイスで確認

Windowsストア攻略

1.画面について

・縦横をチェックする

縦持ちと横持ち時はどうやって表示を変える?

方法2:一画面に縦のレイアウトと横のレイアウトを記述して

Visibilityで制御する

(+)XAMLコードが直観的

(ー)x:nameが重複する

方法1がおすすめ

Windowsストア攻略

1.画面について

・縦横をチェックする

縦持ちと横持ち時はどうやって表示を変える?

楽をしたい場合は横持ち時の画面は横にスクロールする形にしておいて、

縦持ち時も同じレイアウトで表示

Windowsストア攻略

1.画面について

・スナップをチェックする

スナップは横幅320ピクセルの細長い領域になる

端末の解像度は1326以上ないとスナップできない

動作はシュミレーターでチェック

楽をしたい場合はスナップ時は画像だけ表示しておけばOK

Windowsストア攻略

1.画面について

・セマンティックズームは必須ではない

楽をしたい場合は未対応で

Windowsストア攻略

1.画面について

・まとめ

画面についてはシュミレーターで切れている部分がないかしっかりチェック

最少画面サイズでの確認を忘れずに

スナップも忘れずに

Windowsストア攻略

2.レイアウト&コントロールについて

拡張するコントロール

GridView & ListViewをうまく使おう

Windowsストア攻略

2.レイアウト&コントロールについて

拡張するコントロール

GridView & ListViewをうまく使おう

Windowsストア攻略

2.レイアウト&コントロールについて

セッティングチャーム

設定時に画面右に一部分表示するような処理は

チャームフライアウトで実現する(ex:星座表)

ただしC#のコントロールにはデフォルトで

チャームフライアウトは無い

CharmFlyout

http://nuget.org/packages/CharmFlyout

Windowsストア攻略

2.レイアウト&コントロールについて

検索チャーム使用時の起動に注意

検索チャームからアプリが起動することがある

この場合検索結果画面が最初に表示される

初期化処理は

App.xaml.csのOnSearchActivatedイベントハンドラーで

楽をしたい場合は検索未対応だ!!

Windowsストア攻略

2.レイアウト&コントロールについて

既存のプロジェクトを利用する

プロジェクト作成時に

「グリッドアプリケーション」

「分割アプリケーション」

を利用すると

最初からデザインのコンセプトに沿ったレイアウトになっている

Windowsストアアプリの構成を学ぶにもおすすめ

Windowsストア攻略

2.レイアウト&コントロールについて

MS提供のテンプレートを利用する

Windows 8 アプリ開発体験テンプレート

Windowsストア攻略

2.レイアウト&コントロールについて

MS提供のテンプレートを利用する

最初から色々そろっているが、

テンプレートを使ったアプリが増えてきたので今後はオリジナリティを求められるかも?

とはいえスタート位置としてはかなり楽!!

Windowsストア攻略

2.レイアウト&コントロールについて

・まとめ

GridView、ListViewをうまく使おう

プロジェクトやテンプレートを利用する

XAMLとHTMLのコントロールの違いに注意

Windowsストア攻略

3.デザインについて

あなたがプログラマーならWindowsストアアプリの

タイポグラフィーとかインフォグラフィックについて頭が痛いはず

(かくいう私が頭が痛い・・・というか何かが理解を拒む)

そういう場合はデザイナーさんを味方につけましょう!!

(かなり楽になります。これが一番楽する方法かも・¥・)

Tips

・タイルの画像にアプリ名がある場合は左下の表記はアプリ名ではなく、画像で

ライブタイルでWebからもらったXMLで更新する場合はマニフェストではなく

XML側に指定を書く

Tips

・インターネットに接続する場合はプライバシーポリシーを

アプリ内に表示

Webにページを作ってそこをブラウザで開くか、WebViewで表示でもOK

Tips

・データ取得する前に中途半端な部分を表示しない

(郵便番号が取得できるまでの表記が[〒 - ]など)

必須ではないが、ちゃんとしておきたい

Tips

・ストア申請時になぜかブルガリア語の説明を求められる

<Resource Language="x-generate" />

<Resource Language="JA-JP" />

ブルガリア問題体験した人?

Tips

・なんか勝手にズームするぞ

<ScrollViewer ZoomMode="Disabled“

Tips

・GridViewやListViewは自前でScrollViewerを内包しているので、

無駄にScrollViewerで囲まない

・GridViewやListViewはCanvas、StackPanelなどでくくると高さが判定できず折り返ししないことが!!

Tips

・文字数が長すぎる場合は3点リーダー「・・・」で

TextTrimming="WordEllipsis"

Tips

・データバィンディング時に表示に合わせて値を加工したい場合は

Converterを(CommonディレクトリのBooleanToVisibilityConverterなどを参考に)

Tips

・Commonディレクトリのファイルの追加方法

Commonディレクトリのファイルを必要とするようなコントロールやコントラクトの追加をすればOK

もっとスマートな方法ある?

Tips

・タイルやトースト通知は独自の定期実行APIがあるのでバックグラウンドタスクにしない(バックグラウンドタスクの定期処理を実装する場合ユーザーに確認ダイアログが出る)

Tips

・WACKでテストしようね

Tips

・背景画像をトップGridに定義すると画像読み込みの間表示が乱れることがあるので下の階層でCanvasなどに指定するとよいかも?

描画が入れ子の下から行われるからツリーの上位だと時間がかかる?

(最近の事象なのでその通りかは検証中)

Tips

・未実装の機能はきっぱり削る

アプリは完成した状態で

Tips

・Templateをアイテム毎に切り替えたい場合は

TemplateSelectorを使う

class hogeSelector : DataTemplateSelector

{

protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)

{

Tips

・C#でDirectXがつかえるCharpDxがあります

http://sharpdx.org/

Sampleは公式から

おまけ

おまけ

書籍を出します(予約開始)

基礎から学ぶ Windowsストアアプリ開発

おまけ

Ascii.jpで紹介されました

http://ascii.jp/elem/000/000/737/737445/

ご清聴ありがとうございました

Recommended