delphi debut tokyo #1 - firemonkey hd の基本

65
Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 1 Happy Creation, Play the Development! FireMonkey HD マルチプラットフォームアプリの作り方 2014/10/18 株式会社シリアルゲームズ 細川 淳

Upload: jun-hosokawa

Post on 22-Apr-2015

463 views

Category:

Software


0 download

DESCRIPTION

Delphi / Appmethod で使えるフレームワーク FireMonkey の使い方と特徴についてです。

TRANSCRIPT

Page 1: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 1

Happy Creation, Play the Development!

FireMonkey HD

マルチプラットフォームアプリの作り方

2014/10/18株式会社シリアルゲームズ 細川 淳

Page 2: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 2

Happy Creation, Play the Development! アジェンダ

• 2WayTools

– 言語とデザインの融合

• ちゃんとした言語なのです

– ドラッグ&ドロップ

• 親子関係

• コンポーネントとは

• スタイル機構

– マルチプラットフォームとはこういうこと!

• FireUI

• 解像度フリー

– 縦横比率からもフリー

Page 3: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 3

Happy Creation, Play the Development!

2WayTools

Page 4: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 4

Happy Creation, Play the Development! 2WayTools

• Delphi では IDE と言語が完全に連携します。例えば

ボタンがクリックされた時

OnClick

というイベントが発生します。オブジェクトインスペクタの OnClick イベントをダブルクリックすると…

Page 5: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 5

Happy Creation, Play the Development! 2WayTools

自動的に、イベントハンドラが生成されます。で、ここだけ見ると、IDE がないと開発が成り立たないように見えますが…

Page 6: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 6

Happy Creation, Play the Development! 2WayTools

上にスクロールすると、本当はこんな風にクラスが定義されて、そのメソッドだけ抜粋されていただけなのです!

Page 7: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 7

Happy Creation, Play the Development! 2WayTools

• IDE は連携して動作するだけ

• プログラマは全体を把握できます。

でも、IDE でイベントと結びついたメソッドの情報はどこにあるの?

目に見えなくない?把握できなく無い!?

Page 8: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 8

Happy Creation, Play the Development! 2WayTools

その情報はここに!!

結びついた情報は、リソースとして保存されています。

※$R はリソースを読み込んで実行ファイルとリンクするためのコンパイラ指令です。

Page 9: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 9

Happy Creation, Play the Development! 2WayTools

リソース…やっぱり目に見えなくない?把握できてなく無い!?

Page 10: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 10

Happy Creation, Play the Development!

• fmx ファイルは中身を見れるし、編集もできるのです。

• というか、そもそも fmx ファイルって何。

Page 11: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 11

Happy Creation, Play the Development!

• fmx ファイルとはフォームの情報を示すファイル

– フォームとは、コレ

F12 キーを押すか、エディタの下部にあるタブを押すと

フォーム⇔コード

が切り替わります。

Page 12: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 12

Happy Creation, Play the Development!

イベントの情報は

– フォームに載っているコントロールの情報

• 例えば、ボタンが押されたら○○を呼ぶ

という情報なので fmx ファイルに保存されます。

Page 13: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 13

Happy Creation, Play the Development!

• fmx ファイルの中身を見るには…

コンテキストメニューのコレをクリック

Page 14: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 14

Happy Creation, Play the Development!

• fmx ファイルをテキストとして見れます!

ほら!!ここにイベントの情報が!!

Page 15: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 15

Happy Creation, Play the Development!

• というわけで、Delphi ではプログラムの全体構造をプログラマが把握できるのです。– 他の GUI 構築ツールとの大きな差です。

• フォームデザイナとコードエディタが「連携」するこの機能を

• 2Way-Tools といいます。

Page 16: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 16

Happy Creation, Play the Development! Delphi が生成するファイル

• Delphi ではプロジェクトを作ると

– Project1.dpr

• プロジェクトソース

– Unit1.pas

– Unit1.fmx

• フォームとコード

• が自動生成されます。

ペア

Page 17: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 17

Happy Creation, Play the Development!

• dpr は普段プログラマが触る必要はありません。

• ですが、当然プログラマが把握できるソースになっています。

dpr の表示

Page 18: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 18

Happy Creation, Play the Development!

この章の締め

Delphi って IDE ありきで話すことが多くて、IDE 無いと成り立たない不完全なおもちゃみたいな物と思われがちですが、ちゃんとした言語なんです。– これ判ってない人以外と多い。

ということで、コレを踏まえて次の章です。

Page 19: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 19

Happy Creation, Play the Development!

ドラッグ&ドロップUI 構築について

Page 20: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 20

Happy Creation, Play the Development!

• では実際に GUI を組んでみよう!

• コレ、マジ超簡単なんで!!右下のツールパレットからコンポーネントを選ぶ!

僕の環境はカスタマイズ(Classic Undocked)しているので画面上部から選びますが…

Page 21: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 21

Happy Creation, Play the Development!

