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 デバイス、iOS シミュレータ用 SDK」を参照してください。

必要な Apple ID の入手

OS X アプリケーションの開発、テスト、自主配布:

Apple では、Apple デベロッパ プログラムへの登録または参加を必須としていません。App Store から Xcode IDE をダウンロードするには Apple ID を取得する必要がありますが、Xcode やお使いのコンピュータについてはどのような形式の登録も必要ありません。 ただし、作成したアプリケーションを Mac App Store で配布するには、Mac デベロッパ プログラムに参加する必要があります。同様に、作成したアプリケーションを iOS App Store で配布するには、iOS デベロッパ プログラムに参加する必要があります。Mac デベロッパ プログラムに参加すると、参加者以外は利用できない豊富な開発者向けリソースを利用することもできます。

以下のようないくつかの ID が必要になる可能性があります。これらは Apple Computers から提供されるもので、Apple Computers により変更される可能性があります。

Apple ID と iTunes ID

アプリケーション(Mac App Store から)や音楽(iTunes Store から)を購入するには、Apple ID(無料)を入手し、iTunes アカウント(無料)を作成する必要があります。

Apple デベロッパ ID

Mac アプリケーションを Mac App Store で配布するには、以下の作業が必要です。

  • Apple デベロッパ ID(無料)を入手する
  • Mac デベロッパ プログラムに参加する(個人デベロッパの年間参加費は 99 ドル)
    Mac デベロッパ プログラムに参加すると、Mac 上で必要なツール(Xcode、SDK など)やオンライン ドキュメントを入手したり、サポートを受けることができます。個人、会社、大学用に別の Mac デベロッパ プログラムが用意されています。また、グループ プログラムに登録すると、個人デベロッパとして登録するより一人あたりの費用が安くなります。
  • https://developer.apple.com/account/mac/certificate/ から署名証明書を入手する(Mac アプリケーション用デベロッパ証明書ユーティリティ)
    以下の種類の署名証明書が必要になる可能性があります(仮の証明書名で記述しています)。
    • 開発用証明書:
      • Mac アプリケーション開発用証明書
    • 配布用証明書:
      • Mac App Store 証明書:
        • Mac アプリケーション証明書
        • Mac インストーラ証明書
      • デベロッパ ID 証明書:
        • デベロッパ ID アプリケーション証明書
        • デベロッパ ID インストーラ証明書

Mac App Store に提出できるよう製品ビルドを行うには、[プロビジョニング]ページでこの 2 種類の配布用証明書の名前を指定する必要があります。

アプリケーションを Mac App Store へ提出するにはサンドボックス機能が必要

サンドボックスは、システム リソースに対するアプリケーションのアクセスを制限するものであり、アプリケーションが安全であり悪意あるソフトウェアを含まないことを Apple が保証するための 1 つの手段になっています。

IDE を使ったアプリケーションのサンドボックス、コード署名、準備(推奨)

アプリケーションを Mac App Store へ提出する予定がある場合には、Apple のサンドボックス要件を満たす必要があります。これは、ここで説明する IDE を使った方法で行うことをお勧めします。手動で行う手順は、概要だけを説明します。最新の情報は、Apple の Web ページで見ることができます。

Appmethod IDE にはサンドボックス資格を処理する機能があり、サードパーティ Mac デベロッパ アプリケーション証明書とサードパーティ Mac デベロッパ インストーラ証明書をそれぞれ使って、必要なコード署名と製品ビルドを行うことができます。

IDE の以下のページの内容を設定する必要があります。

1. 証明書の入手と IDE への入力

