はじめに
最近Mac向けアプリケーション開発の需要が増えてきて、今まではWindows向けだけだったソフトウェアをMac向けにも開発する必要が出てきたという話を聞きます。ビジネスアプリケーションでは、まだまだWindowsが多いようなのですが、海外では、店舗に導入するPOS用のPCも「お店がクールに見えるから」と、Macにする例があるとのこと。どこでクロス開発の需要が飛び出すか分かりません。
開発者として悩ましいのは、複数のプラットフォーム向けの開発を行うとなると、開発環境も複数、マシンも複数必要になるという点です。でも、最近ではMac環境上にVMを使ってWindows環境を構築できるようになっています。あとは、クロスで開発できるツールがあればということですが、エンバカデロのRAD Studio(あるいはC++Builder、Delphi)であれば、現在ではWindows、Mac OS Xのネイティブクロス開発をサポートしています。この開発環境はWindows上で動作しますが、VMを使えばMac一台で済みそうです。
そこで、Mac OS Xマシンを一台用意して、ここにVMをセットアップ。そして、C++Builder(Delphiでも同じです)をインストールして、WindowsとMacのクロス開発を実践できる環境を構築してみようと思います。
C++BuilderでできるMacクロス開発とは
これまでのWindows / Mac開発
GUIのアプリケーションを構築する場合、Windows環境ではVisual Studioで、C++とMFC(Microsoft Foundation Class)を使って構築するというのが一般的です。一方Macでは、XcodeでObjective-CとCocoaを使います。
それぞれ、使用する言語も異なる上に、WindowsとMac OS XのOS固有のAPIやコントロールを利用するフレームワークを使うため、双方でのコードの再利用は困難です。また、同じ操作性を提供するのも、UIコントロールが共通化されているわけではないので、難しいでしょう。
解決策の一つとして、Javaなどのマルチプラットフォームサポートの言語を利用する方法があります。しかしこの場合、両方のOSの共通項は利用できても、それ以上の機能や能力を発揮することは難しく、パフォーマンスや性能面で妥協せざるを得ません。
CPU/GPUネイティブのFireMonkey
C++BuilderそしてDelphiには、前バージョンからFireMonkeyと呼ばれるフレームワークが搭載されています。現在バージョン2にアップデートされていますが、このフレームワークの特長は、CPU/GPUネイティブの高機能・ハイパフォーマンスでありながら、マルチプラットフォームサポートであるという点です。
FireMonkeyは、DirectX/OpenGLをベースとしており、高機能なグラフィック描画機能を持っています。プラットフォームごとの差異はフレームワークが吸収しているので、アプリケーションレイヤーからは見れば、単一のコードで、複数プラットフォーム向けのアプリケーションを構築できるのです。
FireMonkeyは、コンポーネントフレームワークなので、Visual BasicやDelphiと同じように、マウス操作で部品を配置してGUIを構築できます。その部品は、WindowsでもMacでも使えるわけです。
最新バージョンでは、Windows 8やOS X Mountain Lionもサポートしています。Retinaディスプレイの高品質な描画にも対応しています。
今回、C++Builderの最新バージョン「XE3」で、このFireMonkeyフレームワークを使い、Mac向けのクロス開発を行うことにします。