• 検索結果がありません。

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

N/A
N/A
Protected

Academic year: 2021

シェア "「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」"

Copied!
28
0
0

読み込み中.... (全文を見る)

全文

(1)

エンバカデロ・テクノロジーズ

エヴァンジェリスト 高橋智宏

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

RAD Studio XE5によるマルチ言語/

マルチデバイス開発の進め方」

(2)

アジェンダ

RAD Studio XE5の概要

Delphi or C++

Intel or ARM

Windows / OS X / iOS / Android

• プロジェクトとは

?

FireMonkey HD アプリ

FireMonkey Mobile アプリ

• ユニットとは

?

• データモジュールとは

?

Tips

– 複数フォームの表示・非表示

Androidの[Back]キー

(3)

RAD Studio XE5の概要

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

3

(4)

Delphi XE5 / C++Builder XE5

統合開発環境

– マルチOS, マルチデバイス対応のビジュアルRADツール

単一コードベースで

Windows, OS X, iOS, Android に対応

– アイデアを素早くカタチに

多数用意されたコンポーネントをドラッグ&ドロップして効率的にアプリを開発可能

もちろん、自作コンポーネントの作成

&登録も可能!!

– 真のネイティブコード

中間コードや仮想マシンを必要としない、

CPU/GPUの性能を100%活用したハイパフォーマ

ンスなネイティブアプリを生成

Win32

Win64

OS X

iOS

Android

Delphi

Delphi XE5 / C++Builder XE5 のマルチプラットフォーム対応状況:

(5)

なぜ、マルチデバイス

&OS対応が可能なのか?

FireMonkey(FM)フレームワーク

CPU / GPU ネイティブ

– コンポーネントレイヤーがデバイスの差

異を吸収

– しかしライブラリはネイティブ

OSごとの差異はフレームワーク内で吸収

アプリケーション開発者レベルでは

基本的にデバイスの差は存在しない

アプリケーションコードはネイティブ

アプリケーションレイヤーに対し

共通のインターフェイスを提供

Delphi / C++言語

Mac 固有 Win 固有

FireMonkeyフレームワーク

iOS 固有

Windows

OS X

iOS

Android

Android 固有

(6)

Windowsアプリの構造

統合開発環境

(IDE)

(エディタ、デバッガ、フォームデザイナ etc.)

Intel/AMD x86用

Delphi/C++ コンパイラ

Delphi/C++ コンパイラ

Intel/AMD x64用

Delphi/C++ RTL

FireMonkey

各種コンポーネント

XP, Vista, 7, 8, 2008, 2012

(7)

Windowsアプリ実行&デバッグの仕組み

Windows用

実行

&デバッグ用ブリッジ(PAServer)

Win32アプリ

Win64アプリ

リモート

PAServer = リモートデバッガプロセス

IDEとWindowsプロセスを

仲介する役目

Win64アプリ

Win32アプリ

ローカル

IDE

(8)

OS Xアプリの構造

統合開発環境

(IDE)

(エディタ、デバッガ、フォームデザイナ etc.)

Intel x86用

Delphi/C++ コンパイラ

Delphi/C++ RTL

FireMonkey

各種コンポーネント

Lion, Mountain Lion, Mavericks

(9)

OS Xアプリ実行&デバッグの仕組み

Macマシン(OS X)用

実行

&デバッグ用ブリッジ(PAServer)

OS Xアプリ

リモート

PAServer = リモートデバッガプロセス

IDEとOS Xプロセスを

仲介する役目

IDE

(10)

iOSアプリの構造

Delphi 統合開発環境(IDE)

(エディタ、デバッガ、フォームデザイナ etc.)

iOSシミュレータ(Intel x86)用

Delphi コンパイラ

iOSデバイス(ARMv7)用

Delphi/

C++

コンパイラ

Delphi/C++ RTL

FireMonkey

各種コンポーネント

iOS API / POSIX

OpenGL ES

iOSシミュレータ(6.x,7.0)

iOSデバイス(iOS 6.x,7.0)

(11)

iOSアプリ実行&デバッグの仕組み

Macマシン(OS X)用

実行

&デバッグ用ブリッジ(PAServer)

iOS

シミュレータ

iOS実機

iOS 6.0〜7.0

リモート

PAServer = リモートデバッガプロセス

IDEとiOSプロセスを

仲介する役目

IDE

USB

ケーブル

署名

(12)

Androidの場合

Delphi 統合開発環境(IDE)

(エディタ、デバッガ、フォームデザイナ etc.)

Android(ARMv7 + NEON)用 Delphi コンパイラ

Delphi RTL

FireMonkey

各種コンポーネント

Android SDK

OpenGL ES

Androidエミュレータ

Androidデバイス(2.3.3〜4.4)

(13)

Androidアプリ実行&デバッグの仕組み

Android実機

(2.3.3〜4.4)

Android

エミュレータ

(ARM/GPUサポート)

IDE

USB

ケーブル

実機側で、

USBデバッグ

のオプションを有効する

実機用の

USBドライバは

適宜自分でインストール

署名

(14)

プロジェクトとは

?

(15)

Delphiプロジェクト

FireMonkey HD アプリケーション

Win32

Win64

OS X

FireMonkey モバイル アプリケーション

