情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のネイティブ コード

2014/06/18

Windows Phone 8 ではネイティブ コードを使用して Windows Phone を実装する機能が導入されています。ここでは、アプリで C++ を使用する方法を説明し、推奨されるシナリオを示します。

すべての Windows Phone 8 アプリでネイティブ コードを使用できますが、必須というわけではありません。多くのアプリのシナリオでは、ネイティブ コードを使用するアプリと同じ機能やパフォーマンスをマネージ アプリで実現できます。アプリでネイティブ コードを使用する理由を次に示します。

  • 移植性 – 複数のプラットフォームを対象とする場合、対象とするすべてのプラットフォームで使用できるネイティブ ライブラリでコア機能を実装することは理にかなっています。

  • Direct3D グラフィックス – アプリで Direct3D を使用してグラフィックスを画面に描画する必要がある場合は、ネイティブ コードで実行する必要があります。

  • パフォーマンス – 一部のシナリオでは、ネイティブ コードを使用することで大規模な演算タスクのパフォーマンスを向上させることができます。ネイティブ コードとマネージ コードの間の相互運用に関連するオーバーヘッドが生じることに注意してください。このオーバーヘッドにより、ネイティブ コードを使用することで得られるパフォーマンスの向上が相殺されることもあります。このため、C++ を使用すれば自動的にアプリのパフォーマンスが向上するとは考えないでください。

Windows Phone 8 は Visual C++ 2012 をサポートします。これは、デスクトップで使用できる完全版の C++ で、2 つのバージョンが同じコンパイラと IDE を使用します。これは、電話アプリが他のプラットフォーム用に開発された既存の C と C++ のライブラリ、およびサードパーティ製ライブラリやミドルウェアを再利用できることを意味します。

Windows Phone 8 では、デスクトップで使用できる COM API と Win32 API を限定的にサポートします。どの API がサポートされるかについては、「Windows Phone 8 の Win32 API と COM API」を参照してください。

また、すべての Windows Phone 8 アプリは Windows Phone ランタイム を使用できます。これは、デスクトップ アプリケーションで使用される Windows ランタイム を電話用に実装したものです。Windows Phone ランタイム はインフラストラクチャと API ライブラリを提供します。インフラストラクチャは、型の有効化、メモリ管理、共通型システム、およびオブジェクト、メソッド、イベント、例外などを網羅する標準プログラミング モデルなど、言語の根幹となる部分です。Windows Phone ランタイム ライブラリには、音声、連絡先管理、位置情報、センサー、ネットワーキングなどの電話固有の機能向けの API が含まれます。さらに、デスクトップで使用できる Windows ランタイム ライブラリのサブセットがサポートされています。これらすべての API が電話の Visual Basic、C#、および C++ に投影されます。電話でサポートされる API の詳細については、「Windows Phone ランタイム API」を参照してください。

また、Windows Phone ランタイム を使用するとマネージ コードとネイティブ コードの相互運用が可能になります。C++ で実装した Windows Phone ランタイム コンポーネントをプロジェクトに追加してから、そのコンポーネント内のオブジェクトやメソッドにマネージ コードから直接アクセスできます。Windows Phone ランタイム を使用すると、参照カウントや配列バインド チェックなどにより若干のオーバーヘッドが生じることに注意してください。このような理由から、マネージとネイティブの境界でのみ使用することをお勧めします。特にパフォーマンスが重要な演算シナリオを実装する場合は、直接 C または C++ で演算ライブラリを作成してから、マネージ コードから呼び出せる Windows Phone ランタイム ラッパーを作成するようにしてください。

Windows Phone 8 ではアプリで Direct3D を使用する機能を導入していて、Direct3D コードは C++ で作成する必要があります。XAML & Direct3D アプリ、および Direct3D with XAML アプリのプロジェクト テンプレートを使用して、UI を XAML とマネージ (C# または Visual Basic) 分離コード ページで定義したハイブリッド アプリを作成できます。このようなアプリでは、Windows Phone ランタイム コンポーネントにネイティブ Direct3D コードが含まれ、このコードによって XAML UI 内または UI 背後の画面が描画されます。Direct3D アプリ プロジェクト テンプレートでは、XAML やマネージ コードを使用しないピュア ネイティブ アプリが作成されます。このため、この種類のアプリと XAML ベースのアプリの機能やモデルには、異なる点がいくつかあります。適したアプリの種類の選択の詳細については、「Windows Phone 8 のゲームに適したプロジェクト テンプレートを選択する」を参照してください。

Windows Phone での Direct3D API のサポートについては、「Windows Phone 8 の Direct3D」を参照してください。

次に示すネイティブ コードの使用法は、Windows Phone アプリではサポートされていません。

  • ネイティブ コードは、XNA アプリから呼び出すことができません。

  • Windows Phone 8 は、Windows ストア アプリでサポートされている XAML UI と C++ 分離コードのアプリ モデルをサポートしていません。

  • ネイティブ コードは、Windows Phone OS 7.0 アプリまたは Windows Phone OS 7.1 アプリから呼び出すことができません。Windows Phone 8 アプリのみがこの機能を使用できます。

表示: