macOS アプリケーション開発
RAD Studio を使用して macOS アプリケーションを作成でき、Mac を iOS アプリケーション用に必要な中間プラットフォームとして使用することができます。
ハードウェアの観点では、開発 PC の加え、Mac がその開発コンピュータ(RAD Studio がインストールされているもの)に接続されている必要があります。 たとえば、LAN(ローカル エリア ネットワーク)などを利用してです。「Mac と PC を連携させる」も参照してください。
Delphi コンパイラ for macOS 64 ビット(Intel)および macOS 64 ビット(ARM) は、DCCOSX64 です。
macOS 用の開発環境のセットアップ
- 物理接続: RAD Studio がターゲットの Mac に接続できることを確認します。
- 接続プロファイル マネージャパネルで、[接続テスト]をクリックします。
- ただし、macOS アプリケーションに接続プロファイルが割り当てられていないときに、接続プロファイルが必要な操作を行うと、IDE から次のメッセージが表示されます。
[この操作には接続プロファイルが必要ですが、まだ割り当てられていません。
プロファイルを今すぐ割り当てまたは作成しますか?]
- 続いて、接続プロファイルを作成するために必要な各手順が IDE により示されます。 [プラットフォーム プロパティ]ダイアログで、既存のプロファイルをターゲット プラットフォームに割り当てたり、あるいは、[新規追加...]を選択して接続プロファイルを新規作成し、ターゲット プラットフォームに割り当てることができます。
- プラットフォーム アシスタント: Mac 上で、プラットフォーム アシスタントをインストールし、それを実行します。
ターゲット プラットフォーム: IDE でターゲット プラットフォームを設定します。 Delphi または C++Builder のマルチデバイス アプリケーションを作成する際、RAD Studio は Win32 をデフォルト ターゲット プラットフォームとしています。
- ターゲット プラットフォームを macOS に変更するには:
- ターゲット プラットフォーム ノード(プロジェクト マネージャ内)を右クリックします。
- macOS 64 ビット(Intel)または macOS 64 ビット(ARM)のプラットフォームの追加をします。
- アプリケーションで VCL を使用している場合、[macOS]オプションは利用できません(VCL では macOS をサポートしていません)。
- 接続プロファイル: IDE で接続プロファイルを作成し、割り当てます(接続プロファイルは、ターゲット マシンへの接続の特性を記述した一連の設定です。「開発用 PC で接続プロファイルを作成およびテストする」を参照)。
アプリケーションの開発
Mac アプリケーションでのフレームワークの使用
このセクションでは、macOS 64 ビット(Intel) および macOS 64 ビット(ARM) ターゲット プラットフォームに固有のマルチデバイス アプリケーション開発のいくつかの側面について説明します。マルチデバイス開発に関する一般的なドキュメントについては、「マルチデバイス アプリケーションの開発」を参照してください。
RTL
基本機能を備えた一部の RTL ユニット(System.pas や System.SysUtils.pas など)は Mac と Windows で共通です。
多くの RTL ユニットは Mac 専用です(「Mac Objective-C フレームワーク」参照)。 これらのユニットは先頭に Macapi または Posix が付いたユニット スコープです。
FireMonkey
FireMonkey フレームワークは、macOS 64 ビット(Intel) および macOS 64 ビット(ARM) のターゲット プラットフォームに最適で、Win32 と Win64 の両方もサポートしています。「FireMonkey プラットフォームの前提条件」を参照してください。
VCL(Mac では使用不可)
VCL は Windows(32 ビット版および 64 ビット版)でしか使用できません。
Mac Objective-C フレームワーク(Macapi)
RTL には、Objective-C で書かれた Mac フレームワークの Delphi インターフェイスを提供するいくつかのユニットが含まれています。 これらのユニットのスコープは Macapi で(Mac API から来ています)、通常は製品インストール ディレクトリの /source
ディレクトリに含まれています。
- Macapi.AppKit
- Macapi.AVFoundation
- 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 開発者ライブラリ」を参照してください。
あいまいさの解消: macOS での 'Byte' と 'System::Byte'
Delphi ヘッダーにも OSX SDK ヘッダーにも Byte 型が定義されています。 そのため、普通の Byte 型を使用する際に、あいまいさのエラーが発生するおそれがあります。
たとえば、次のようなコードがあるとします。
#include <System.hpp>
DynamicArray<Byte> AByteArray;
macOS の場合にこれをコンパイルすると、次のように、「E2015 'function1' と 'function2' の区別があいまいです 」というエラーが発生します。
Error E2015 t.cpp 2: Ambiguity between 'Byte' and 'System::Byte' *** 1 errors in Compile ***
この問題を解決するには、使用する Byte 型を明示的に指定しなければなりません。つまり、次のうちのどちらかを指定します。
Delphi | macOS 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 では、アプリケーションにシグナル ハンドラを設定します。 (macOS 64 ビット (Intel) および macOS 64 ビット (ARM) は、CTRL+C および CTRL+BREAK の Mach 例外を作成しません。)
SIGINT および SIGQUIT ハンドラは、シェル アプリケーションが Ctrl+C および Ctrl+Break を処理する必要がある場合の標準的な定義に適合しています。
SIGINT および SIGQUIT ハンドラをオーバーライドしないことをお勧めします。 オーバーライドすると、EControlC および EQuit 例外を受信できません。
Mac ライブラリのドキュメント
macOS のドキュメントは、macOS 開発者ライブラリで入手できます。 RAD Studio には、Mac で使用するのに必要なライブラリに関するヘルプは用意されていません。
Mac 開発者として Mac Dev Center に登録することもできます(無料)。 Apple デベロッパ プログラムの登録メンバになると、App Store でアプリケーションを配布できます(それには、デベロッパ証明書やプロビジョニング プロファイルといったその他の要件も伴います)。 詳細については、http://developer.apple.com/programs/mac/gettingstarted/ を参照してください。
完成した macOS アプリケーションの配置
macOS アプリケーションをリリースする前に、毎回、すべての設定が適切に構成されているかどうかを確認しなければなりません。 「macOS アプリケーションの配置準備」を参照してください。
macOS アプリケーションを自分で配布する場合は、アプリケーションをビルドして、生成されたバイナリをクライアントに配布するだけです。 詳細については、Apple ドキュメントの「Distributing Applications Outside the Mac App Store」を参照してください。
そうではなく、アプリケーションを Mac App Store で公開したい場合には、追加の手順が必要です。 詳しい手順については、「Mac App Store へのアプリケーションの提出」を参照してください。
プロジェクト配置の処理(macOS ARM 64 ビット)
macOS ARM 64 ビット ターゲット プラットフォームが自動的にデモ アプリケーション プロジェクトに追加される際、macOS ARM 64 ビット ターゲット プラットフォームの配置リストには、macOS 64 ビット ターゲット プラットフォームからデフォルトの項目以外、継承されません。 macOS ARM 64 ビット ターゲット プラットフォームの場合、デフォルトの項目以外については、手動でプロジェクト配置リストに追加する必要があります。 これには、次の手順に従います:
- IDE で、[プロジェクト|配置]に移動し、[配置]タグを開きます。
- [すべての構成 - macOS 64 ビット プラットフォーム]の項目を [すべての構成 - macOS ARM 64 ビット プラットフォーム]と比べます。
- 例: FMX.Mobile.VideoPlayback sample project
macOS ARM 64 ビット ターゲット プラットフォームの配置リストで、項目が抜けていた場合には、次の手順で macOS ARM 64 ビットに追加します:
- [すべての構成 - macOS 64 ビット プラットフォーム]をコンボ ボックスから選択します。
- OSX64 はあるが OSXARM64 はない、デフォルトではないエントリを、プラットフォーム 列でクリックします。
- プラットフォーム 列の値をクリックすると、省略記号のボタン()が表示されます。
- 省略ボタンをクリックします。
- OSXARM64 を プラットフォームの選択 ウィンドウで選択します。
- [OK]をクリックします。
コンボボックスから[すべての設定 - macOS ARM 64 ビット プラットフォーム]を選択し、列 リモート名 の値がmacOS 64 ビット ターゲット プラットフォームの配置リストの値を一致しているかを確認します。
macOS のトピック
- 開発環境の準備(macOS):
- macOS アプリケーションの作成と実行:
- アプリケーションの配置:
関連項目
- マルチデバイス アプリケーションの開発
- Windows と macOS の相違点
- iOS モバイル アプリケーション開発
- マルチデバイス アプリケーションのデバッグ
- ネイティブおよびカスタム FireMonkey スタイルの取り扱い
- FireMonkey プラットフォームに必要な準備
- VCL アプリケーションの FireMonkey への移行
- Apple デベロッパ センター
- Mac Dev Center
- iOS デベロッパ ライブラリ
- Mac 用コード署名入門(英語版)
- Mac App Store へのアプリケーションの提出
- Mac App Store 向けのビルド(英語)
- Windows および Mac のアプリケーション開発入門(e ラーニング シリーズ)(英語版)