Más contenido relacionado
La actualidad más candente (20)
Similar a Delphi Debut Tokyo #1 - FireMonkey HD の基本 (20)
Delphi Debut Tokyo #1 - FireMonkey HD の基本
- 1. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE1
Happy Creation, Play the Development!
FireMonkeyHD
マルチプラットフォームアプリの作り方
2014/10/18
株式会社シリアルゲームズ細川淳
- 2. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE2
Happy Creation, Play the Development!
アジェンダ
•2WayTools
–言語とデザインの融合
•ちゃんとした言語なのです
–ドラッグ&ドロップ
•親子関係
•コンポーネントとは
•スタイル機構
–マルチプラットフォームとはこういうこと!
•FireUI
•解像度フリー
–縦横比率からもフリー
- 3. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE3
Happy Creation, Play the Development!
2WayTools
- 4. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 4
Happy Creation, Play the Development!
2WayTools
• Delphi ではIDE と言語が完全に連携します。
例えば
ボタンがクリックされた時
OnClick
というイベントが発生します。
オブジェクトインスペクタのOnClick イベントを
ダブルクリックすると…
- 5. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 5
Happy Creation, Play the Development!
2WayTools
自動的に、イベントハンドラが生成されます。
で、ここだけ見ると、IDE がないと開発が成り立たないように見えますが…
- 6. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 6
Happy Creation, Play the Development!
2WayTools
上にスクロールすると、本当はこんな風にクラスが定義されて、そのメソッドだけ抜粋
されていただけなのです!
- 7. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE7
Happy Creation, Play the Development!
2WayTools
•IDE は連携して動作するだけ
•プログラマは全体を把握できます。
でも、IDE でイベントと結び ついたメソッドの情報は
どこにあるの?
目に見えなくない?
把握できなく無い!?
- 8. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 8
Happy Creation, Play the Development!
2WayTools
その情報はここに!!
結びついた情報は、リソースとして保存されています。
※$R はリソースを読み込んで実行ファイルとリンクするためのコンパイラ指令です。
- 9. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE9
Happy Creation, Play the Development!
2WayTools
リソース…
やっぱり目に見えなくない?
把握できてなく無い!?
- 10. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE10
Happy Creation, Play the Development!
•fmx ファイルは中身を見れるし、編集もできるので す。
•というか、そもそもfmx ファイルって何。
- 11. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 11
Happy Creation, Play the Development!
• fmx ファイルとはフォームの情報を示すファイル
– フォームとは、コレ
F12 キーを押すか、エディタの下部にあるタブを押すと
フォーム⇔コード
が切り替わります。
- 12. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE12
Happy Creation, Play the Development!
イベントの情報は
–フォームに載っているコントロールの情報
•例えば、ボタンが押されたら○○を呼ぶ
という情報なのでfmx ファイルに保存されます。
- 13. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 13
Happy Creation, Play the Development!
• fmx ファイルの中身を見るには…
コンテキストメニューの
コレをクリック
- 14. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 14
Happy Creation, Play the Development!
• fmx ファイルをテキストとして見れます!
ほら!!
ここにイベントの情報が!!
- 15. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE15
Happy Creation, Play the Development!
•というわけで、Delphi ではプログラム の全体構造をプログラマが把握できるの です。
–他のGUI 構築ツールとの大きな差です。
•フォームデザイナとコードエディタが 「連携」するこの機能を
•2Way-Toolsといいます。
- 16. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE16
Happy Creation, Play the Development!
Delphi が生成するファイル
•Delphi ではプロジェクトを作ると
–Project1.dpr
•プロジェクトソース
–Unit1.pas
–Unit1.fmx
•フォームとコード
•が自動生成されます。
ペア
- 17. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 17
Happy Creation, Play the Development!
• dpr は普段プログラマが触る必要はありません。
• ですが、当然プログラマが把握できるソースになっています。
dpr の表示
- 18. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE18
Happy Creation, Play the Development!
この章の締め
Delphi ってIDE ありきで話すことが多くて、IDE 無いと成り立たない不完全なおもちゃみたいな物と 思われがちですが、ちゃんとした言語なんです。
–これ判ってない人以外と多い。
ということで、コレを踏まえて次の章です。
- 19. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE19
Happy Creation, Play the Development!
ドラッグ&ドロップ UI 構築について
- 20. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 20
Happy Creation, Play the Development!
• では実際にGUI を組んでみよう!
• コレ、マジ超簡単なんで!!
右下のツールパレットから
コンポーネントを選ぶ!
僕の環境はカスタマイズ(Classic Undocked)
しているので画面上部から選びますが…
- 21. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 21
Happy Creation, Play the Development!
• ドラッグ&ドロップ
• ダブルクリック
• 置きたいフォームをクリック
のどれかをすると、GUI 部品が置けます!
置けた!
- 22. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE22
Happy Creation, Play the Development!
•ここでGUI 部品について
–コントロール
•ユーザーとコミュニケーションを取る物
•TControl クラスから派生
–コンポーネント
•なんか色々ひっくるめて!
–コントロール、非ビジュアルコンポーネントなど
•TComponent クラスから派生
- 23. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE23
Happy Creation, Play the Development!
•TControl
–ボタンやラベルといったユーザーが触ったり、内 容を読んだりする物
•名前空間:FMX.Controls.TControl
–FireMonkey では、TStyledControl から派生した 物を主に使います
•スタイルが適用できるコントロール
–スタイルについては後で
- 24. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE24
Happy Creation, Play the Development!
•TComponent
–Delphi のGUI を構築する最も基本的なクラス
•名前空間:System.Classes.TComponent
–このクラスはVCL でも使われている
•名前空間がSystem から始まる物はVCL / FireMonkey 両方から使われる
•VCL = Visual Component Library
–Windows 専用のGUI ライブラリ
»もう使わなくていいかな…高解像度にも対応してないし
- 25. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 25
Happy Creation, Play the Development!
• GUI 構築に戻って…
– ボタンにエフェクトを追加してみます
– TBlurEffect をドロップ!
ドロップしたのに!
何も起きない!
- 26. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 26
Happy Creation, Play the Development!
• ここで構造ペイン
• 構造ペインは(フォームデザイン時は)GUI
の親子関係を示します。
こいつ
Form1 の子供として
BlurEffect1 とButton1 がある
と言うことを示しています。
- 27. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 27
Happy Creation, Play the Development!
• で、実はエフェクトを掛けるコンポーネント
は「親に働く」のです。
• つまり、さっきの状態だと「フォーム」にか
けちゃってる!
• ので、変更します。
こんな風に、各コンポーネント
をドラッグ&ドロップして親子
関係を変更できます
D&D
- 28. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 28
Happy Creation, Play the Development!
WOW!
ブラーかかったよ!!!
- 29. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE29
Happy Creation, Play the Development!
超簡単ですね!!
ですが、ここで思い出して欲しいのです。
この画面がフォームデザイナだと言うことに
つまり、まだ完成したアプリでは無い…
なのに、エフェクトがかかったりする…
- 30. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE30
Happy Creation, Play the Development!
Delphi フォームデザイナのスゴいところ
フォームデザイン中
コンポーネントは
実際に動作しているッ!!
- 31. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 31
Happy Creation, Play the Development!
• だから、変更はリアルタイムに反映されます。
ココを変えたら、コッチも変わった!
- 32. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE32
Happy Creation, Play the Development!
驚くのは、まだまだこれからやで…!
- 33. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE33
Happy Creation, Play the Development!
スタイル機構 マルチプラットフォームってこういうこと
- 34. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE34
Happy Creation, Play the Development!
•さっきのプログラム実際に動かしてみると…
え!なにこれ!かっこわる!!
Windows 丸出しじゃん!!
マルチプラットフォームなんて
無理じゃん!
- 35. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 35
Happy Creation, Play the Development!
• ここで、スタイルの登場です。
• TStyleBook コンポーネントをフォームに
置いてみるよ!
これ
おもむろに
ダブルクリック!
- 36. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE36
Happy Creation, Play the Development!
•謎の画面開いた…
- 37. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 37
Happy Creation, Play the Development!
はい!これがスタイルエディタです!!
って言われても、なんだか判らない!
とりあえず、スタイルを見せつけます。
読み込みボタンを押して
Dark.style を読むよ!
- 38. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE38
Happy Creation, Play the Development!
•なんか構造ペインがスゴいことに!
- 39. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 39
Happy Creation, Play the Development!
• とりあえず「適用して閉じる」
- 40. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 40
Happy Creation, Play the Development!
なんも変わってなくね!!
まだ、あわてるような時間じゃ無い
- 41. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 41
Happy Creation, Play the Development!
Form のStyleBook プロパティ
にStyleBook を設定する!
すると…
- 42. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 42
Happy Creation, Play the Development!
なんか黒くなった!!
実行してみると…
キター!
先ほどとは違う
黒く引き締まったボディに…!
- 43. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 43
Happy Creation, Play the Development!
こんな感じでスタイルがあるのですが…
スタイルにはモバイルOS 用のスタイルが用意
されているのです…!
iOS だったり
Android だったり
- 44. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE44
Happy Creation, Play the Development!
スタイルは自由に何個でも置けます。
これの意味するところは…
FireUI !
- 45. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 45
Happy Creation, Play the Development!
• FireUI とは
– マルチプラットフォームアプリケーションをデザ
インする上で必須の機能。
フォームデザイナの右
上に注目!
ココをドロップすると
こんな物が!
- 46. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 46
Happy Creation, Play the Development!
デザイナが
Android に!!
- 47. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE47
Happy Creation, Play the Development!
•FireUI とはフォームを継承する仕組み
マスタフォーム
継承フォーム
継承フォーム
ボタン
ボタン
ぼたんや
コンポーネントは全てのフォームに現れるが
プロパティ(位置とか色とか全部)は
別個に設定出来る!
- 48. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 48
Happy Creation, Play the Development!
大きさや
文字が変わって
いる!
- 49. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 49
Happy Creation, Play the Development!
プロパティを別個に設定できるという事は…
プラットフォームに合わせてスタイルを変更できる!
- 50. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE50
Happy Creation, Play the Development!
•FireUI を使うと、Desktop, Tablet とPhone などをいっぺんにデザインできてしまいます。
•しかも、プロパティを変更できるので
–Desktop には、このボタンが欲しい
–Phone には、煩雑だからいらない
と言うこともできます。
•Visible プロパティの変更
- 51. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE51
Happy Creation, Play the Development!
さらにこれらをデザインしやすくする
TMultiView
というコンポーネントがあります。
コレを使うとAndroid のFragmentsと同じ 事ができてしまいます。
が、さすがに…これ以上聞くのは大変だと思う ので、とりあえず割愛
- 52. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE52
Happy Creation, Play the Development!
自由な解像度 Android解像度地獄からの脱出
- 53. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE53
Happy Creation, Play the Development!
•FireMonkey の描画について
–FireMonkey は全て自分でコントロールを描画し ています。
OS
方法
Windows
DirectX
OS X
OpenGL
iOS
OpenGLES
Android
OpenGL ES
- 54. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE54
Happy Creation, Play the Development!
•FireMonkey の描画について
–この結果、画面解像度(画素密度)に応じて描画 密度を変更しています。
–しかも、自動で!!
作ったアプリ
1024 x 768
作ったアプリ
1920 x 1080
今までは、こんな風に解像度が変わっても
アプリの大きさは、そのまま
来たるべき超高解像度時代では
小さくて使いづらくなっちゃう!!
- 55. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE55
Happy Creation, Play the Development!
•FireMonkey の描画について
作ったアプリ
1024 x 768
FireMonkey では
解像度が変わっても
画面比率が変わらない!
作ったアプリ
2560 x 1440
スゴくない!?
- 56. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE56
Happy Creation, Play the Development!
•解像度からの解放
–Android のように多くの解像度があったり
–最近ではiOS も色々な解像度あるし
–Windows でもIGZO 液晶のノートがあったり
–OS X だってRetina ディスプレイの物と、そう じゃないないのがあったり…
FireMonkey を使うと!
こういった悩みから解放される!!
- 57. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 57
Happy Creation, Play the Development!
そうはいっても比率が変わったらダメだよ
ねー?
そうでもない!!
- 58. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE58
Happy Creation, Play the Development!
•FireMonkey のレイアウト戦略
–FireMonkey では
•Align
•Anchors
–というプロパティでコントロールの位置を相対的 に指定できる!
- 59. Copyright © 2013 SERIALGAMES inc. All Rights Reserved. PAGE 59
Happy Creation, Play the Development!
• Align プロパティ
– 左寄せ、右寄せ、センタリング、といった配置を
指定できる
• 指定可能な配置はメチャクチャあります
- 60. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE60
Happy Creation, Play the Development!
•Anchor プロパティ
–Anchor(いかり)を下ろして位置を固定する
–いかりの位置に引っ張られる
- 61. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE61
Happy Creation, Play the Development!
Anchor を左上に設定
大きくなっても左上を維持
Anchor を右下に設定
大きくなっても右下を維持
- 62. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE62
Happy Creation, Play the Development!
Anchor を左上・右下に設定
大きくなっても左上・右下を維持!
- 63. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE63
Happy Creation, Play the Development!
これらのプロパティを上手に使うと比率が変わってもデ ザインが崩壊しません!
さらに、FireMonkey には
TScaledLayout
TGridLayout
TFlowLayout
などの多彩なレイアウトコンポーネントもあります。
これらを使うと自分でAnchor/Align を設定しなくても 自動的に再配置されます。
とはいえ、これも長くなるので初級編では割愛…
- 64. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE64
Happy Creation, Play the Development!
素材についてもFireMonkey ならではのアプ ローチがあります。
TMultiResBitmap多重解像度ビットマップ
TPathSVG などのベクター画像
という2つのコンポーネントがあります。
これらを上手く使う事えば様々な解像度に対応 できます。
- 65. Copyright © 2013 SERIALGAMES inc.All Rights Reserved.
PAGE65
Happy Creation, Play the Development!
というわけで、ざっと
Delphi
FireMonkeyHD
を紹介しました。
メチャクチャ簡単にアプリが作れるってことが、判って 頂けたでしょうか?
そして、FireMonkeyは、3D も操れるのです!
それは、FireMonkey3D といいます!
それはまた別の機会に…
※勉強会では、このあとFireMonkey3D の話がありました