iOS シミュレータ

iOS デバイス

Android

Win32

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

15

ビルド構成

- Debug

- Release

ビルド構成

- Debug

- Release

プロジェクトマネージャ

(16)

C++プロジェクト

FireMonkey HD アプリケーション

Win32

Win64

OS X

FireMonkey モバイル アプリケーション

iOS デバイス

Win32

ビルド構成

- Debug

- Release

ビルド構成

- Debug

- Release

New!

プロジェクトマネージャ

(17)

モバイル特有のプロジェクト設定

iOSの[バージョン情報]

UIDeviceFamily

iPhone

iPad

iPhone および iPad

Androidの[バージョン情報]

package

• デフォルトの

com.embarcadero.$(ModuleName) を変更

Androidの[使用する権限]

– アプリの利用する機能により適宜有効に

!!

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

17

(18)

IDEの設定

• 自動保存の設定の

[エディタファイル] を ON

• 接続プロファイルマネージャ

OS X : リモートでOS XアプリとiOSアプリを実行

32ビットWindows : リモートでWin32アプリをDebug

64ビットWindows : リモートでWin64アプリをDebug

• プロビジョニング

[iOSデバイス – デバッグ]に指定する証明書の文字列の意味

• デフォルトは iPhone Developer だが…

SDKマネージャ

Androidは、ローカルのWindowsマシン内のSDK/NDK/JDKを利用

(19)

プロジェクトグループ

• 複数のプロジェクトをまとめるプロジェクトのこと

– 拡張子は

.groupproj

• プロジェクトのビルド順も管理

– プロジェクトマネージャ内で上から下の順にビルド

• プロジェクト構成の例

ProjectGroupA

Delphi iOS(iPhone&iPad) & Android両用プロジェクト

Delphi Win32/Win64両用プロジェクト

ProjectGroupB

Delphi iOS(iPad)専用プロジェクト

Delphi Android専用プロジェクト

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

19

(20)

ユニットとは

?

(21)

Delphi

• プロジェクトマネージャで管理するモジュールの単位

• クラスや関数のみの場合

Unit1.pas

• フォーム

(Unit2)の場合

Unit2.pas + Unit2.fmx

• データモジュール

(Unit3)の場合

Unit3.pas + Unit3.dfm

• プロジェクトオプションの

[フォーム]は要注意!!

– メインフォーム : アプリ起動時に最初に表示されるフォーム

– 自動生成フォーム : データモジュールも含む

– 使用可能フォーム

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

21

(22)

C++

• プロジェクトマネージャで管理するモジュールの単位

• クラスや関数のみの場合

Unit1.cpp + Unit1.h

• フォーム

(Unit2)の場合

Unit2.cpp + Unit2.fmx + Unit2.h

• データモジュール

(Unit3)の場合

Unit3.cpp + Unit3.dfm + Unit3.h

• プロジェクトオプションの

[フォーム]は要注意!!

– メインフォーム : アプリ起動時に最初に表示されるフォーム

– 自動生成フォーム : データモジュールも含む

(23)

データモジュールとは

?

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

23

(24)

データモジュール

• フォームデザイナ内で非ビジュアルコンポーネントを

D&D

GUIコンポーネントは配置できません

GUIに依存しない機能をカプセル化

– クラスインターフェース等を外部に公開

• 複数プロジェクト間で共有できる

– プラットフォーム依存のコードは条件定義などで書き分けても良い

Delphi言語、C++言語のどちらでも使える

Win32

Win64

データ

モジュール

iPhone

iPad

(25)

デモ

- 複数デバイス対応 -

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

25

(26)
(27)

複数フォームの場合

Windows / OS X

Show() : 子ウィンドウをモードレス表示

ShowModal() : 子ウィンドウをモーダル表示

iOS / Android

Show() : フルスクリーンのフォームをモードレス表示

• 最前面に覆い被さる

ShowModal(無名メソッド)

• 同じくモードレス表示だが閉じると無名メソッドが呼ばれる

http://blog.marcocantu.com/blog/xe5_anonymous_showmodal_android.html

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

27

(28)

Androidの[Back]キーへの対応

• 基本は、アプリはバッググラウンドに移動

– キーボードが表示されている場合

– 子フォームが表示されている場合

• 画面内の

GUI更新に使えます

– 前ページに戻る etc…

AndroidのFormのOnKeyUpイベント

vkHardwareBack を監視

0 を代入して、[Back]キーを自分で処理する

参照

関連したドキュメント

メモ  : 権利の詳細な管理は、 BlackBerry WorkspacesEnterprise ES モード BlackBerry Workspaces およ. び Enterprise ES ( 制限付きフルアクセス )

サーバー API 複雑化 iOS&Android 間で複雑な API

Cisco IOS ® XE ソフトウェアを搭載する Cisco ® 1000 シリーズ

従来から iOS(iPhone など)はアプリケーションでの電話 API(Application Program

3.仕事(業務量)の繁閑に対応するため

(今後の展望 1) 苦情解決の仕組みの活用.

ALPS 処理水の海洋放出に 必要な設備等の設計及び運 用は、関係者の方々のご意 見等を伺いつつ、政府方針

と発話行為(バロール)の関係が,社会構造(システム)とその実践(行