17Th
Developer Camp

【A4】 テクニカルセッション「RAD Studio XE3 によるWindows 8 開発」

Embarcadero Technologies,Technologies Inc
Inc.
Manager, Documentation and Localization

新井 正広

1

17Th
Developer Camp

1Windows 82Windows 8• 10⽉26⽇発売

http://windows.microsoft.com/ja-JP/windows-8/new-look3

Windows 8• 今後発売される「Windows 8対応PC」の多くは、タッチ対応

http://windows.microsoft.com/ja-JP/windows-8/new-pcs
http://windows.microsoft.com/jaJP/windows 8/new pcs
4

デスクトップアプリと、Windows ストアアプリ• デスクトップと、ストアアプリは異なるランタイムの上で動作

デスクトップアプリ

Windows ストアアプリ

Win32 API

Windows Runtime

Windows 8

Windows RTIntel x86 / x64

ARM5

Windows ストアアプリ• Windows ストアアプリ– 従来の Win32 アプリは動作しない– Windows ストアからダウンロード、購⼊
ストアからダウンロ ド 購⼊
• Microsoft の審査後に公開• 不適切なAPI、法律、約款への違反が無いかチェック
不適切なAPI 法律 約款への違反が無いかチェック– 社内向けアプリはストアを経由せずに配布可能• Windows 8 Enterprise + ドメイン参加が必須

6

Windows ストアアプリ• 共通の⼿順を使⽤したアプリ間の連携をサポート– 検索– 共有

• ライブタイル– アプリケーションのステータスをリアルタイムで表⽰
アプリケ シ ンのステ タスをリアルタイムで表⽰• アプリケーションの販売・トライアル
アプリケ ションの販売 トライアル– 容易な配布、更新

7

デスクトップ アプリ• Windows RT / ARM 環境では動作しない• Windows 8 / Intel 環境でのみ動作• Windows 7 に対応できているのであれば、特に問題は無い– データベースドライバなどの対応は、ベンダーによって異なる
デ タスドライバなど 対応は、 ンダよ て異なる

• VCL, FireMonkey, Win32 API を利⽤して開発

8

17Th
Developer Camp

2

タブレット、タッチに対応

9タッチ向けアプリケーションを構築する。そのまえに• たくさんの要素をひとつの画⾯に配置しない– 細かいUIはそもそも選択できない– 凹凸のあるキーボードですら、19mmピッチが⼀般的– 重要な選択肢ほど⼤きく表⽰• 間違って選択することを避ける– 重要ではない選択肢は⼩さめでも可• レビュー⽤の「★★★☆☆」– 可能な限り、そもそも UI 要素を省く

10

タッチ向けアプリケーションを構築する。そのまえに• ユースケース・シナリオを単純にする– 機能を増やすほど UI は複雑化する• ヘルプ・ドキュメントを⾒なくてもよい
ヘルプ ドキュメントを⾒なくてもよい UI を設計する– フローが単純であること– 結果を予測できること– 元に戻れること• Windows 8 ストアアプリ向けデザインガイドは「よい指針」– 数多くのユースケースが詳細に検討されている
数多くのユ スケ スが詳細に検討されている

11

⼩さな要素は選択できない12

⼩さな要素は選択できない• 「タッチモード」で画⾯を少し⼤きくしてみた例

13

画⾯の⼤きさの違い

14ソフトウエアキーボードの使⽤

15

タブレット、タッチへの対応• 既存の UI をそのままタッチ向けに移⾏するのは、⾮現実的– TMainMenu– TPopupMenu– TTreeView• 異なるデバイスへの対応が必要– ディスプレイ（画⾯の⼤きさ）– ⼊⼒デバイス（キーボード、マウス、タッチ、ペン）
⼊⼒デバイス（キ ボ ド マウス タ チ ペン）• 複雑な階層メニューを作成することは、ほぼ不可能
複雑な階層メニュ を作成することは、ほぼ不可能• ⼊⼒系のコンポーネントは、⼤きさ、配置を再考する
16

17Th
Developer Camp

3

RAD Studio
St di XE3 を利⽤したタブレット・タッチ利⽤したタブレット
タッチへの対応

17

デスクトップアプリと、Windows ストアアプリ

Metropolis
pUI

Embarcadero Prism

デスクトップアプリ

Windows ストアアプリ

Win32 API

Windows Runtime

Windows 8

Windows RTIntel x86 / x64

ARM
18Metropolis UI• デスクトップアプリとして動作– Windows 8 スタイルのアプリ• 利⽤環境は Windows 8 に限らない• Windows 7, Vista, XP でも動作

