RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS,...

28
エンバカデロ・テクノロジーズ エヴァンジェリスト 高橋智宏 本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。 RAD Studio XE5によるマルチ言語/ マルチデバイス開発の進め方」 C1Delphi/C++チュートリアルセッション

Transcript of RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS,...

Page 1: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

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

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

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

【C1】Delphi/C++チュートリアルセッション

Page 2: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

アジェンダ • RAD Studio XE5の概要

– Delphi or C++ – Intel or ARM – Windows / OS X / iOS / Android

• プロジェクトとは? – FireMonkey HD アプリ – FireMonkey Mobile アプリ

• ユニットとは? • データモジュールとは? • Tips

– 複数フォームの表示・非表示 – Androidの[Back]キー

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

Page 3: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

RAD Studio XE5の概要

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

1

Page 4: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

Delphi XE5 / C++Builder XE5 統合開発環境 – マルチOS, マルチデバイス対応のビジュアルRADツール

• 単一コードベースで Windows, OS X, iOS, Android に対応

– アイデアを素早くカタチに • 多数用意されたコンポーネントをドラッグ&ドロップして効率的にアプリを開発可能 • もちろん、自作コンポーネントの作成&登録も可能!!

– 真のネイティブコード • 中間コードや仮想マシンを必要としない、CPU/GPUの性能を100%活用したハイパフォーマ

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

Win32 Win64 OS X iOS Android

Delphi ■ ■ ■ ■ ■

C++Builder ■ ■ ■ ■

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

統合開発環境 (IDE)

New!

Page 5: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

なぜ、マルチデバイス&OS対応が可能なのか?

• FireMonkey(FM)フレームワーク – CPU / GPU ネイティブ – コンポーネントレイヤーがデバイスの差

異を吸収 – しかしライブラリはネイティブ

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

アプリケーション開発者レベルでは 基本的にデバイスの差は存在しない

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

アプリケーションレイヤーに対し 共通のインターフェイスを提供

Delphi / C++言語

Mac固有

Win固有

FireMonkeyフレームワーク iOS

固有

Windows OS X iOS Android

Android 固有

※ Androidは現在Delphi言語のみでサポート

Page 6: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

Windowsアプリの構造

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

統合開発環境(IDE) (エディタ、デバッガ、フォームデザイナ etc.)

Intel/AMD x86用 Delphi/C++ コンパイラ

Intel/AMD x64用 Delphi/C++ コンパイラ

Delphi/C++ RTL FireMonkey 各種コンポーネント

XP, Vista, 7, 8, 2008, 2012

Win32/Win64 API DirectX

Page 7: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

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

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

Win32アプリ Win64アプリ

リモート

PAServer = リモートデバッガプロセス IDEとWindowsプロセスを 仲介する役目

Win64アプリ Win32アプリ

ローカル

IDE

Page 8: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

OS Xアプリの構造

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

統合開発環境(IDE) (エディタ、デバッガ、フォームデザイナ etc.)

Intel x86用 Delphi/C++ コンパイラ

Delphi/C++ RTL FireMonkey 各種コンポーネント

Lion, Mountain Lion, Mavericks

OS X API / POSIX OpenGL

Page 9: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

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

Macマシン(OS X)用 実行&デバッグ用ブリッジ(PAServer)

OS Xアプリ

リモート

PAServer = リモートデバッガプロセス IDEとOS Xプロセスを 仲介する役目

IDE

Page 10: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

iOSアプリの構造

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

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)

New!

Page 11: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

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

Macマシン(OS X)用 実行&デバッグ用ブリッジ(PAServer)

iOS シミュレータ

iOS実機

iOS 6.0〜7.0

リモート

PAServer = リモートデバッガプロセス IDEとiOSプロセスを 仲介する役目

IDE

USB ケーブル

署名

Page 12: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

Androidの場合

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

Delphi 統合開発環境(IDE) (エディタ、デバッガ、フォームデザイナ etc.)

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

Delphi RTL FireMonkey 各種コンポーネント

Android SDK OpenGL ES

Androidエミュレータ Androidデバイス(2.3.3〜4.4)

Android NDK

Page 13: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

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

Android実機 (2.3.3〜4.4)

Android エミュレータ

