Mac OS X アプリケーション開発

提供: Appmethod Topics
移動先: 案内検索

作成できるマルチデバイス アプリケーションの種類 への移動

Appmethod を使用して Mac OS X アプリケーションを作成でき、Mac を iOS アプリケーション用に必要な中間プラットフォームとして使用することができます。

ハードウェア面では、開発用 PC の他に、(Appmethod がインストールされている)開発用コンピュータにローカル エリア ネットワーク(LAN)などで接続された Mac が必要です。開発用 PC と Mac 両方のシステム要件の一覧については、「FireMonkey プラットフォームに必要な準備」を参照してください。「Mac と PC を連携させる」も参照してください。

Mac OS X 用 Object Pascal コンパイラは、DCCOSX です。

Mac OS X 用 C++ コンパイラは、BCCOSX です。Mac OS X 用 C++ リンカは、XLINK です。

Mac OS X 用の開発環境のセットアップ

  • 物理接続: Appmethod がターゲットの Mac に接続できることを確認します。
    ただし、OS X アプリケーションに接続プロファイルが割り当てられていないときに、接続プロファイルが必要な操作を行うと、IDE から次のメッセージが表示されます。
    [この操作には接続プロファイルが必要ですが、まだ割り当てられていません。
    プロファイルを今すぐ割り当てまたは作成しますか?]
    続いて、接続プロファイルを作成するために必要な各手順が IDE により示されます。[プラットフォーム プロパティ]ダイアログで、既存のプロファイルをターゲット プラットフォームに割り当てたり、あるいは、[新規追加...]を選択して接続プロファイルを新規作成し、ターゲット プラットフォームに割り当てることができます。
  • プラットフォーム アシスタント: Mac 上でプラットフォーム アシスタントをインストールし、実行します。
  • ターゲット プラットフォーム IDE でターゲット プラットフォームを設定します。Object Pascal マルチデバイス アプリケーションまたは Appmethod C++ マルチデバイス アプリケーションを作成すると、Appmethod により、デフォルトのターゲット プラットフォームは Win32 に設定されます。
    ターゲット プラットフォームを OS X に変更するには:
    1. [プロジェクト マネージャ][ターゲット プラットフォーム]ノードを右クリックします。
    2. [プラットフォームの追加...]をクリックし、[OS X]を選択します。
  • 接続プロファイル IDE で接続プロファイルを作成し、割り当てます(接続プロファイルは、ターゲット マシンへの接続の特性を記述した一連の設定です。「開発用 PC で接続プロファイルを作成およびテストする」を参照)。
  • C++ 開発の場合:
    • Xcode および Xcode コマンド ライン ツール:
      C++ OS X アプリケーションの場合には、Mac に Xcode をインストールする必要があります。アプリケーションを Mac App Store に配置するためには、Xcode コマンド ライン ツールをインストールする必要もあります。
    • SDK:
      C++ の場合には、一連のファイル(ヘッダーおよびライブラリ)から構成される SDK を追加してください。これは、プラットフォーム アシスタント サーバーが稼働しているマシンから開発用システムに取り出され、コンパイルおよびリンクに使用されます。「Mac OS X または iOS 用 SDK の追加」を参照してください。

アプリケーションの開発

Mac アプリケーションでのフレームワークの使用

このセクションでは、マルチデバイス アプリケーション開発のうち、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 フレームワークは、Mac OS X ターゲット プラットフォームで使用するには理想的であり、Win32 と Win64 の両方でもサポートされています。「FireMonkey プラットフォームの要件」を参照してください。


Mac C RTL(C/C++ 開発用)

BCCOSX は、複数の場所にあるコンパイラ ヘッダー ファイルを使用します。

C RTL は次の 2 つの場所に分散配置されます。

インクルード パスの種類

パス

説明

標準

$(BDS)\include\osx\crtl

このディレクトリには、Appmethod 付属の C/C++ RTL ヘッダー ファイル(.h)が含まれます。これらのファイルの一部には、$(SYSROOT)\usr\include の C/C++ ヘッダー ファイルがあります。詳細は、「OS X C RTL」を参照。