– キーボード、マウス、タッチを操作をサポート可能– 既存の VCL, FireMonkey, Win32資産を活かしつつ、タブレット、タッチデバイス向けのアプリを作成• サポートするフレームワーク– FireMonkey
– VCL
19

Metropolis UI• ⾃動⽣成されるテンプレート– 空⽩のプロジェクト、または– グリッド形式のインデックス／詳細ページ– Esc キー、または画⾯下からのスワイプで表⽰される AppBar• Windows 8 「スタイル」のコンポーネント

20

Metropolis UI• Windows 8 スタイルのコンポーネント– TEdit• 標準的な操作に対するグリフ表⽰とアクションを追加– TListBox• イメージとタイトルをボックスに表⽰– TComboBox– アイコンライブラリ– ツールチップ– フライアウト21

異なる画⾯サイズ、向きへの対応• 画⾯をスクロールして、残りのコンテンツを表⽰する– Windows 8 ストアアプリのスタイル– 最初からすべてを表⽰することを期待しない22異なる画⾯サイズ、向きへの対応（FireMonkey）• FormFactor プロパティを使⽤する– 事前に、複数の画⾯サイズ、向きのフォームを定義
Application.CreateForm(TLargeForm, LargeForm);
A li ti
Application.CreateForm(TSmallForm,Ct F(TS llF
SmallForm);
S llF)
Application.RegisterFormFamily('DetailView',[TLargeForm,[g, TSmallForm]);]);– 実⾏時に、デバイスにあわせてフォームを選択
procedure TGridViewForm.ItemClick(Sender: TObject);var
Form: TCommonCustomForm;
begin
Form := Application.GetDeviceForm('DetailView');
if Assigned(Form) thenForm Show;Form.Show;end;
23

ジェスチャを利⽤する• 対話型ジェスチャ– ズーム、回転など• InteractiveGesture を選択• OnGesture イベントを実装• ジェスチャを⾏っている間、イベントが発⽣し続ける• 標準ジェスチャ
– 上、下、矩形など• TGestureManager, TActionList コンポーネントを利⽤• 個別のジェスチャが「認識されたとき」に、アクションを実⾏

24

Metropolis UI• VCL と FireMonkey のどちらを選ぶべきか– VCL• 過去のコードとの互換性は⾼い– 特にデータベースアクセス• TTouckKeyboard が提供されている（Win XP にも対応）– FireMonkey
Fi M k• 異なる画⾯サイズへの対応は容易– ZoomZ(S(Scale)l )– FormFactor

25

Metropolis UI• ライブタイルのサポート（Windows 8 のみ）– アプリケーションからの最新情報をタイルに表⽰可能– ビルド済みの Windows Runtimeで動くアプリ– TLiveTile コンポーネントを通じて、タイル上のアプリと連携

26

ライブタイルの配布• 配布可能な環境– Windows 8 Enterprise– ドメインへの参加• 配布すべきモジュール– 作成したデスクトップアプリケーション– プロジェクトフォルダにある .appx ファイル
– <BDS>¥bin¥livetile 以下にあるバイナリ⼀式• Embarcadero.Metropolis.LaunchAgentHost.exe を実⾏• サービスを登録（InstallTileSvc.bat）• .appx
pp ファイルは適切な署名が必要
27

17Th
Developer Camp

3

Embarcadero
Ebd
PrismをPi を使⽤した
Windows ストアアプリ

28

Windows Store アプリの基本• XAML & コードビハインド(.pas)で構成– アプリケーション• Windows.UI.Xaml.Application クラスを拡張– ページ• Windows.UI.Xaml.Control.Page クラスを拡張– イベントハンドラをパーシャルクラスを使⽤して実装

29Windows Store アプリの基本• サンドボックスモデルを使⽤している– アプリケーションが使⽤する機能を宣⾔、ユーザーが承認• ドキュメントへのアクセス• 位置情報• ネットワークアクセス• Webb カメラ

30

Windows 8 で提供されているサービスを利⽤する• どのコントラクトを使⽤するかを宣⾔• コントラクトに対するイベントを記述

31

17Th
Developer Camp

3

Windows ストアアプリの配布

32

アプリケーションの配布• 基本的に、Windows Store で配布する• 社内アプリの場合には– Windows 8 Enterprisep+ ドメイン参加が必須– 事前に署名する（配布先で、そのまま署名が確認できる）– ドメイン管理者が必須アプリとして配布するシナリオ• PowerShell Script を使⽤する

33

17Th
Developer Camp

Q&A

34