24th embarcadero developer camp · 1 17th developer camp 「html5によるモバイル/タブ...

148
1 17 Th Developer Camp HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ エヴァンジェリスト 高橋智宏 A1HTML5チュートリアルセッション

Upload: others

Post on 16-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

1

17Th Developer Camp

「HTML5によるモバイル/タブレットアプリケーション開発」

エンバカデロ・テクノロジーズ エヴァンジェリスト 高橋智宏

【A1】HTML5チュートリアルセッション

Page 2: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

2

モバイル開発の需要

• モバイル/タブレット開発の需要が増えている

• 例えば… – 既存のWebシステムをタブ

レット端末向けにしたい – 新規でモバイル/タブレット用

の業務アプリ開発の依頼が増えている

– さまざまなデバイスに対応しなければいけない

など

出典:(株) MM総研 [ 東京・港 ]

モバイル開発にも対応可能なHTML5に期待が集まっている。

Page 3: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

3

HTML5なら…

• PC向けのWebアプリをそのまま利用

操作性に難 • ネイティブ開発の場合

デバイスごとに別の開発環境で開発 工数の増大 再利用が困難

従来のモバイル開発 HTML5を採用した場合

• CSS3/JavaScriptが使える • デスクトップに匹敵する

アプリが作れる • モバイル向けに最適化 • UIを統一できる • ネイティブ化にも対応

Page 4: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

4

HTML5入門

• HTML5 = HTML5 + CSS3 + JavaScript • <!DOCTYPE html> • <meta charset="UTF-8"> • フィールドの型&検証

– <input type="text" required> – <input type="text" pattern="..."> – <input type="email"> – <input type="date">

• Canvas(2D), Audio, Video, WebGL(3D), AppCache • ブラウザのサポートレベルを判定してくれるWebサイト

– http://html5test.com/index.html

Page 5: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

5

HTML5によるモバイル開発

• たいてい必要なもの – エディタ – Google Chrome

• WebKitベース – http://www.webkit.org/

– シミュレータ/エミュレータ – 各種実機 – 各種ライブラリ・フレームワーク

• jQuery/jQuery Mobile • ThemeRoller for jQuery Mobile • PhoneGap(オプショナル)

– Webサーバー • PHPエンジン(オプショナル)

Page 6: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

6

ひとつの解決策: HTML5 Builder

• オールインワン – HTML5、CSS3、JavaScriptの開発をサポート – サーバーサイドのPHP開発も可能 – Webサーバー、Webブラウザを統合 – モバイル向け開発フレームワークも統合済 – エディタ、デバッガ、プロファイラも統合

• ビジュアル – モバイル向けのビジュアルデザイナでドラッグ&ドロップ開発

– コンポーネントによりカプセル化 • プロパティ & イベントハンドラ

HTML5 Builder

Page 7: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

7

17Th Developer Camp

HTML5 Builder

Page 8: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

8

HTML+CSS+JavaScript+エディタ+プレビュー etc. • [新規作成] | [HTML5 Builderプロジェクト] | [クライアント モバイル アプリケーション]

Page 9: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

9

実際に作ってみよう(その1)

Page 10: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

10

実際に作ってみよう(その2)

Page 11: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

11

ビジネスアプリケーションへの適用例

• http://jquerymobile.com/resources/

Page 12: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

12

ビジネスアプリケーションへの適用例 • http://www.jqmgallery.com/

Page 13: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

13

17Th Developer Camp

Q & A

Page 14: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

【A2】Delphi / C++Builder テクニカルセッション

“FireMonkey が得意とする

ビジネスアプリ” の考察

【A2】Delphi / C++Builder テクニカルセッション

ビジネスアプリ の考察

有限会社エイブル有限会社エイブル富永英明

1

Page 15: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

はじめに1 はじめ1

2

Page 16: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

今回は?

• 前回 (21th 【T4】) は 右も左もわからない状態からのFireMonkey ファ ストインプレッションでしたFireMonkey ファーストインプレッションでした。

• それなりに FireMonkey アプリケーションの作り方が解ってきたので、"向き / 不向き" もなんとなく判ってきました。

• でも、まだまだ FireMonkey 初心者です。...でも、まだまだ FireMonkey 初心者です。

• 技術論というより、方向性の話です。

• 漠然と 「~に向いてますよ」 と言うのでは説得力がないので、FM(2) の機能を検証しながら向き / 不向きを考えてみたいと思います。FM( ) の機能を検証しながら向き / 不向きを考えてみたいと思います。

• 3D 成分は少なめですのでご安心を。

3

Page 17: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ビジネスアプリと FireMonkey

• ここで言うビジネスアプリとは業務に特化したアプリケーション。

• 装飾とかはできればやるけど、予算的にも納期的にもあまり凝った事はできない (アイコン作るのでさえ面倒なのに)。あ り凝 事 ( 倒 )。

• 3D と...誰がモデルデータを作るの?

• FireMonkey にはアニメーションがあるけれど、3D 使うのでなければ積極的に使おうという気にはならないかも?3D 使うのでなければ積極的に使おうという気にはならないかも?

• LiveBinding は 「スゴい!」 と思う反面、挙動が一見しただけではわからないのでついついコードで書いちゃう。

4※意見には個人差があります。

Page 18: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ビジネスアプリを FireMonkey で作るための条件

• VCL アプリの時と同等とまでは言わないが、開発速度が落ちない事。

• 見栄えを気にする顧客も居るけれど、あまりにも負担が大きすぎるのはちょっと...。あ り 負 す 。

• 「Mac OS X でも動くように」 と言われた場合には選択の余地がない。

• ...がマルチプラットフォームなのであれば、Web アプリ以上の操作性や独自性がなければ、ネイティブアプリケーションであるという存在意義が独自性がなければ、ネイティブアプリケ ションであるという存在意義が薄れてしまう。

プ• 要は VCL アプリでは実現できない事や、FireMonkey アプリだと比較的楽に実現できる事があるのなら、FireMonkey を使ってビジネスアプリを作ってみたい!

5

y

※意見には個人差があります。

Page 19: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

FireMonkey のおさらい2 y のおさら2

6

Page 20: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey って?

• XE2 以降で追加された、VCL とはまた別のフレームワーク。

• マルチプラットフォーム (Windows / Mac OS X) である。(XE2 では iOS アプリケーションも作成可能)

• PA Server を使って実機によるリモートデバッグが可能。

• HD (2D) アプリケーションと 3D アプリケーションが作れる。

• レイヤーを入れ子にできるので、HD / 3D のどちらか片方しか作れないという訳ではない。

