WisdomSoft - for your serial experiences.

C++/CXとは?

C++/CX は Windows 8 の Windows ストアで配信するアプリケーション開発に特化した C++ を拡張する構文です。C++/CX を利用することで、C++ に近い文法を使いながら、.NET Framework のようにメモリ管理を意識することなく Windows Runtime コンポーネントを利用したり、新しいコンポーネントを作成したりできます。

Windows Runtime のための C++ 拡張

C++/CX (Visual C++ Component eXtensions)とは、Windows 8 から導入された新しいアプリケーション配信システムに対応した Windows ストア アプリ(Windows Store Apps)を開発するためのプログラミング言語です。基本は標準 C++ の構文を踏襲し、これに Windows ストアアプリケーション開発に必要となる機能を追加したものです。

Windows ストアアプリケーションの実行基盤には Winodws Runtime が用いられています。この Windows Runtime は COM をベースとするネイティブのコンポーネントで構成されており、実質的には標準 C++ と COM 関連の API で開発できますが、これだけではコンポーネントへのアクセスや、新しいコンポーネントの開発が極めて困難です。COM の規約や.メモリ管理を意識することなく Windows Runtime を利用できるように作られた言語拡張にあたる部分を C++/CX と呼んでいます。

つまり C++/CX は標準 C++ に Windows Runtime を利用するための強力な糖衣構文を追加したものと考えて良いでしょう。C++/CX を理解することで効率的に Windows Runtime アプリケーションを開発できます。また C++/CX で開発した Windows Runtime コンポーネントを C# など、他のプログラミング言語から利用することも可能です。

C++/CXと他のC++との関係

C++/CX の構文は、標準 C++ を .NET Framework 用に拡張した C++/CLI に非常に似ています。しかし C++/CX と C++/CLI は別物です。それぞれ、標準 C++ をベースとする独立した C++ 拡張言語となります。

図1 C++/CXと他のC++
図1 C++/CXと他のC++

C++/CLI は .NET Framework の中間言語を生成しましたが、C++/CX が生成するコードは標準 C++ で開発したアプリケーションと同様にネイティブです。すなわち .NET Framework のような中間言語ではなく、Windows Runtime の規約に従った機械語が生成されます。

また C++/CX は Windows ストアアプリケーション開発のために作られた C++ の拡張なので、通常のデスクトップアプリケーション開発に利用することは、一般的にはあり得ません。しかし、技術原理的には C++/CX は Windows Runtime の規約に従ったコードを生成するだけであり、コンソールなどの非 Windows ストアアプリケーション環境でも利用できます。