アプリケーションを Mac App Store へ提出するには特有の証明書が必要です。

  1. Mac 上で Xcode を使用するか、Mac アプリケーション用デベロッパ証明書ユーティリティ(https://developer.apple.com/certificates)を使用して、以下の証明書を入手します。
    • Mac アプリケーション配布用証明書
    • Mac インストーラ証明書
    そのためには Apple デベロッパ アカウントが必要です(「必要な Apple ID の入手」を参照)。
  2. Mac アプリケーション配布用証明書を Mac のキーチェーンに確実にインストールします(ダウンロードした .cer ファイルを Finder でダブルクリックします)。
  3. [資格リスト]ページで、アプリケーションに必要な資格(システム アクセス権)を割り当てます。資格ファイルは自動的に作成されます。また、アプリケーションの資格リストは、[<プロジェクト名> のプロジェクト オプション]ダイアログ ボックスの[資格リスト]ページで編集することができます。
  4. [プロビジョニング]ページで、Mac アプリケーション配布用証明書と Mac インストーラ証明書を入力します。

2. Mac OS X アプリケーションのコード署名、ビルド、配置

メモ: アプリケーションのコード署名とビルドを行う前に、Appmethod で通常のビルド用セットアップ作業を行う必要があります。

  1. OS X をターゲット プラットフォームに設定し、接続プロファイルと SDK を割り当て、接続をテストします (「ターゲット プラットフォームをアクティブにして構成する」を参照)。
  2. バージョン情報を設定します。

最終的な製品ビルドを行う準備ができたら、アプリケーションを Mac App Store へ提出する直前に以下の作業を行います。

  1. [プロジェクト マネージャ]で、[OS X]ターゲット プラットフォーム ツリーに含まれる[構成]ノード下の[アプリケーション ストア]ノードをアクティブにします。
    MacAppStore.png
    これで、ターゲットの Mac に .pkg を配布するよう Appmethod のビルドがセットアップされます。
  2. IDE でプロジェクトをビルドします。
  3. 次のいずれかの方法でプロジェクトを配置します。
    • [プロジェクト|配置] - 配置マネージャで[配置]コマンドをクリック
    • [実行|実行(F9)
      [App Store]ターゲット プラットフォームの場合、アプリケーションを配置すると、プロジェクトが PC から Mac へコピーされ、指定した証明書を使ってアプリケーションにコード署名が行われ、.pkg から成る製品ビルドが作成されて Mac 上の .app ファイルと同じディレクトリに格納されます。
    この段階で、アプリケーションはコード署名され、Mac から Mac App Store に提出する準備が整っています。
  4. Mac 上で、Application LoaderiTunes Connect を使ってアプリケーション バンドルをアップロードします。

手動でのアプリケーションのサンドボックス、コード署名、ビルド

メモ: Mac App Store への提出用にアプリケーションのサンドボックス、コード署名、ビルドを行うには、上で説明した IDE を使って行う方法をお勧めします。手動での手順は IDE を使った方法よりずっと複雑であり、ここでは IDE を使わずに作業をする必要がある人のために概要だけを説明します。最新の情報は、Apple の Web ページで見ることができます。

Mac App Store 用にアプリケーションを準備する作業に IDE を使わない場合には、Mac 上で必要な処理をすることができます。このセクションではこの処理の基本的な概要を示しますが、詳細は Apple 社のドキュメントを参照してください(ここでもいくつかのリンクを紹介しています)。

Mac 上で、<プロジェクト>.entitlements ファイルを作成し、アプリケーション バンドルに追加し、そのバンドルにコード署名し、バンドルをパッケージ化して、Apple に提出する必要があります。

Apple からの要件

必要な要素と、それに関する Apple からの情報を以下に示します。

Mac 上での OS X アプリケーションの手動でのコード署名とビルド

アプリケーションを Mac App Store に提出する場合は、コード署名とプロビジョニングが必要です。その作業は、IDE を使って行うことも(このトピックで既に説明しました)、手動で行うことも(一般的な方法を以下で説明します)可能です。

メモ:

  • アプリケーションを Mac App Store に提出するための配布用証明書を http://developer.apple.com/certificates から必ず入手してください。
  • そのためにはApple デベロッパ アカウントが必要です(「必要な Apple ID の入手」を参照)。
  • 証明書がキーチェーンにインストールされていることを確認します(Finder で .cer ファイルをダブルクリックします)。
  • Mac のサンドボックス用に <プロジェクト>.entitlements ファイル(XML)が必要です(IDE を使用している場合には、このファイルは[資格リスト]ページで作成されます)。

Mac OS X アプリケーションのコード署名と製品インストーラのビルドを手動で行うには:

  1. アプリケーションを IDE でビルドし、Mac OS X(Mountain Lion)に配置します。
  2. Mac で[ターミナル]ウィンドウを開きます。
  3. paserver の scratch-dir(たとえば次のようなディレクトリ)に移動します。
    Applications/Embarcadero/PAServer/n.n/scratch-dir/<マシン名>-<接続プロファイル名>/
  4. 以下のコマンドを実行します。
  • アプリケーションのコード署名:
sudo codesign -f -v -s "Mac Developer: FirstName LastName" "AppName.app"
  • productbuild によるインストーラ パッケージの作成:
sudo productbuild --component "AppName.app" /Applications --sign "Mac Developer: FirstName LastName" --product "AppName.app/Contents/info.plist" AppName.pkg

Mac App Store へのアプリケーションの提出

Mac App Store 以外で Mac アプリケーションを配布することはできますが、アプリケーションを Mac App Store で販売する場合は、あともう少し手順を実行する必要があります。

  1. iTunes Connect アカウントがあることを確認します。詳細は、『iTunes Connect デベロッパ ガイド』の「iTunes Connect の概要」セクションを参照してください。
  2. 512x512 のアプリケーション アイコン(.ico ファイル)を作成してプロジェクトに追加します。
  3. Mac OS X アプリケーションを Appmethod でビルドしデバッグします。
  4. 必要な Apple デベロッパ証明書(「必要な Apple ID の入手」で説明したもの)を取得します。
  5. [<プロジェクト名> のプロジェクト オプション]ダイアログ ボックスの[資格リスト]ページと、[<プロジェクト名> のプロジェクト オプション]または[ツール|オプション...]ダイアログ ボックスの[プロビジョニング]ページに、必要な情報をすべて入力します。
  6. 最終ビルドを行い、配置マネージャを使って Mac に配置します。
  7. Xcode または Mac Application Loader を使って、アプリケーション アーカイブ(.pkg)を Mac App Store に提出します(以下の URL を参照)。
  8. iTunes Connect を使って、App Store 内の自分のアプリケーションを管理します。



Apple の有用な URL

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 開発者ライブラリ」を参照してください。

例外処理

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

Mac OS X 関連トピック

関連項目

コード例

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