• ドラッグ&ドロップ

• ダブルクリック

• 置きたいフォームをクリック

のどれかをすると、GUI 部品が置けます!

置けた!

Page 22: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 22

Happy Creation, Play the Development!

• ここで GUI 部品について

– コントロール

• ユーザーとコミュニケーションを取る物

• TControl クラスから派生

– コンポーネント

• なんか色々ひっくるめて!

– コントロール、非ビジュアルコンポーネントなど

• TComponent クラスから派生

Page 23: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 23

Happy Creation, Play the Development!

• TControl

– ボタンやラベルといったユーザーが触ったり、内容を読んだりする物

• 名前空間:FMX.Controls.TControl

– FireMonkey では、TStyledControl から派生した物を主に使います

• スタイルが適用できるコントロール

– スタイルについては後で

Page 24: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 24

Happy Creation, Play the Development!

• TComponent

– Delphi の GUI を構築する最も基本的なクラス

• 名前空間:System.Classes.TComponent

– このクラスは VCL でも使われている

• 名前空間が System から始まる物は VCL / FireMonkey 両方から使われる

• VCL = Visual Component Library

– Windows 専用の GUI ライブラリ

» もう使わなくていいかな…高解像度にも対応してないし

Page 25: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 25

Happy Creation, Play the Development!

• GUI 構築に戻って…

– ボタンにエフェクトを追加してみます

– TBlurEffect をドロップ!

ドロップしたのに!何も起きない!

Page 26: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 26

Happy Creation, Play the Development!

• ここで構造ペイン

• 構造ペインは(フォームデザイン時は)GUI の親子関係を示します。

こいつ

Form1 の子供としてBlurEffect1 と Button1 があると言うことを示しています。

Page 27: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 27

Happy Creation, Play the Development!

• で、実はエフェクトを掛けるコンポーネントは「親に働く」のです。

• つまり、さっきの状態だと「フォーム」にかけちゃってる!

• ので、変更します。こんな風に、各コンポーネントをドラッグ&ドロップして親子関係を変更できます

D&D

Page 28: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 28

Happy Creation, Play the Development!

WOW!

ブラーかかったよ!!!

Page 29: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 29

Happy Creation, Play the Development!

超簡単ですね!!

ですが、ここで思い出して欲しいのです。

この画面がフォームデザイナだと言うことに

つまり、まだ完成したアプリでは無い…

なのに、エフェクトがかかったりする…

Page 30: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 30

Happy Creation, Play the Development!

Delphi フォームデザイナのスゴいところ

フォームデザイン中

コンポーネントは

実際に動作しているッ!!

Page 31: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 31

Happy Creation, Play the Development!

• だから、変更はリアルタイムに反映されます。

ココを変えたら、コッチも変わった!

Page 32: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 32

Happy Creation, Play the Development!

驚くのは、まだまだこれからやで…!

Page 33: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 33

Happy Creation, Play the Development!

スタイル機構マルチプラットフォームってこういうこと

Page 34: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 34

Happy Creation, Play the Development!

• さっきのプログラム実際に動かしてみると…

え!なにこれ!かっこわる!!Windows 丸出しじゃん!!マルチプラットフォームなんて無理じゃん!

Page 35: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 35

Happy Creation, Play the Development!

• ここで、スタイルの登場です。

• TStyleBook コンポーネントをフォームに置いてみるよ!

これ

おもむろにダブルクリック!

Page 36: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 36

Happy Creation, Play the Development!

• 謎の画面開いた…

Page 37: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 37

Happy Creation, Play the Development!

はい!これがスタイルエディタです!!

って言われても、なんだか判らない!

とりあえず、スタイルを見せつけます。

読み込みボタンを押してDark.style を読むよ!

Page 38: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 38

Happy Creation, Play the Development!

• なんか構造ペインがスゴいことに!

Page 39: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 39

Happy Creation, Play the Development!

• とりあえず「適用して閉じる」

Page 40: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 40

Happy Creation, Play the Development!

なんも変わってなくね!!

まだ、あわてるような時間じゃ無い

Page 41: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 41

Happy Creation, Play the Development!

Form の StyleBook プロパティに StyleBook を設定する!

すると…

Page 42: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 42

Happy Creation, Play the Development!

なんか黒くなった!!実行してみると…

キター!

先ほどとは違う黒く引き締まったボディに…!

Page 43: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 43

Happy Creation, Play the Development!

こんな感じでスタイルがあるのですが…

スタイルにはモバイル OS 用のスタイルが用意されているのです…!

iOS だったり

Android だったり

Page 44: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 44

Happy Creation, Play the Development!

スタイルは自由に何個でも置けます。

これの意味するところは…

FireUI !

Page 45: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 45

Happy Creation, Play the Development!

• FireUI とは

– マルチプラットフォームアプリケーションをデザインする上で必須の機能。

フォームデザイナの右上に注目!ココをドロップすると

こんな物が!