• 基本的に VCL とは併用できない。RTL は FireMonkey からも利用可能。

XE3 の Fi M k は FM2 と呼ばれている

7

• XE3 の FireMonkey は FM2 と呼ばれている。

Page 21: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey アプリケーションの動作環境

• Windows は XP以降で動作する。以降で動作する。

• DirectX 9.0 相当を必要とする必要とする。

• Direct2D はVista 以降

• OS X は 10 6• OS X は 10.6 以降で動作する。

なら• Intel Mac なら、少なくとも 10.6 は必ず動作する。

8

Page 22: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

前回のあらすじ

• VCL アプリケーションと違って何でも親子関係になるよ。(やっても意味のない親子関係があるにはあるよ)(やっても意味のない親子関係があるにはあるよ)

• 常に [構造ビュー] を出しておかないとワケワカメになるよ。[構 ] を 。

• カスタムスタイルでコントロールの外観等を変更できるよ。

• コントロールそのものを回転したり拡大 / 縮小できるよ。

9

Page 23: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FM2 で追加されたものと削除されたもの (1)

• [3D Layers]TSolidLayer3D / TSplitter3DTSolidLayer3D / TSplitter3D

• [3D Shapes]TSelectionPoint3D (削除)

• [Additional][Additional]TMediaPlayer / TMediaPlayerControl

[dbE ]• [dbExpress]TSQLMonitor

• [Effects]TSwipeTransitionEffect

10

Page 24: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FM2 で追加されたものと削除されたもの (2)

• [Gestures]TGesutureManagerTGesutureManager

• [Layouts][ y ]TFlowLayout / TFlowLayoutBreak / THorzScrollBox

• [LiveBinding]• [LiveBinding]TBindSourceDB / TBindSourceDBX / TPrototypeBindSource

※ TBindSourceDB は XE2 だと TBindScopeDB です。

• [LiveBinding Misc]TDataGeneratorAdapter / TAdapterBindScope

• [Materials]TColorMaterialSource / TTextureMaterialSource /

11

TLightMaterialSource

Page 25: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FM2 で追加されたものと削除されたもの (3)

• [Metropolis UI]TLiveTileTLiveTile

• [Sensors]TLocationSensor / TMotionSensor

• [Standard][Standard]TPopup (XE2: コンポーネントとしては存在しない)

FMX Pl tf Pl tf 変数 (削除)• FMX.Platform.Platform 変数 (削除)

• TabOrder プロパティ (削除)( )

• スクリーンキーボード呼び出し

12• Anchors プロパティ

Page 26: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

FireMonkey が得意とするものと苦手とするもの3 ものと苦手とするもの3

13

Page 27: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

○ 外観 (カスタムスタイル)

• FireMonkey はスタイルを変更する事でコントロールの外観を変更可能。

??

14「...VCL にも "VCL スタイル" あるじゃん?」

Page 28: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

○ アニメーション

• FireMonkey は アニメーションを使ってコントロールに動きを付けられる。

??

15「何で動きを付ける必要があるの?」

Page 29: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

○ センサー&ロケーション (FM2)

• FireMonkey では簡単に センサー& ロケーションを扱える。

??

16「...VCL からも使えるって言ってなかった?」

Page 30: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

△ キーボード入力の多いフォーム

• FireMonkey は入力コントロールの多いフォームがちょっと苦手。

......

17「バリバリキーボード入力するのなら VCL のほうがいいかも」

Page 31: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

× BDE とか ActiveX

• FireMonkey では BDE や ActiveX は使えない。

......

dbGo (ADO) は( )Windows プラットフォーム

専用だが利用可能。

18「マルチプラットフォームだしね...」

Page 32: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

○ DBX4 とか IBX とか DataSnap とか

• DBX4 / IBX / DataSnap はマルチプラットフォーム&64bit で利用可能。

DB 操作方法は VCL と全く同じなので ビジネスロジ クでは苦労しない• DB 操作方法は VCL と全く同じなので、ビジネスロジックでは苦労しない。

!!

19「詳しくは DH山本さんの 【A5】 セッションで! (丸投)」

Page 33: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

○ 3D S

• FireMonkey は 3D アプリケーションも作れる。

!!

20「全部自前でやれって言われたら涙目」

Page 34: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

○ マルチプラットフォーム S

• FireMonkey は OS X アプリケーション開発に対応している。(画像はハメコミ合成ではありません)(画像はハメコミ合成ではありません)

!!

「ウリの だしね

21

「ウリの一つだしね」

※ {$RTTI EXPLICIT } 指令は使わないほうが無難。

Page 35: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

○ 高解像度アプリケーション対応 S

• FireMonkey は スケール変更 / 回転が実用的。

スケ リング対応にするには フ ムに TS l dL t を貼り• スケーリング対応にするには、フォームに TScaledLayout を貼り、その上にコントロールを置くだけでいい (Alignment は alFit 系で)。

!!

22「Windows 8 でフォームが崩れて困ったな、そういや」

Page 36: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

FireMonkey に向いているビジネスアプリは?4 ビジネスアプリは?4

23

Page 37: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ここまでの前提条件を踏まえて。

...では何が FireMonkey に...では何が FireMonkey に向いているのか?

24

Page 38: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey に向いているビジネスアプリ (1)

• Mac OS X 上で動作するアプリケーション

Wi d 版と M 版で "ほぼ同等の操作性のアプリ" が必要な場合• Windows 版と Mac 版で "ほぼ同等の操作性のアプリ" が必要な場合。

• 理由理由

選択の余地がない

Windows と Mac で別の開発ツールを使うのは効率が悪い。

25

Page 39: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey に向いているビジネスアプリ (2)

• スレート PC (タブレット PC) で動作するアプリケーション

タ チパネルで操作するアプリケ シ ン• タッチパネルで操作するアプリケーション

• 理由理由

センサーが使える

FireMonkey では、回転 / 拡大縮小の処理が簡単

26

キーボード入力が殆どない

Page 40: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey に向いているビジネスアプリ (3) S

• 視覚的に訴えるアプリケーション (3D 含む)動きのあるアプリケ シ ン• 動きのあるアプリケーション

右の画像は の物体の右の画像は 2 つの物体のサイズを比較するだけのアプリケーションです。

機能はシンプルですが、単に数値が並んでいるより、

サイズを具体的にイメージできます

• 理由

サイズを具体的にイメージできます。

理由

VCL で同等のことを行うのは不可能ではないが大変

DirectX や OpenGL の知識がなくともそれなりの事ができる。

27