リモート

$(SYSROOT)\usr\include

このディレクトリには、Windows にキャッシュされた C/C++ RTL の Mac OS X ヘッダー ファイルが含まれます。これが、SDK ルート ディレクトリになります。

コンパイル用に、Appmethod では、Mac 上の /usr/include ディレクトリにあるヘッダー ファイルが必要です。使用する Mac にこのディレクトリがない場合は、Xcode をインストールする必要があります。PAServer.exe (プラットフォーム アシスタント サーバー)を利用して、[SDK マネージャ]ページから SDK を追加する場合、Appmethod は、ヘッダー ファイルを Mac から Windows に自動的にコピーします(/usr/include から $(SYSROOT)\usr\include)。

多くの Mac OS X C RTL は標準であり、非標準文字はサポートされていません。

Mac C フレームワーク(C/C++ 開発用)

Mac OS X フレームワークには多様で便利な関数が用意されており、プラットフォーム固有のソフトウェアを記述できます。一部のフレームワークは C ベースで、Appmethod Appmethod C++ プロジェクトに含めることができます。Objective-C ベースのフレームワークもあり(Foundation など)、これは Object Pascal インターフェイスを通じてのみ使用できます(以下のセクションを参照)。

Mac C フレームワークを Appmethod プロジェクトに含めるには、使用する SDK を編集する必要があります。[SDK マネージャ]ページを開き、右側にある New.bmp[新しいパス項目を追加])ボタンをクリックします。[リモート パス項目の追加]または[リモート パス項目の編集]ダイアログ ボックスで、次の項目を指定します。

  • フレームワーク リモート パス(例: /System/Library/Frameworks
  • フレームワーク名(例: CoreFoundation

[SDK マネージャ]ページに戻り、[ローカル ファイル キャッシュの更新]をクリックして SDK ローカル ファイルを更新します。

BCCOSX でのフレームワーク使用の詳細は、「--framework」および「OpenGL Multicolor Tetrahedron(多色四面体、C++)」を参照してください。

Mac Objective-C フレームワーク(Macapi)

RTL には、Objective-C で書かれた Mac フレームワークの Object Pascal インターフェイスを提供するいくつかのユニットが含まれています。これらのユニットのスコープは 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'

Object Pascal ヘッダーにも 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 型を明示的に指定しなければなりません。つまり、次のうちのどちらかを指定します。

Object Pascal 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 ライブラリのドキュメント

Mac OS X のドキュメントは、Mac OS X 開発者ライブラリで入手できます。Appmethod には、Mac で使用するのに必要なライブラリに関するヘルプは用意されていません。

Mac 開発者として Mac Dev Center に登録することもできます(無料)。 Apple Developer Program の登録メンバになると、App Store でアプリケーションを配布できます(それには、開発者証明書やプロビジョニング プロファイルといったその他の要件も伴います)。 詳細については、http://developer.apple.com/programs/mac/gettingstarted/ を参照してください。

完成した Mac OS X アプリケーションの配置

Mac OS X アプリケーションをリリースする前に、毎回、すべての設定が適切に構成されているかどうかを確認しなければなりません。「Mac OS X アプリケーションの配置準備」を参照してください。

Mac OS X アプリケーションを自分で配布する場合は、アプリケーションをビルドして、生成されたバイナリをクライアントに配布するだけです。詳細は、Apple 社のドキュメント「Distributing Applications Outside the Mac App Store」(Mac App Store 以外でアプリケーションを配布する)を参照してください。

そうではなく、アプリケーションを Mac App Store で公開したい場合には、追加の手順が必要です。詳細は、「Mac App Store へのアプリケーションの提出」を参照してください。

Mac OS X 関連トピック

関連項目


コード例

  • OpenGL Multicolor Tetrahedron(多色四面体、C++)
  • C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\FireMonkey Desktop\XMLonMac