17Th
Developer Camp

Delphi/C++Builderテクニカルセッション「FireMonkey道場」

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

アジェンダ• FireMonkey 概説• FireMonkey HD– 三目並べ

• FireMonkey 3D– 3Dゲーム!?

• データベースクライアント• Webサービスクライアント• FireMonkey向けカスタムコンポーネント• WindowsとMacOS Xの違い
• FireMonkey iOSアプリの開発• VCLからFireMonkeyへの移行• Q&A2

次世代のアプリケーションプラットフォームGPU

IDE + ビジュアルデザイナ
Delphi言語

C++言語

共通ランタイム + GUIフレームワーク「FireMonkey」

Direct 2D/3D

OpenGL, Quartz

OpenGL ES

Win32 / Win64

Mac OS X

iOS3

17Th
Developer Camp

FireMonkey HDx4

FireMonkey 2D/HD• 三目並べ– iTTT - TicTacToe for iOS• http://itunes.apple.com/jp/app/ittt-tictactoe/id493889941• Alignプロパティ• Tagプロパティ• AnimateFloatメソッド• OnResizeイベント

5

17Th
Developer CampFire Monkey 3Dx6

3Dゲーム!?

7

作り方• TLayer3D/TViewport3D/TCamera/TLight– 目線を移動• TCube/TPlane/TImage3D/TProxy– テクスチャ用JPEG画像(256x256,512x512)• TFloatAnimation– StartValue/StopValue/PropertyName/Duraion/In
terpolation/Delay• 課題– 3D向け物理エンジン– サウンド
– 最適化

8

17Th
Developer Camp

データベースクライアント

x9

InterBase eXpress, dbExpress• IBExpress– InterBase XE• dbExpress– MySQL 5.1–…

• LiveBindings• 配置マネージャ

10

17Th
Developer Camp

Webサービスクライアント

x11

クライアント & サーバー
• SOAPサーバー– Win32(またはWin64)のDelphi(またはC++Builder)で作成– TClientDataSetを返すメソッドをクライアントに公開• ただし、TClientDataSetそのものではなく、XML化した文字列(string)を採用• Webサービスクライアント– FireMonkeyアプリケーション• Delphi または C++Builder で作成– WSDLからSOAPクライアント用プロキシを生成– サーバーから取得したTClientDataSetをTStringGridに表示

12

SOAPサーバー•[ファイル]-[新規作成]-[その他]-[Delphiプロジェクト]-[Webサービス]-[SOAP
サーバーアプリケーション]– サンプルのSOPAサーバーインターフェースを作成• サービス名は Employee•[ファイル]-[新規作成]-[その他]-[Delphiプロジェクト]-[Delphiファイル]-[データモジュール]– TClientDataSet を配置– [項目の設定]でフィールドを追加• TIntegerField– FieldName は id

• TWideStringField– FieldName は fullname

13クライアントに公開するメソッド• function getEmployeeDataSetXML: string; stdcall;– interface と 実装class を編集• [サービス名]Intf.pas• [サービス名]Impl.pas• TClientDataSetのXMLDataプロパティでXML表現を取得

14

Webサービスクライアント•[ファイル]-[新規作成]-[その他]-[Delphiプロジェクト]-[Webサービス][WSDLインポータ]– FireMonkeyフォームからクライアントプロキシユニットを参照•

FireMonkeyフォーム上に、以下を配置– TButton– TClientDataSet– TStringGrid• [項目エディタ]で項目(TStringColumn)の追加– Id– fullname

15

Webサービスクライアント•

TClientDataSetのXMLDataプロパティにXML表現をセットするだけ

16

17Th
Developer Camp

FireMonkey向けカスタムコンポーネントx17

FireMonkey向けカスタムコンポーネント• オンラインヘルプ– http://docwiki.embarcadero.com/RADStudio/ja/FireMon
key_%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88_%E3%82%AC%E3%82%A4%E3%83%89• 一般的なパターン– FMX.Controls.TPanelを拡張• 独自スタイルを定義– FMX.Types.TStyledControlを拡張• .styleファイル• .rcファイル• RegisterFmxClasses関数
18

17Th
Developer Camp

WindowsとMacOS Xの違い

x19

WindowsとMacOS Xの違い
• メインメニュー– TForm.ClientHeight– Windows.GetSystemMetrics(SM_CYMENU)• アプリの終了時の作法– MacOS Xのアプリ終了メニューとdelegate• カレントディレクトリ
• ￥文字20

17Th
Developer Camp

FireMonkey iOSアプリの開発

x21

FireMonkey iOSアプリの開発• Windows– dpr2xcode.exe– 外部のユニット• MacOS X + Xcode– 組み合わせ• iOSシミュレータ– 文字化けへの対処• iOS実機でのテスト– 転送して実行・デバッグする手順
22

iOSシミュレータ上で実行• 予め、ターミナルからiPhoneシミュレータのプロセスをUTF-8で起動しておく(日本語などの文字化け対策)– QC#101418• http://qc.embarcadero.com/wc/qcmain.aspx?d=101418$ export LANG=ja_JP.UTF-8$ cd /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone¥
Simulator.app/Contents/MacOS$ ./iPhone¥ Simulator• Xcodeでビルドしてアプリを実行– 既に起動しているiOSシミュレータプロセスが利用される

23

17Th
Developer CampVCLからFireMonkeyへの移行

x24

TCanvasへの描画• OnPaintイベントを使いましょう25

Mida - Converter Applications for FireMonkey• http://www.midaconverter.com/– Delphi XE2, C++Builder XE2– 82.00ユーロ

26

Mida - Converter Applications for FireMonkey

27

17Th
Developer Camp

Q&A28