Page 41: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey に向いているビジネスアプリ (4-1)

• ...実は普通のビジネスアプリケーション。

4 34:3(1024x768) 5:4

(1280 1024)(1280x1024)

実 が同

• 理由

実 DPI が同一でインチサイズが異なる場合

理由

Windows 8 では画面の DPI が調整される = 96DPI ではない

今後、高解像度対応のアプリケーションが必要になってくる。

28

Page 42: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey に向いているビジネスアプリ (4-2)

• リサイズ可能でフォームサイズと情報量が比例するのならばいいのだが?

イ イズが

• 理由

インチサイズが同一で実 DPI が異なる場合

理由

スケール固定でないと画面のレイアウトが崩れる (VCL アプリ)。 スケール固定だと相対的にフォームサイズが小さくなってしまう。

29

Page 43: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

役に立つかもしれない&ヒントになるかもしれない5 Tips5

30

Page 44: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

タブ順序をどうにかしたい

• FM2には TabOrder が存在しない。タブ順序はコントロール作成順となる。

• 並べ替えたい順にフォームデザイナでコントロールを選択し、Ctrl+X で切り取って Ctrl+V で貼り付けるとタブオーダーが変わる。(VCL フォームアプリケーションでも同じ)

• 複数選択時に FMX のフォームデザイナが言う事を聞かない場合には、複数選択時に FMX のフォ ムデザイナが言う事を聞かない場合には、一つづつ並べ替えたい順にコントロールを切り取り、テキストエディタに順に貼り付ける。そして全選択してフォームデザイナに貼り付ける。

• 一旦、[構造] ビューでコントロールを複数選択するとうまくいくかも。それでもダメならメインメニューの [編集] からコピーとか。

• 並び替えるのをやめて (あきらめて)、フォーカスを持つコントロールをリスト (或いは動的配列) に突っ込んで管理する

31

リスト (或いは動的配列) に突っ込んで管理する。

※現在、スマートな解決方法を模索中です。

Page 45: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

IM(E) モードをどうにかしたい (暫定) S

• コントロールの ImeMode プロパティは動作しない。

O E t / O E it で無理矢理 IM(E) を変更する• OnEnter / OnExit で無理矢理 IM(E) を変更する。

• Windows なら、VCL の SetImeMode() を呼び出す。

• OS X は IM の制御方法がよくわからなかったのでOS X は...IM の制御方法がよくわからなかったので、"ことえり" のショートカットのキーコードを送信したが、それなりに動いた。

constkVK ANSI J $26kVK_ANSI_J = $26;

varSrc: CGEventSourceRef;EventUp, EventDown: CGEventRef;

begin// Ctrl + Shift + J のキーイベントを生成 (ことえりのひらがなモードショートカット)// ( )Src := CGEventSourceCreate(kCGEventSourceStateCombinedSessionState);EventDown := CGEventCreateKeyboardEvent(Src, kVK_ANSI_J, Integer(True));CGEventSetFlags(EventDown, kCGEventFlagMaskControl or kCGEventFlagMaskShift);EventUp := CGEventCreateKeyboardEvent(Src, kVK_ANSI_J, Integer(False));CGEventSetFlags(EventUp, kCGEventFlagMaskControl or kCGEventFlagMaskShift);CGEventPost(kCGSessionEventTap EventDown);CGEventPost(kCGSessionEventTap, EventDown);CGEventPost(kCGSessionEventTap, EventUp );CFRelease(EventUp );CFRelease(EventDown);CFRelease(Src);

end;

32※現在、スマートな解決方法を模索中です。

Page 46: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

レポートツールはどうするの?

• FastReports の FMX 版が発売されている。

C/S とか三層デ タベ スアプリなら• C/S とか三層データベースアプリなら...

VCL で印刷サーバを作り、Indy 等で帳票の種類やパラメータを通信してパラメータを通信して

印刷する。

印刷専用• プリンタ設定が一回で済む

33

印刷専用アプリ

• OS によって印刷結果が異なるのを回避できる。

Page 47: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Microsoft Office との連携はどうするの?

• *.docx / *.xlsx / *.pptx は ZIP で固められた XML ファイル。

と を使えば• System.Zip.TZipFile と Xml.XMLDoc.TXMLDocument を使えば、自在に加工する事ができる (VCL でもできるという事なのですが...)。

• [TXMLDocument の使い方 (DocWiki)]http://docwiki.embarcadero.com/RADStudio/ja/TXMLDocument_%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9

• [Office (2007) Open XML ファイル形式の概要]http://msdn.microsoft.com/ja-jp/library/aa338205%28office.12%29.aspx

• [Office Open XML File Formats]

34

http://www.ecma-international.org/publications/standards/Ecma-376.htm

Page 48: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

埋め込みブラウザは? S

• Delphi Chromium Embedded Framework (DCEF) が使える。