Page 46: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 46

Happy Creation, Play the Development!

デザイナがAndroid に!!

Page 47: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 47

Happy Creation, Play the Development!

• FireUI とはフォームを継承する仕組み

マスタフォーム

継承フォーム

継承フォーム

ボタン

ボタン

ぼたんや コンポーネントは全てのフォームに現れるがプロパティ(位置とか色とか全部)は別個に設定出来る!

Page 48: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 48

Happy Creation, Play the Development!

大きさや文字が変わっている!

Page 49: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 49

Happy Creation, Play the Development!

プロパティを別個に設定できるという事は…

プラットフォームに合わせてスタイルを変更できる!

Page 50: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 50

Happy Creation, Play the Development!

• FireUI を使うと、Desktop, Tablet と Phone などをいっぺんにデザインできてしまいます。

• しかも、プロパティを変更できるので

– Desktop には、このボタンが欲しい

– Phone には、煩雑だからいらない

と言うこともできます。

• Visible プロパティの変更

Page 51: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 51

Happy Creation, Play the Development!

さらにこれらをデザインしやすくする

TMultiView

というコンポーネントがあります。

コレを使うと Android の Fragments と同じ事ができてしまいます。

が、さすがに…これ以上聞くのは大変だと思うので、とりあえず割愛

Page 52: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 52

Happy Creation, Play the Development!

自由な解像度Android解像度地獄からの脱出

Page 53: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 53

Happy Creation, Play the Development!

• FireMonkey の描画について

– FireMonkey は全て自分でコントロールを描画しています。

OS 方法

Windows DirectX

OS X OpenGL

iOS OpenGL ES

Android OpenGL ES

Page 54: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 54

Happy Creation, Play the Development!

• FireMonkey の描画について

– この結果、画面解像度(画素密度)に応じて描画密度を変更しています。

– しかも、自動で!!

作ったアプリ

1024 x 768

作ったアプリ

1920 x 1080

今までは、こんな風に解像度が変わってもアプリの大きさは、そのまま来たるべき超高解像度時代では小さくて使いづらくなっちゃう!!

Page 55: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 55

Happy Creation, Play the Development!

• FireMonkey の描画について

作ったアプリ

1024 x 768

FireMonkey では解像度が変わっても画面比率が変わらない!

作ったアプリ

2560 x 1440

スゴくない!?

Page 56: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 56

Happy Creation, Play the Development!

• 解像度からの解放

– Android のように多くの解像度があったり

– 最近では iOS も色々な解像度あるし

– Windows でも IGZO 液晶のノートがあったり

– OS X だって Retina ディスプレイの物と、そうじゃないないのがあったり…

FireMonkey を使うと!

こういった悩みから解放される!!

Page 57: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 57

Happy Creation, Play the Development!

そうはいっても比率が変わったらダメだよねー?

そうでもない!!

Page 58: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 58

Happy Creation, Play the Development!

• FireMonkey のレイアウト戦略

– FireMonkey では

•Align

•Anchors

– というプロパティでコントロールの位置を相対的に指定できる!

Page 59: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 59

Happy Creation, Play the Development!

• Align プロパティ

– 左寄せ、右寄せ、センタリング、といった配置を指定できる

• 指定可能な配置はメチャクチャあります

Page 60: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 60

Happy Creation, Play the Development!

• Anchor プロパティ

– Anchor(いかり)を下ろして位置を固定する

– いかりの位置に引っ張られる

Page 61: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 61

Happy Creation, Play the Development!

Anchor を左上に設定 大きくなっても左上を維持

Anchor を右下に設定 大きくなっても右下を維持

Page 62: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 62

Happy Creation, Play the Development!

Anchor を左上・右下に設定 大きくなっても左上・右下を維持!

Page 63: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 63

Happy Creation, Play the Development!

これらのプロパティを上手に使うと比率が変わってもデザインが崩壊しません!

さらに、FireMonkey には

TScaledLayout

TGridLayout

TFlowLayout

などの多彩なレイアウトコンポーネントもあります。

これらを使うと自分でAnchor/Align を設定しなくても自動的に再配置されます。

とはいえ、これも長くなるので初級編では割愛…

Page 64: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 64

Happy Creation, Play the Development!

素材についても FireMonkey ならではのアプローチがあります。

TMultiResBitmap 多重解像度ビットマップ

TPath SVG などのベクター画像

という2つのコンポーネントがあります。

これらを上手く使う事えば様々な解像度に対応できます。

Page 65: Delphi Debut Tokyo #1 - FireMonkey HD の基本

Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 65

Happy Creation, Play the Development!

というわけで、ざっと

DelphiFireMonkey HD

を紹介しました。メチャクチャ簡単にアプリが作れるってことが、判って頂けたでしょうか?

そして、FireMonkey は、3D も操れるのです!それは、FireMonkey 3D といいます!

それはまた別の機会に…※勉強会では、このあと FireMonkey 3D の話がありました