(ARM/GPUサポート)

IDE

USB ケーブル

実機側で、USBデバッグのオプションを有効する

実機用のUSBドライバは適宜自分でインストール

署名

Page 14: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

プロジェクトとは?

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

2

Page 15: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

Delphiプロジェクト • FireMonkey HD アプリケーション

– Win32 – Win64 – OS X

• FireMonkey モバイル アプリケーション – iOS シミュレータ – iOS デバイス – Android – Win32

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

ビルド構成 - Debug - Release

ビルド構成 - Debug - Release

プロジェクトマネージャ

Page 16: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

C++プロジェクト • FireMonkey HD アプリケーション

– Win32 – Win64 – OS X

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

– iOS デバイス – Win32

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

ビルド構成 - Debug - Release

ビルド構成 - Debug - Release

New!

プロジェクトマネージャ

Page 17: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

モバイル特有のプロジェクト設定 • iOSの[バージョン情報]

– UIDeviceFamily • iPhone • iPad • iPhone および iPad

• Androidの[バージョン情報] – package

• デフォルトの com.embarcadero.$(ModuleName) を変更 • Androidの[使用する権限]

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

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

Page 18: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

IDEの設定 • 自動保存の設定の[エディタファイル] を ON • 接続プロファイルマネージャ

– OS X : リモートでOS XアプリとiOSアプリを実行 – 32ビットWindows : リモートでWin32アプリをDebug – 64ビットWindows : リモートでWin64アプリをDebug

• プロビジョニング – [iOSデバイス – デバッグ]に指定する証明書の文字列の意味

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

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

• フォームデザイナのデバイスマネージャ 本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。 18

Page 19: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

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

– 拡張子は .groupproj • プロジェクトのビルド順も管理

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

• プロジェクト構成の例 – ProjectGroupA

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

– ProjectGroupB • Delphi iOS(iPad)専用プロジェクト • Delphi Android専用プロジェクト

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

Page 20: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

ユニットとは?

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

3

Page 21: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

Delphi • プロジェクトマネージャで管理するモジュールの単位 • クラスや関数のみの場合

– Unit1.pas

• フォーム(Unit2)の場合 – Unit2.pas + Unit2.fmx

• データモジュール(Unit3)の場合 – Unit3.pas + Unit3.dfm

• プロジェクトオプションの[フォーム]は要注意!!

– メインフォーム : アプリ起動時に最初に表示されるフォーム – 自動生成フォーム : データモジュールも含む – 使用可能フォーム

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

Page 22: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

C++ • プロジェクトマネージャで管理するモジュールの単位 • クラスや関数のみの場合

– Unit1.cpp + Unit1.h

• フォーム(Unit2)の場合 – Unit2.cpp + Unit2.fmx + Unit2.h

• データモジュール(Unit3)の場合 – Unit3.cpp + Unit3.dfm + Unit3.h

• プロジェクトオプションの[フォーム]は要注意!!

– メインフォーム : アプリ起動時に最初に表示されるフォーム – 自動生成フォーム : データモジュールも含む – 使用可能フォーム

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

Page 23: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

データモジュールとは?

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

4

Page 24: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

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

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

• GUIに依存しない機能をカプセル化 – クラスインターフェース等を外部に公開

• 複数プロジェクト間で共有できる – プラットフォーム依存のコードは条件定義などで書き分けても良い

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

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

Win32

OS X

Win64 データ モジュール

iPhone

iPad

Android

Page 25: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

デモ - 複数デバイス対応 -

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

Page 26: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

Tips

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

Page 27: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

複数フォームの場合 • Windows / OS X

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

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

• 最前面に覆い被さる

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

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

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

Page 28: RAD Studio XE5によるマルチ言語/ マルチデバイ …...– マルチOS, マルチデバイス対応のビジュアルRADツール • 単一コードベースで Windows,

Androidの[Back]キーへの対応

28

• 基本は、アプリはバッググラウンドに移動 – キーボードが表示されている場合 – 子フォームが表示されている場合

• 画面内のGUI更新に使えます – 前ページに戻る etc…

• AndroidのFormのOnKeyUpイベント – vkHardwareBack を監視 – 0 を代入して、[Back]キーを自分で処理する