OS X アプリケーション開発
RAD Studio を使用して OS X アプリケーションを作成でき、Mac を iOS アプリケーション用に必要な中間プラットフォームとして使用することができます。
ハードウェア面では、開発用 PC の他に、(RAD Studio がインストールされている)開発用コンピュータにローカル エリア ネットワーク(LAN)などで接続された Mac が必要です。開発用 PC と Mac 両方のシステム要件の一覧については、「FireMonkey プラットフォームに必要な準備」を参照してください。「Mac と PC を連携させる」も参照してください。
OS X 用 Delphi コンパイラは、DCCOSX です。
OS X 用 C++ コンパイラは、BCCOSX です。 OS X 用 C++ リンカは、XLINK です。
OS X 用の開発環境のセットアップ
- 物理接続: RAD Studio がターゲットの Mac に接続できることを確認します。
- [接続プロファイル マネージャ]パネルで、[接続テスト]をクリックします。
- ただし、OS X アプリケーションに接続プロファイルが割り当てられていないときに、接続プロファイルが必要な操作を行うと、IDE から次のメッセージが表示されます。
[この操作には接続プロファイルが必要ですが、まだ割り当てられていません。
プロファイルを今すぐ割り当てまたは作成しますか?]
- 続いて、接続プロファイルを作成するために必要な各手順が IDE により示されます。[プラットフォーム プロパティ]ダイアログで、既存のプロファイルをターゲット プラットフォームに割り当てたり、あるいは、[新規追加...]を選択して接続プロファイルを新規作成し、ターゲット プラットフォームに割り当てることができます。
- プラットフォーム アシスタント: Mac 上でプラットフォーム アシスタントをインストールし、実行します。
- ターゲット プラットフォーム: IDE でターゲット プラットフォームを設定します。Delphi マルチデバイス アプリケーションまたは C++Builder マルチデバイス アプリケーションを作成すると、RAD Studio により、デフォルトのターゲット プラットフォームは Win32 に設定されます。
- ターゲット プラットフォームを OS X に変更するには:
- [プロジェクト マネージャ]で[ターゲット プラットフォーム]ノードを右クリックします。
- [プラットフォームの追加...]をクリックし、[OS X]を選択します。
- アプリケーションで VCL を使用している場合、[OS X]オプションは利用できません(VCL は OS X で未サポート)。
- 接続プロファイル: IDE で接続プロファイルを作成し、割り当てます(接続プロファイルは、ターゲット マシンへの接続の特性を記述した一連の設定です。「開発用 PC で接続プロファイルを作成およびテストする」を参照)。
- C++ 開発の場合:
- Xcode および Xcode コマンド ライン ツール:
- C++ OS X アプリケーションの場合には、Mac に Xcode をインストールする必要があります。アプリケーションを Mac App Store に配置するためには、Xcode コマンド ライン ツールをインストールする必要もあります。
- SDK:
- C++ の場合には、一連のファイル(ヘッダーおよびライブラリ)から構成される SDK を追加してください。これは、プラットフォーム アシスタント サーバーが稼働しているマシンから開発用システムに取り出され、コンパイルおよびリンクに使用されます。 「OS X または iOS デバイス用 SDK の追加」を参照してください。
- Xcode および Xcode コマンド ライン ツール:
アプリケーションの開発
Mac アプリケーションでのフレームワークの使用
このセクションでは、マルチデバイス アプリケーション開発のうち、OS X ターゲット プラットフォームに特有の部分について説明します。 一般的なマルチデバイス開発のドキュメントは、「マルチデバイス アプリケーションの開発」を参照してください。
RTL
基本機能を備えた一部の RTL ユニット(System.pas や System.SysUtils.pas など)は Mac と Windows で共通です。
多くの RTL ユニットは Mac 専用です(「Mac Objective-C フレームワーク」を参照)。これらのユニットは先頭に Macapi または Posix が付いたユニット スコープです。
「OS X C RTL」も参照してください。
FireMonkey
FireMonkey フレームワークは、OS X ターゲット プラットフォームで使用するには理想的であり、Win32 と Win64 の両方でもサポートされています。 「FireMonkey プラットフォームの要件」を参照してください。
VCL(Mac では使用不可)
VCL は Windows(32 ビット版および 64 ビット版)でしか使用できません。
Mac C RTL(C/C++ 開発用)
BCCOSX は、複数の場所にあるコンパイラ ヘッダー ファイルを使用します。
- インクルード パスについては、「BCCOSX - OS X 用 C++ コンパイラ」の「インクルード パス(
-I、--sysinc
)」を参照してください。 - システム ルート ディレクトリについては、「BCCOSX - OS X 用 C++ コンパイラ」の「システム ルート(
--sysroot
)」を参照してください。
C RTL は次の 2 つの場所に分散配置されます。
インクルード パスの種類 |
パス |
説明 |
---|---|---|
標準 |
|
このディレクトリには、RAD Studio 付属の C/C++ RTL ヘッダー ファイル(.h)が含まれます。 これらのファイルの一部には、 |
リモート |
|
このディレクトリには、Windows にキャッシュされた C/C++ RTL の OS X ヘッダー ファイルが含まれます。 これが、SDK ルート ディレクトリになります。 コンパイル用に、RAD Studio では、Mac 上の |
多くの OS X C RTL は標準であり、非標準文字はサポートされていません。
Mac C フレームワーク(C/C++ 開発用)
OS X フレームワークには多様で便利な関数が用意されており、プラットフォーム固有のソフトウェアを記述できます。 一部のフレームワークは C ベースで、RAD Studio C++Builder プロジェクトに含めることができます。 Objective-C ベースのフレームワークもあり(Foundation など)、これは Delphi インターフェイスを通じてのみ使用できます(以下のセクションを参照)。
Mac C フレームワークを RAD Studio プロジェクトに含めるには、使用する SDK を編集する必要があります。 [SDK マネージャ]ページを開き、右側にある ([新しいパス項目の追加])ボタンをクリックします。 [リモート パス項目の追加]または[リモート パス項目の編集]ダイアログ ボックスで、次の項目を指定します。
- フレームワーク リモート パス(例:
/System/Library/Frameworks
) - フレームワーク名(例: CoreFoundation)
[SDK マネージャ]ページに戻り、[ローカル ファイル キャッシュの更新]をクリックして SDK ローカル ファイルを更新します。
BCCOSX でのフレームワーク使用の詳細は、「--framework
」および「OpenGL Multicolor Tetrahedron(多色四面体、C++)」を参照してください。
Mac Objective-C フレームワーク(Macapi)
RTL には、Objective-C で書かれた Mac フレームワークの Delphi インターフェイスを提供するいくつかのユニットが含まれています。これらのユニットのスコープは Macapi で(Mac API から来ています)、通常は製品インストール ディレクトリの /source
ディレクトリに含まれています。
- Macapi.AppKit
- Macapi.CocoaTypes
- Macapi.Consts
- Macapi.CoreFoundation
- Macapi.CoreGraphics
- Macapi.CoreServices
- Macapi.CoreText
- Macapi.Foundation
- Macapi.ImageIO
- Macapi.Mach
- Macapi.ObjCRuntime
- Macapi.ObjectiveC
- Macapi.OCMarshal
- Macapi.OpenGL
- Macapi.QuartzCore
- Macapi.Security
- Macapi.SystemConfiguration
FireMonkey フレームワークはこれらのユニットの一部により実現されます。
これらの API のヘルプについては、Apple 社のドキュメント「Mac 開発者ライブラリ」を参照してください。
あいまいさの解消: OS X での 'Byte' と 'System::Byte'
Delphi ヘッダーにも OSX SDK ヘッダーにも Byte 型が定義されています。 そのため、普通の Byte 型を使用する際に、あいまいさのエラーが発生するおそれがあります。
たとえば、次のようなコードがあるとします。
#include <System.hpp>
DynamicArray<Byte> AByteArray;
OS X の場合にこれをコンパイルすると、次のように、"E2015 'function1' と 'function2' の区別があいまいです" というエラーが発生します。
Error E2015 t.cpp 2: Ambiguity between 'Byte' and 'System::Byte' *** 1 errors in Compile ***
この問題を解決するには、使用する Byte 型を明示的に指定しなければなりません。つまり、次のうちのどちらかを指定します。
Delphi | OS X SDK |
---|---|
System::Byte |
::Byte |
たとえば、次のコードをコンパイルすると、エラーは発生しません。
#include <System.hpp>
DynamicArray<System::Byte> AByteArray;
例外処理
System.SysUtils には複数の例外クラス(言語固有ではない例外/ハードウェア例外を表わす)が含まれます。これらの例外クラスは EExternal から派生したクラスです。次の例外カテゴリをカバーしています。
- 浮動小数点例外
- 整数除算例外
- Ctrl+C、Ctrl+Break
- 特権命令違反
- メモリ アクセス違反
Mac では、EExternal 例外の多くは、Mach 例外を基にしています。Mach 例外を基にしていないものは、Ctrl+C(EControlC)および Ctrl+Break(EQuit)のみです。
アセンブリ ルーチンを使用している場合、「PC マップ例外」の「アセンブリ ルーチンの巻き戻し」セクションを参照してください。
Mach 例外の処理
Mach 例外では、System.SysUtils からの RTL は、オペレーティング システムからの例外通知をリスンするスレッドを作成します。ユーザーのコードに System.SysUtils ユニットをインクルードするだけです。リスン スレッドが Mach 例外の通知を受信すると、EExternal から派生した、対応する Pascal 言語例外に、適切に Mach 例外を変換し、基の Mach 例外で生成されたユーザー スレッドにその Pascal 例外を発生/送出します。
直接 Mach 例外を処理する場合は、System.SysUtils をインクルードすることによって、専用スレッドが Mach 例外をリスンするために起動されることに注意してください。System.Internal.MachExceptions.pas ソースを調べ、RTL と干渉していないことを確認できます。
Ctrl+C と Ctrl+Break
Ctrl+C および Ctrl+Break では、アプリケーションにシグナル ハンドラを設定します。OS X では Ctrl+C および Ctrl+Break 用の Mach 例外を生成しません。
SIGINT および SIGQUIT ハンドラは、シェル アプリケーションが Ctrl+C および Ctrl+Break を処理する必要がある場合の標準的な定義に適合しています。
SIGINT および SIGQUIT ハンドラをオーバーライドしないことをお勧めします。オーバーライドすると、EControlC および EQuit 例外を受信できません。
Mac ライブラリのドキュメント
You can obtain the OS X documentation at the OS X Developer Library. RAD Studio には、Mac で使用するのに必要なライブラリに関するヘルプは用意されていません。
Mac 開発者として Mac Dev Center に登録することもできます(無料)。 Apple Developer Program の登録メンバになると、App Store でアプリケーションを配布できます(それには、開発者証明書やプロビジョニング プロファイルといったその他の要件も伴います)。 詳細については、http://developer.apple.com/programs/mac/gettingstarted/ を参照してください。
完成した OS X アプリケーションの配置
OS X アプリケーションをリリースする前に、毎回、すべての設定が適切に構成されているかどうかを確認しなければなりません。 「OS X アプリケーションの配置準備をする」を参照してください。
OS X アプリケーションを自分で配布する場合は、アプリケーションをビルドして、生成されたバイナリをクライアントに配布するだけです。Apple 社のドキュメントの 「Distributing Applications Outside the Mac App Store」を参照してください。
そうではなく、アプリケーションを Mac App Store で公開したい場合には、追加の手順が必要です。詳細は、「Mac App Store へのアプリケーションの提出」を参照してください。
OS X 関連トピック
- 開発環境の準備(OS X):
- OS X アプリケーションの作成と実行:
- アプリケーションの配置:
関連項目
- マルチデバイス アプリケーションのデバッグ
- ネイティブおよびカスタム FireMonkey スタイルの取り扱い
- FireMonkey プラットフォームに必要な準備
- VCL アプリケーションから FireMonkey への移行
- Apple デベロッパ センター
- Mac Dev Center
- OS X Developer Library
- Mac 用コード署名入門(英語版)
- App Store への Mac アプリケーションの提出(英語版)
- Mac App Store 向けのビルド(英語版)
- Windows および Mac のアプリケーション開発入門(e ラーニング シリーズ)(英語版)
コード例
- OpenGL Multicolor Tetrahedron(多色四面体、C++)