Your SlideShare is downloading. ×
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

DelphiでWin/Macクロスコンパイル

4,577

Published on

プログラミング生放送 第18回@大阪(2012/11/3)のセッション資料です。 …

プログラミング生放送 第18回@大阪(2012/11/3)のセッション資料です。
Delphiの歴史、Delphi XE3でWin/Macクロスコンパイルを行うための入門資料となっています。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,577
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DelphiでWin/Macクロスコンパイル 大場@tworks
  • 2. 自己紹介• おおばさん @tworks• PFUアプリケーションズでSEやってます• 仕事はiOS/Android/WinRT/WPF/SL5/etc... 何でも屋です
  • 3. 今日のゴールVisual Sudioを使っているひとがDelphiを使える!(気分になる)
  • 4. What is Delphi?
  • 5. Delphi• Borland社生まれのRAD開発ツール• 1995年 Version 1.0誕生• 開発会社の変遷 Borland ↓ Imprise(Borlandの社名変更) ↓ 再びBorlandに社名戻す ↓ Borlandが脱開発ツールへ方向転換、 Embarcaderoへ譲渡 ←今ここ
  • 6. Do you knowMicrosoft VisualStudio?
  • 7. Delphi フォーム プロジェ構造 クトマ エディタ ネージャ プロパティ・イ ツールパ ベント レット
  • 8. VisualStudio 2010 プロジェ フォームエ クトマ ネージャツール ディタパレッ ト プロパ ティ・ イベン ト
  • 9. DEMO
  • 10. 共通点多数 Delphi VS2010フォームエディタ ○ ○プロパティ・イベ ○ ○ントプロジェクト ○ ○ツール ○ ○構造 ○
  • 11. アンダース・ヘルスバーグ氏http://monobook.org/wiki/C_Sharp より引用遙か昔、ボーランド社が売っていたTurbo Pascal、Delphiはアンダース・ヘルスバーグによる洗練された設計と圧倒的なポテンシャルを持っていた。にも関わらずサードパーティ製開発ツールであるがため常に二番手の日陰者であった。(中略)ボーランドをリストラされたほぼ全員がマイクロソフトに再就職し、復讐を誓ったという。そしてDelphiとVisual Component Library (VCL)を魔改造したC#と.NET Frameworkが生まれた。(中略)公開当初のC# 1.x系はDelphiの見た目を変えただけの方言という感じで、標準ライブラリもVCLそのものでバグまで完全移植という代物であったが、当時大流行していたJava風に実行ラインタイムを仮想マシン、メソッドポインタをデリゲートなどと各種用語の呼び名も刷新することで「まるで新しいもの」と思わせた細かいマーケティング戦略(いわゆる「リネーム商法」)も功を奏し、Delphi以前を知らない多くの人はコロッと騙された。
  • 12. 開発言語?• Delphi...D言語? いいえちがいます• Object Pascal (Delphi言語と比喩されること も)
  • 13. Object Pascal 文法とか
  • 14. クラス定義type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private 宣言 } public { public 宣言 } end;
  • 15. procedure/begin/endprocedure TForm1.Button1Click(Sender: TObject);begin { 足し算 } ShowMessage(IntToStr(mysum(1, 2)));end;end.• begin - end program のブロックを示します。• begin で開始して end. で終了です。• 「.」はソースの終端を表します。
  • 16. C#と似ている?unit Unit1;interfaceuses System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private 宣言 } public { public 宣言 } end;
  • 17. 置換してみます元 置換unit namespaceuses usingtype class= class(.*) : .*procedure voidbegin {end{;|.} }xxx:yyy yyy xxx
  • 18. C#っぽくなった?namespace Unit1;interfaceusing System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs;class TForm1 : Form1{ TButton Button1 void Button1Click(TObject Sender); private { private 宣言 } public { public 宣言 } }
  • 19. まるでC#!!本日は脳内置換おすすめ。
  • 20. ソース構造基本は以下の3つから構成されます。• プロジェクトファイル(.dpr)• リソースファイル(.dfm など)• ユニット(.pas)
  • 21. プロジェクトファイル(.dpr)program myapp;uses FMX.Forms, アプリケーション Unit1 in Unit1.pas {Form1}; のエントリーポイ{$R *.res} ント。C#のApp.csbegin に近い。 Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;end.
  • 22. リソースファイル(.dfm など) Left = 0 Top = 0 Caption = Form1 ClientHeight = 480 ClientWidth = 640 FormFactor.Width = 1920 FormFactor.Height = 1080 FormFactor.Devices = [dkDesktop] object Button1: TButton DisableFocusEffect = False Height = 22.000000000000000000 Position.X = 288.000000000000000000 Position.Y = 224.000000000000000000 Text = Button1 Width = 80.000000000000000000 OnClick = Button1Click end end
  • 23. ユニット(.pas)unit Unit1;interfaceuses System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { private 宣言 } C#のCodeBehindと public { public 宣言 } end; 同じ位置付け。.dfmvar Form1: TForm1;implementation (フォーム)と対に{$R *.fmx} なる。{$IFDEF MSWINDOWS}function mysum(x: Integer; y: Integer): Integer; stdcall; external mylib.dll;{$ELSE}function mysum(x: Integer; y: Integer): Integer; stdcall; external libmylib.dylib;{$ENDIF}procedure TForm1.Button1Click(Sender: TObject);begin { 足し算 } ShowMessage(IntToStr(mysum(1, 2)));end;end.
  • 24. Why now Delphi?• IDE一緒やし使い慣れたらすごいよね• C#を知ってたらObject Pascalも出来そう• Delphi XE3はWindows/MacOS Xクロスコ ンパイル!1粒で2度おいしいよ! ※クロスコンパイルはProfessonal Edition以上の機能 http://www.embarcadero.com/jp/products/delphi/product-editions
  • 25. クロスコンパイルの前に...こんなアプリが作れます
  • 26. Windows 32bit/64bit
  • 27. VCLフォームアプリ• Windows Formアプリケーション• 32bit/64bitコンパイラ
  • 28. VCL Metropolis UIアプリ• フルスクリーンWindowsアプリケーショ ン タッチイベントに対応
  • 29. DEMO
  • 30. VCL Metropolis UIアプリWindows 8 Storeアプリではない...
  • 31. FireMonkey(FMX)新しい Delphi IDE• フレームワーク Object Pascal• プラットフォーム• HD(2D) 共通ランタイム+GUIフレーム• 3D ワーク FireMonkey Direct 2D/3D OpenGL/Quartz Win32/64 MacOS X
  • 32. FireMonkey HDアプリ TFormTViewPort 3D3Dコントロー HD(2D)コントル ロール
  • 33. FireMonkey 3Dアプリ TForm3D TLayer3D 3Dコントロー ルHD(2D)コント
  • 34. FireMonkeyコントロールの特徴 VCL コンテナコントロール 以外は親子になれない FireMonkey どのコントロールでもMicrosoftのWPF 親子関係になれると似ていますね
  • 35. 本題の FireMonkeyクロスコンパイル
  • 36. 環境構築(ハード)• クロスコンパイルのために2台のPCが必 要 – Windows機 – Delphi実行用 – Mac OS X機 – Mac OS X実行環境用 – 上記が同一ネットワークセグメントに居るこ と ※仮想環境でも可 192.168.1.101 192.168.1.1 192.168.1.102
  • 37. 環境構築(ソフト)• Mac OX X機にXcodeをインストール https://itunes.apple.com/jp/app/xcode/id497799835? mt=12• Mac OS X機にプラットフォームアシスタント (PAServer)をインストール• C:Program Files (x86)EmbarcaderoRAD Studio10.0PAServersetup_paserver.zip• Mac OS X機のPAServerを起動• ~/Applications/Embarcadero/RADPAServer/10.0/paserver
  • 38. プロジェクト設定 • ターゲットプラット フォームに「OS X」を追 加 • 「プロファイル プロパ ティ」のホスト名に、 PAServerを実行している Mac OS X機のIPアドレス を設定
  • 39. DEMO
  • 40. Windows/Mac OS Xの分岐• ダイナミックライブラリ(*.dll / lib*.dylib)の命名がプラットフォームによ り異なる• こういうとき...?
  • 41. DEMO
  • 42. クロス環境でDynamic Libraryの注意• コンパイラ指定でライブラリ指定 {$IFDEF MSWINDOWS} function mysum(x: Integer; y: Integer): Integer; stdcall; external mylib.dll; {$ELSE} function mysum(x: Integer; y: Integer): Integer; stdcall; external libmylib.dylib; {$ENDIF}• Mac OS Xは「配置」を使ってライブラリを Contents/MacOS の下にバンドルしましょう
  • 43. Delphi今後のロードマップ
  • 44. FireMonkey Delphi IDE Object Pascal共通ランタイム+GUIフレーム ワーク FireMonkeyDirect 2D/3D OpenGL/Quartz OpenGL/ES Win32/64iOS/AndroidMacOS X
  • 45. まとめ(所感)• VisualStudioに慣れている人なら、Delphiも 扱える(よね?)• DelphiのFireMonkey(FMX) FMXの攻略=Win/Mac/iOS/Androidを制覇• Object PascalはC#の親戚 こわくないよ PascalどーしてもダメならC++Builderもある よ
  • 46. ご清聴ありがとうございまし た

×