新版の DCEF3 (htt // d l / /d f3/) は• 新版の DCEF3 (http://code.google.com/p/dcef3/) は、現在 VCL 専用。

• DCEF1 (http://code.google.com/p/delphichromiumembedded/) は、( p g g p p ) 、そのままでは XE3 に対応しない。

• XE3 で DCEF1 を使うには、以下の URL にあるパッチが必要となる。https://groups google com/forum/?fromgroups=#!topic/delphichromiuhttps://groups.google.com/forum/?fromgroups=#!topic/delphichromiumembedded/rLt4wgRDy0c

ロケーションコンポーネントと組 合わ 例 す組み合わせた例です

35※但し、64bit / OS X 用はまだ存在しない。

Page 49: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

センサー&ロケーション (FM2)

• PC にセンサーが付いているのなら使わないテはない。

Wi Fi が使えれば 仮想 GPS センサ を利用可能 (Wi d 7)• Wi-Fi が使えれば、仮想 GPS センサーを利用可能 (Windows 7)。(Geosense for Windows: http://geosenseforwindows.com/)

• Windows 8 ならば、仮想 GPS センサーなしでも Wi-Fi データ等から、仮 等三角測量を行う...らしい。

36※センサーコンポーネントは、あと 7 個増やせます。

Page 50: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ドライバによる画面回転とソフトウェアによる回転 S

• ドライバが持つ画面回転機能は全般的に遅い。

画面の書き換え過程が見えてしまう (描画をロ クしたとしても)• 画面の書き換え過程が見えてしまう (描画をロックしたとしても)。• ドキュメントの類は縦画面で読んだほうが視認性がいい事がある。

横 大横 大

フィット

フィット

37

Page 51: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

とりあえずスタイルを変更してみる。

• 用意されているスタイルへ変更するだけでも随分と印象が変わる。

手間が掛からないのでや て損はない• 手間が掛からないのでやって損はない。

• 利用できるスタイルは $(BDS)¥Redist¥styles¥Fmx にある。

スタイルについての詳細は

第23回デベロッパーキャンプ【B2】見た目で楽しい

プ グラミ グDelphiプログラミング

セッション資料を参考にしてくださいしてください。

38

Page 52: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

タイリングな背景 S

• TImage を alClient で貼り、WrapMode プロパティ を iwTile にしただけ。

Fi M k には簡単機能が用意されているものが少なくない• FirewMonkey には簡単機能が用意されているものが少なくない。

• ...探すのが大変ですが (^^;A

39

Page 53: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

動く (企業) ロゴ S

• 画像をレイヤー状に配置してアニメーションさせれば動くロゴが作れる。

メインフ ムやスプラ シ ウ ンドウに配置するとインパクトあるかも• メインフォームやスプラッシュウィンドウに配置するとインパクトあるかも。

40

Page 54: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

TPopup でアラート (FM2) S

• TPopup を使ったアラート (ダイアログ)複数のフ ムではなく単 のフ ムで画面遷移する場合に• 複数のフォームではなく単一のフォームで画面遷移する場合に。

• OS 標準のダイアログではできない事 / 不都合な事がある。

41

Page 55: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey が機能不足で VCL の機能が必要な場合 (1)

• 初にお断りしますが非推奨です。

• VCL アプリケーションを作り、そこへ TPanel を貼って、TPanel に FMX フォームを割り当てる。

• [VCLフォーム内にFireMonkeyフォーム - ただし互換性が無いので…]http://blogs.embarcadero.com/teamj/2011/09/12/2387/p g j

• [Delphi XE2 - heating up the hype: playing the matchmaker for VCL and FMX]http://delphisorcery.blogspot.jp/2011/09/delphi-xe2-heating-up-hype-p p y g p jp p g p ypplaying.html

• DSharp Windows FMXAdapter pas は FM2に対応していないDSharp.Windows.FMXAdapter.pas は FM に対応していない。

• MonkeyMixer の作者はブログを閉じてしまった (現在 DL 不可)。

42

Page 56: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey が機能不足で VCL の機能が必要な場合 (2)

FireMonkey 用のフォームはここで作る

VCL 用のフォームはここで作る

プロジェクトのみ。フォームはここに追加

(作成はしない)

43

(作成はしな )

※FMX プロジェクト上では VCL フォームは新規作成できない。逆も然り。

Page 57: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey が機能不足で VCL の機能が必要な場合 (3) S

procedure TfrmContainer.FormCreate(Sender: TObject);// フォ ム作成時

コード例:

FMX フォーム用パネル// フォーム作成時begin

// FMX フォームを生成frmuMain := TfrmMain.Create(nil);

end;

(コンテナ)

procedure TfrmContainer.FormDestroy(Sender: TObject);// フォーム破棄時begin

// FMX フォームを破棄frmuMain.Free;

end;

procedure TfrmContainer.Button1Click(Sender: TObject);// ボタン押下時begin

// FMX フォ ムをパネルに埋め込む// FMX フォームをパネルに埋め込むpnlContainer.Form := frmuMain;

end;

マルチプラットフォームにしなければならない可能性が

僅かでも残るのであれば

44

僅かでも残るのであればこの手法を採るべきではない。

Page 58: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

VCL でタッチ対応アプリケーションを作った時の苦労話(1)

• フルHD デスクトップのタッチアプリケーションと画面回転可能なスレ トPCで動作する同じ機能のアプリケ ション画面回転可能なスレートPCで動作する同じ機能のアプリケーション。

• 工場向け (図面閲覧や工程管理用)• タッチディスプレイは 21.5 インチ。B4 サイズの用紙が実寸で収まる。。 用紙 実 。

• スレート PC は 11.6 インチ。図面を閲覧したりするので、拡大/縮小機能があったとしてもそれなりの大きさを必要とする。

キ ボ ド / マウスレス• キーボード / マウスレス。

• バーコードリーダとタッチディスプレイですべての操作を行う。

• PC に不慣れな (キーボード操作 / マウス操作がおぼつかない) 方でもPC に不慣れな (キ ボ ド操作 / マウス操作がおぼつかない) 方でも使い方は1 日で覚えてしまう。

• スワイプ等の一見して解らない操作方法は極力排除。

• UI は何らかのボタンという形で画面上に見えている。

• 将来的には障碍者の方の雇用に結びつくようなアプリにしたいとの事。

• 月に1~2度 他社の視察を受けている模様

45

• 月に1~2度、他社の視察を受けている模様。

Page 59: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

VCL でタッチ対応アプリケーションを作った時の苦労話(2)

• 開発スタートは XE2 発売の半年程前。

Fi M k の情報は事前に判 ていたが間に合わなか た• FireMonkey の情報は事前に判っていたが間に合わなかった。

• ボタンをすべて自前で描いた (通常 / 押下 / 無効を 1 セットで)。• スレート PC の回転機能はドライバによる回転なのでスレ ト PC の回転機能はドライバによる回転なので、

どうやってもチラつく&遅い (未解決)• デスクトップでは収まるものがスレート PC では収まらなかったりするが、

同じ機能のアプリケ シ ンを 2 つ別に作る余裕はなか た同じ機能のアプリケーションを 2 つ別に作る余裕はなかった。

• 解像度が異なるので、違いを意識させる事のない操作性にするのが難しかった (実 DPI の考慮)。( )

• スレート PC のセンサー (3軸加速度センサー) を検出するのが厄介だったので諦めた (回転の検出は解像度変更の検出で代替)。UI に関しても 工数の関係で簡素化してしま たものがある• UI に関しても、工数の関係で簡素化してしまったものがある。

• 一部 Direct2D を使っている。

• OS のダイアログは一切使えない (タッチ操作できたものではないので)。

46

OS のダイアログは 切使えない (タッチ操作できたものではないので)。

Page 60: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

VCL でタッチ対応アプリケーションを作った時の苦労話(3)

• スレート PC は Atom プロセッサなので非力。

予算が潤沢にあるのなら C 系のスレ ト PC を採用するのもアリだが• 予算が潤沢にあるのなら Core 系のスレート PC を採用するのもアリだが、工場のように台数を必要とするトコロではそうもいかない。

• FireMoneky アプリがストレスのない速度で動作するのは確認済。y 度 動 す 確認済。(流石は Delphi...以下略)

• 現在の FireMonkey に足りないと思うのはインプレースなタッチ (仮想) キーボードタッチ (仮想) キーボード。

• OS が持つスクリーンキーボードはオーバーラップするので使い勝手が悪い&OS 毎に操作性が異なる。

• "スレート PC プログラミング (ONKYO TW317A5)" はhttp://ht-deko.minim.ne.jp/tw317/#05(FireMonkey を知った後では) ある意味バッドノウハウのオンパレード。(FireMonkey を知った後では) ある意味バッドノウハウのオンパレ ド。

• FireMonkey があれば、もっと簡単に作れたのに...。

47

Page 61: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

まとめ66

48

Page 62: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

FireMonkey をビジネスアプリで活用するために

• 「VCL アプリケーションを捨てろ!」 なんて事は言っていないし言わない。

• しかしながら VCL アプリケーションでは工数とメンテに時間が掛かるものが確かに存在する。

• "FireMonkey をビジネスアプリで活用する" には、FireMonkey で何がやれるか、何がやれないかを見極める必要がある。FireMonkey で何がやれるか、何がやれないかを見極める必要がある。

• マルチプラットフォームなら、RIA (Rich Internet Applications) よりも操作性の面で優れている必要がある。RIA と同等またはそれ以下ならばデスクトップアプリケーションである必然性がない。

• 安価なもので構わないので、スレート PC を仕入れて触ってみる。センサー、マルチタッチ、縦横回転など、従来のアプリケーションとは異な た考え方のアプリケ シ ンを提案できるかもしれない

49

異なった考え方のアプリケーションを提案できるかもしれない。

Page 63: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

システムのスケーラビリティ (業務アプリの展開方法)

• 初は Windows のみの C/S でスタート

マルチプラ トフ ムとして M を追加• マルチプラットフォームとして Mac を追加

• 外部からのアクセスを可能にするため、DataSnap で三層化 (Ent)• DataSnap モバイルコネクタを利用して iPhone や Android 対応 (Ent)DataSnap モバイルコネクタを利用して iPhone や Android 対応 (Ent)

予算や納期に合わせて無理のないシステム拡張を

行うことが可能になる。う

RAD Studio も、その規模に合わせてその規模に合わせて

アップグレードすればいい。

50Step1 Step2 Step3 Step4

Page 64: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

具体的に何が向いているのか?

• 受付業務全般(フロントでお客さんが操作するようなもの)(フロントでお客さんが操作するようなもの)

• 工場系のワーカーさんへの作業指示&フィードバック場系 業指(ペーパレスが実現できる / 手が汚れていても肘などで操作可)

医療系の高精細な画像を扱うアプリケ シ ン• 医療系の高精細な画像を扱うアプリケーション(高解像度ディスプレイを使ってもフォームが破綻しない)

• フィールドワーク / 営業さん用(GPS とローカル DB があれば、通信できないような場所でも OK)

• エライヒトまたは視察 (おもてなし) 用のハッタリアプリケーション(見た目で納得しちゃう方が少なからずいらっしゃいます...)

51

( )

Page 65: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

資料資料

52

Page 66: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

関連情報 &資料1

• [FireMonkey アプリケーション プラットフォーム (DocWiki)]http://docwiki embarcadero com/RADStudio/ja/FireMonkey アプリケーション プラットフォームhttp://docwiki.embarcadero.com/RADStudio/ja/FireMonkey_アプリケーション_プラットフォーム

• [デベロッパーキャンプアーカイブ (Embarcadero)] - 過去のデブキャン資料ですhttp://www.embarcadero.com/jp/developer-camp-japan/archivep jp p p j p

• [Devices (ロケーション/センサー API) (MSDN)]http://msdn.microsoft.com/en-us/library/ee663267%28VS.85%29.aspx

• [デバイスの概念とアーキテクチャ (Windows)]http://msdn.microsoft.com/ja-jp/library/windows/apps/hh750300.aspx

• [高 DPI 対応の Win32 アプリケーションを記述する] - 悩んでしまうかもしれません(Windows デベロッパー センター)http://msdn.microsoft.com/ja-jp/windows/dd630126.aspxp j jp p

53

Page 67: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

関連情報 &資料2

• [Microsoft Serface with Windows 8 Pro (Microsoft)]http://www.microsoft.com/Surface/en-US/surface-with-windows-8-pro/homep p

• [Lenovo Thinkpad Tablet 2]http://shopap.lenovo.com/jp/products/tablets/thinkpad2/

• [Mac OS X 10.6 Snow Leopard (Apple Store)] - ¥1,700 で再販中...orzhttp://store.apple.com/jp/product/MC573J/A/mac-os-x-10.6-snow-leopard

• [FireMonkey (Stack Overflow)]http://stackoverflow.com/questions/tagged/firemonkey

• [Delphi (FireMonkey) によるテクニック&アルゴリズム]http://ht-deko.minim.ne.jp/techalgof.html

[FMX S E ] FM2 のセンサ コンポ ネントを 7 個増やせます• [FMX.SensorsEx] - FM2 のセンサーコンポーネントを 7 個増やせますhttp://ht-deko.minim.ne.jp/software/fmx_sensorsex.zip

• [DTween (全力わはー)] - VCL でもアニメーションできます

54

[DTween (全力わは )] VCL でもアニメ ションできますhttp://d.hatena.ne.jp/tales/archive?word=*[DTween]

Page 68: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

第24回 エンバカデロ・デベロッパーキャンプ

John “JT" Thomas 製品担当ディレクター [email protected] Twitter: @FireMonkeyPM

新井 正広 Manager, Doc & Localization [email protected] Twitter: @arai_masahiro

Page 69: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

開発者に関する世界的統計

• 年間 520 億行ものコード

• コード 1 行当たり平均 28 米ドル

• ソース コードの開発にかかる費用は、全世界で年間 1.5 兆ドル

全世界で1,600 万人のソフトウエア開発者 (Evans Data 社調べ)

Page 70: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

エンバカデロの顧客

• 年間 97 億 行のコード

• 年間 480 億行のコードを節約

• 必要なコードは 80% 削減

• 1 コード行当たり実質 5.60 ドル(1

行あたり28米ドルではなく)

• 年間2,200億ドルの開発費用を節約

300 万人の Delphi/C++開発者がコーディング

Page 71: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

しかし、それは氷山の一角にすぎない。

Page 72: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

1999 年のエンタープライズ環境

Windows

Page 73: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

2005 年のエンタープライズ環境

Windows Web

Page 74: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

2012 年のエンタープライズ環境

Windows Mac モバイル Web

開発者にとって前例のない規模の マルチプラットフォーム開発機会

6,500 万台 10 億台 10 億台 20 億人

Page 75: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

$$$$$ $$$$$ $$$$$ $$$$$ + + +

Page 76: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

$

単一ソースコードのネイティブ クロスプラットフォーム環境で、 デスクトップからモバイルまでを サポート

Page 77: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

$ $

DataSnap と HTML5 Builder を 使用する Web クライアントを追加 する場合

Page 78: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ネイティブ プラットフォームと Web を ターゲットにしたプロジェクトの例

50,000 行のコード 140 万ドルのプロジェクト費用 184 人月の工数 LOC 当たり実質 28.31 ドル

2,000 行のコード 11.3 万ドルのプロジェクト費用 15 人月の工数 LOC 当たり実質 2.26 ドル

vs

Page 79: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ
Page 80: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

現在のソリューション

Page 81: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

RAD Studio XE3

Windows 8

Visual LiveBinding

Metropolis UI Delphi

HTML5

Mac OS X Mountain Lion

FM2

Mobile

The Developer Force Multiplier

Page 82: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

本日の発表

Page 83: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

64-bit C++Builder for Windows

VCL および FireMonkey

Dinkumware STL for C++11/C99

Boost 1.5

高度に最適化されたコード生成

Page 84: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

将来のためのアーキテクチャ RAD(Rapid Application Development) マルチデバイス

ARM

INTEL PME & RTTI

IRエンジン

コード生成 エンジン

言語 エンジン

標準 互換性 ライブラリ C99, C++98, C++11 Borland C++

C++Builder, CLANG STL, Boost, Loki, ACE

Page 85: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

製品出荷予定 12月10日 よりダウンロード開始

XE3 のアップデートとしても提供

新版を再インストール

XE3 とバイナリ互換

Page 86: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

モバイル開発の現在

Page 87: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

現代の Web 技術を使ったRADビジュアル開発

Web、iOS、Android、BlackBerry、 Windows Phone をターゲットに

HTML5 Builder

• HTML5、CSS3、JavaScript でのフロ

ントエンドの開発

• PHP でのサーバー側の開発

• モバイル デバイス UI スタイル設定

• CSS3 によるスタイル設定および

アニメーション

• 豊富なビジュアル コンポーネント

• ビデオ、オーディオ、GPS、カメラ、

加速度センサなど

• Web および AppStore への配置

Page 88: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

HTML5 かネイティブか? ネイティブの利点 HTML5 の利点

複雑な UI 単純な UI

低レイテンシ UX 高レイテンシ環境でも OK

高度な処理要件 ブラウザによる配置

データをデバイスで生成 Web データをクラウドで生成

UI データ入力 フォーム データ入力

プレゼンテーション / アプリケーション / データ層 プレゼンテーション層

Page 89: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

将来のモバイルソリューション

免責事項: 以下の情報はエンバカデロにおける現時点での製品の一般的な方向性を記述したもので、ライセンスに関する決定を行う際に判断のよりどころにはしないでください。機能の今後の開発、リリース、価格設定、スケジュールは、予告なしにいつでも変更される可能性があります。このロードマップは、お客様が翌年のモバイル プロジェクトを立案する際に、ソフトウェア保証サブスクリプションの役に立つことを目的としています。

Page 90: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

開発中の機能 • ネイティブ ARM ツール チェーンを統合

• Delphi および C++

• コンパイラ、リンカ、デバッガ

• ネイティブ iOS および Android プラットフォームのサポート(RTL、FireMonkey、ネイティブ API)

• FireMonkey モバイル フレームワーク

• モバイル フォーム デザイナ

Page 91: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

• モバイル センサ サポート(GPS、カメラ、加速度、ジャイロ)

• ネイティブ UX とネイティブ UI スタイル

• カスタム UX とデザイナー仕様のスタイル

• 組み込みデータベースとエンタープライズ データベースのサポート

• DataSnap ミドルウェアのサポート

開発中の機能

Page 92: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

• XE3 Windows/Mac 版 FM2 との互換性

• HD および 3D

• Retina/高解像度の自動処理

• 設計、開発、シミュレーション、デバッグ、配置の統合

• アドホック配布および AppStore 経由の配布

開発中の機能

Page 93: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ロードマップ 2013 年

iOS - 2013 年上半期(予定)

Android - 2013 年中期(予定)

* リリース時期は、エンジニアリングの現在のスケジュールと進捗に基づいて見積もったものです。実際のリリース時期はロードマップと異なる場合があります。

Page 94: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Mobile Demo

免責事項: この情報はエンバカデロにおける現時点での製品の一般的な方向性を記述したもので、ライセンスに関する決定を行う際に判断のよりどころにはしないでください。機能の今後の開発、リリース、価格設定、スケジュールは当社の裁量に委ねられており、予告なしにいつでも変更される可能性があります。

Page 95: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Powering Today’s Applications and Data

Page 96: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

【A4】 テクニカルセッション

「RAD Studio XE3 によるWindows 8 開発」

【A4】 テクニカルセッション

Windows 8 開発」

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

新井正広

1

Page 97: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

Windows 811

2

Page 98: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Windows 8

• 10⽉26⽇発売

3

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

Page 99: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Windows 8

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

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

4

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

Page 100: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

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

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

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

Win32 API Windows Runtime

Windows 8 Windows RT

Intel x86 / x64 ARM5

Page 101: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Windows ストアアプリ

• Windows ストアアプリ– 従来の Win32 アプリは動作しない

Windows ストアからダウンロ ド 購⼊– Windows ストアからダウンロード、購⼊• Microsoft の審査後に公開• 不適切なAPI 法律 約款への違反が無いかチェック• 不適切なAPI、法律、約款への違反が無いかチェック

– 社内向けアプリはストアを経由せずに配布可能• Windows 8 Enterprise + ドメイン参加が必須

6

Page 102: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Windows ストアアプリ

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

• ライブタイルアプリケ シ ンのステ タスをリアルタイムで表⽰– アプリケーションのステータスをリアルタイムで表⽰

• アプリケーションの販売・トライアルアプリケ ションの販売 トライアル– 容易な配布、更新

7

Page 103: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

デスクトップ アプリ

• Windows RT / ARM 環境では動作しない• Windows 8 / Intel 環境でのみ動作

• Windows 7 に対応できているのであれば、特に問題は無い– データベースドライバなどの対応は、ベンダーによって異なるデ タ スドライバなど 対応は、 ンダ よ て異なる

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

8

Page 104: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

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

9

Page 105: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

タッチ向けアプリケーションを構築する。そのまえに

• たくさんの要素をひとつの画⾯に配置しない– 細かいUIはそもそも選択できない– 凹凸のあるキーボードですら、19mmピッチが⼀般的

– 重要な選択肢ほど⼤きく表⽰• 間違って選択することを避ける

– 重要ではない選択肢は⼩さめでも可• レビュー⽤の「★★★☆☆」

– 可能な限り、そもそも UI 要素を省く

10

Page 106: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

タッチ向けアプリケーションを構築する。そのまえに

• ユースケース・シナリオを単純にする– 機能を増やすほど UI は複雑化する

• ヘルプ ドキュメントを⾒なくてもよい UI を設計する• ヘルプ・ドキュメントを⾒なくてもよい UI を設計する– フローが単純であること結果を予測できること– 結果を予測できること

– 元に戻れること

• Windows 8 ストアアプリ向けデザインガイドは「よい指針」– 数多くのユースケースが詳細に検討されている数多くのユ スケ スが詳細に検討されている

11

Page 107: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

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

12

Page 108: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

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

• 「タッチモード」で画⾯を少し⼤きくしてみた例

13

Page 109: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

画⾯の⼤きさの違い

14

Page 110: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

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

15

Page 111: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

タブレット、タッチへの対応

• 既存の UI をそのままタッチ向けに移⾏するのは、⾮現実的– TMainMenu– TPopupMenu– TTreeView

異なるデバイスへの対応が必要• 異なるデバイスへの対応が必要– ディスプレイ(画⾯の⼤きさ)⼊⼒デバイス(キ ボ ド マウス タ チ ペン)– ⼊⼒デバイス(キーボード、マウス、タッチ、ペン)

• 複雑な階層メニューを作成することは、ほぼ不可能複雑な階層メニュ を作成することは、ほぼ不可能

• ⼊⼒系のコンポーネントは、⼤きさ、配置を再考する

16

Page 112: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

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

3

17

Page 113: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

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

Metropolis UI Embarcadero Prism

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

p

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

Win32 API Windows Runtime

Windows 8 Windows RT

Intel x86 / x64 ARM18

Page 114: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Metropolis UI

• デスクトップアプリとして動作– Windows 8 スタイルのアプリ

• 利⽤環境はWindows 8 に限らない• Windows 7, Vista, XP でも動作

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

• サポートするフレームワーク– FireMonkey– FireMonkey– VCL

19

Page 115: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Metropolis UI

• ⾃動⽣成されるテンプレート– 空⽩のプロジェクト、または– グリッド形式のインデックス/詳細ページ– Esc キー、または画⾯下からのスワイプで表⽰される AppBar

• Windows 8 「スタイル」のコンポーネント

20

Page 116: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Metropolis UI

• Windows 8 スタイルのコンポーネント– TEdit

• 標準的な操作に対するグリフ表⽰とアクションを追加– TListBox

• イメージとタイトルをボックスに表⽰– TComboBox– アイコンライブラリ– ツールチップ– フライアウト

21

Page 117: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

異なる画⾯サイズ、向きへの対応

• 画⾯をスクロールして、残りのコンテンツを表⽰する– Windows 8 ストアアプリのスタイル– 最初からすべてを表⽰することを期待しない

22

Page 118: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

異なる画⾯サイズ、向きへの対応(FireMonkey)

• FormFactor プロパティを使⽤する– 事前に、複数の画⾯サイズ、向きのフォームを定義

Application.CreateForm(TLargeForm, LargeForm);A li ti C t F (TS llF S llF )Application.CreateForm(TSmallForm, SmallForm);

Application.RegisterFormFamily('DetailView',[TLargeForm, TSmallForm]);

– 実⾏時に、デバイスにあわせてフォームを選択

[ g , ]);

procedure TGridViewForm.ItemClick(Sender: TObject);varForm: TCommonCustomForm;

beginForm := Application.GetDeviceForm('DetailView');if Assigned(Form) thenForm Show;

23

Form.Show;end;

Page 119: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ジェスチャを利⽤する

• 対話型ジェスチャ– ズーム、回転など

• InteractiveGesture を選択• OnGesture イベントを実装• ジェスチャを⾏っている間、イベントが発⽣し続ける

• 標準ジェスチャ– 上、下、矩形など

• TGestureManager, TActionList コンポーネントを利⽤• 個別のジェスチャが「認識されたとき」に、アクションを実⾏

24

Page 120: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Metropolis UI

• VCL と FireMonkey のどちらを選ぶべきか– VCL

• 過去のコードとの互換性は⾼い– 特にデータベースアクセス

• TTouckKeyboard が提供されている(Win XP にも対応)Fi M k– FireMonkey

• 異なる画⾯サイズへの対応は容易Z (S l )– Zoom (Scale)

– FormFactor

25

Page 121: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Metropolis UI

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

26

Page 122: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

ライブタイルの配布

• 配布可能な環境– Windows 8 Enterprise– ドメインへの参加

• 配布すべきモジュール– 作成したデスクトップアプリケーション– プロジェクトフォルダにある .appx ファイル– <BDS>¥bin¥livetile 以下にあるバイナリ⼀式

• Embarcadero.Metropolis.LaunchAgentHost.exe を実⾏• サービスを登録(InstallTileSvc.bat)

• .appx ファイルは適切な署名が必要27

pp

Page 123: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

E b d P i をEmbarcadero Prismを使⽤した3 使⽤したWindows ストアアプリ3

28

Page 124: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Windows Store アプリの基本

• XAML & コードビハインド(.pas)で構成– アプリケーション

• Windows.UI.Xaml.Application クラスを拡張– ページ

• Windows.UI.Xaml.Control.Page クラスを拡張– イベントハンドラをパーシャルクラスを使⽤して実装

29

Page 125: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Windows Store アプリの基本

• サンドボックスモデルを使⽤している– アプリケーションが使⽤する機能を宣⾔、ユーザーが承認

• ドキュメントへのアクセス• 位置情報• ネットワークアクセス

b カメラ• Web カメラ

30

Page 126: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

Windows 8 で提供されているサービスを利⽤する

• どのコントラクトを使⽤するかを宣⾔

• コントラクトに対するイベントを記述• コントラクトに対するイベントを記述

31

Page 127: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

Windows ストアアプリの配布3 配布3

32

Page 128: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

アプリケーションの配布

• 基本的に、Windows Store で配布する• 社内アプリの場合には

– Windows 8 Enterprise + ドメイン参加が必須p– 事前に署名する(配布先で、そのまま署名が確認できる)– ドメイン管理者が必須アプリとして配布するシナリオ

• PowerShell Script を使⽤する

33

Page 129: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

Q & AQ &

34

Page 130: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

【A5】 Delphiテクニカルセッション

「Delphi+Visual LiveBindingによる

データベースアプリケーション開発」

【A5】 Delphiテクニカルセッション

デ タベ スアプリケ ション開発」

株式会社ドリームハイブ株式会社ドリ ムハイブ

代表取締役 ITコンサルタント

山本 悟

1

Page 131: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

自己紹介

• 名前:山本 悟 (やまもと さとる)代表取締役 & ITコンサルタント– 代表取締役 & ITコンサルタント

• 会社:株式会社ドリームハイブ会社 株式会社 リ– 会社URL :http://www.dreamhive.co.jp/– フリーソフトなどを配信 :http://dhive.jp/

山本のブログ :http://dhive jp/blog/yama/– 山本のブログ :http://dhive.jp/blog/yama/– facebook :http://www.facebook.com/kryu2

• 山本はこんな人:– 17歳からIT業界へ

Delphi は1 0からの親友– Delphi は1.0からの親友– ドリームハイブの経営、ITコンサルティング、

システム開発、スピーカーなどが主な仕事

22

Page 132: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

本日の流れ

• VCLとFMとVisual LiveBinding

• 接続の基本のデモ

• 双方向の接続のデモ

• フィールドを利用した接続のデモ

• DataSourceと接続のデモ

• 他の形式のデータと接続のデモ

• まとめ

このセッションは、テクニカル・セッションです

RAD StudioでLiveBindingを用いたアプリケーションの構築方法について、g 築

私の主観と経験に基づいてお話しいたします

あなたにとって最適解では無いかもしれませんが、参考になると思います

33

Page 133: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

VCLとFireMonkey

• RAD Studio XE2からフレームワークにVCLとFireMonkey(XE3では FM2)が追加されました

4

Page 134: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

LiveBindingとは

• VCL/FMのどちらにもLiveBindingがありますが、FMはクロスプラットフォームです

• LiveBindingの概要– バインディング式と呼ばれる、

単方向にも双方向にもできる関係式に基づいているLi Bi di は伝播する– LiveBinding は伝播する

– コントロール オブジェクトとソースオブジェクト

• バインディングの作り方• バインディングの作り方– LiveBindingデザイナかLiveBindingウィザード

• クイックバインディングのみ作成できる

– LiveBindingコンポーネントの利用g• バインディング式などを指定できる

– 注意• 1つのコントロールを2つのコンポーネントプロパティにリンクすることはできない• コントロールと両方のコンポーネントプロパティを1つのフィールドにリンクすることは可• コントロールと両方のコンポーネントプロパティを1つのフィールドにリンクすることは可

• と言う事で、本日はLiveBindingについて話します

5

Page 135: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

LiveBindingのための設定

• オプション設定右クリックメニューにLiveBindingウィザードを表示

6

Page 136: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

接続の基本

• LiveBindingはコンポーネントのプロパティを動的に結びつける

– EditとLabelを結びつけるなどの基本のデモ01

7

Page 137: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

双方向の接続

• 双方向に繋げることも

– EditとEditを接続するデモ02

• キーワード

– BindingsList1.Notify()

– Direction := dirBidirectional

8

Page 138: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

フィールドを利用した接続1

• PrototypeBindSourceとは

– PrototypeBindSourceとは、アプリケーションのテストのために様々なフォーマットのサンプルデータを提供する機能をも ンポ ネントです能をもつコンポーネントです。

9

Page 139: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

フィールドを利用した接続2

– PrototypeBindSourceを使い、フィールドを経由して様々な ポ ネ トを クするデ 03なコンポーネントをリンクするデモ03

10

Page 140: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

フィールドを利用した接続3

– Generatorを使ったサンプルデータを利用するデモ04

11

Page 141: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

フィールドを利用した接続4

– PrototypeBindSourceのデータをド 書き換えるデ 05コードで書き換えるデモ05

12

Page 142: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

DataSourceと接続1

• LiveBindingはDataSourceにも繋がります

– DataSourceとGridを接続するデモ06

• 注意

– LinkGridToDataSourceのColumnsを弄るときはAutoActivateをFalseに

13

Page 143: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

DataSourceと接続2

• DataSnapを利用すればネットワーク経由の接続もOK

– DataSnap経由でGridを表示するデモ07

DataSnapサーバーDataSnapクライアント DataSnapサーバーDataSnapクライアント

biolife.cds

14

Page 144: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

他の形式のデータと接続1

• アダプタ使えば自作クラスとやりとりもできます

– 自作クラスをTAdapterBindSource経由でリンクさせるデモ08

自作クラス:EmployeeAdaptee.pas

15

p y p p

Page 145: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

EmployeeAdaptee.pasunit EmployeeAdaptee;

interface

typeTEmployee = class(TObject)private

FFirstName: String; iFLastName: String;

FAge: Byte;public

constructor Create(const AFirstName, ALastName: String; const AAge: Byte); overload;property FirstName: String read FFirstName write FFirstName;property LastName: String read FLastName write FLastName;property LastName: String read FLastName write FLastName;property Age: Byte read FAge write FAge;

end;

implementation

constructor TEmployee.Create(const AFirstName, ALastName: String; const AAge: Byte);begininherited Create;

FFirstName := AFirstName;FFirstName := AFirstName;FLastName := ALastName;FAge := AAge;

end;

end.

16

end.

Page 146: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

まとめ

• VCL+DBコンポーネントからFireMonkey + Visual LiveBinding に移行することで

Windows / Mac のクロス環境で実行可能

高品質なグラフィック / UIを利用可能

表現力豊かなコンポーネントを使用可能

コンポーネントの選択肢が広がる(DBコンポーネントだけに限定されない)

タブレットなどでも利用しやすいスタイルを選択可能

将来的にモバイルなど追加のプラットフォームでも利用可能(iOS / A d idが予定され る)利用可能(iOS / Androidが予定されている)

RDBMSだけでなく任意のデータ / オブジェクトを扱える

17

Page 147: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

17Th

Developer Camp

Q & AQ &

18

Page 148: 24th Embarcadero Developer Camp · 1 17Th Developer Camp 「HTML5によるモバイル/タブ レットアプリケーション開発」 エンバカデロ・テクノロジーズ

終わりに

ご静聴いただきありがとうございました

メルマガもご登録ください(※期間限定)↓↓↓

http://www.dreamhive.co.jp/24thDC/

パスワード:24thDC

19