C++でネイティブスマホアプリ開発をするには
C++Builderという統合開発環境をご存知でしょうか? C++BuilderはAndroid、iOS(iPhone、iPad)、Windows、Mac OS X用のネイティブアプリを開発することができる有償の統合開発環境です。C++Builderを使えば、C++によってAndroidとiOSの双方に対応したネイティブアプリを開発できるのです。
「有償?」と聞いて読むのをやめるのはちょっと早いです。実は、C++Builderの姉妹製品Appmethodには、無料版もあるのです。無料で使えるバージョンの紹介は最後にするとして、早速C++Builderの画面を見てみましょう。
C++Builderそれ自身はWindows上で動作します。ビジュアルな編集環境の上で「ぽとりぺたり」と画面を編集し、そのプロパティやイベントをビジュアルに設定し、そして必要に応じてC++言語を用いてロジックを記述します。画面編集およびロジック記述が終わったら、コンパイル・配備・デバッグを行います。そして、これらの開発作業は基本的にWindows上で完結できるようになっています(※iOS、Mac OS Xに配備・デバッグする場合には、Windowsに加えて別途Mac OS Xが必要になります)。
作成するアプリの種類をAndroidとiOS(iPhone、iPad)とで切り替えるためには、プロジェクトマネージャのターゲットプラットフォームのなかのアイコンをダブルクリックすることで実現できます。
この操作だけで、例えばNexus 5とiPhoneの切り替えができます。実行イメージは以下のようになります。
どうやってAndroid/iOS両対応が実現されているの?
それでは、C++BuilderはどうやってAndroid/iOS両対応を実現しているのでしょう。ここでは、Android/iOS両対応を実現するための3つのキーワードを紹介します。
LLVM/Clang
C++Builderは、LLVMとClangをベースにエンバカデロの言語拡張を加えたC++コンパイラを利用して、Android/iOS(iPhone、iPad)向けコンパイルを実現しています。これらLLVM/Clangは、いまC++コンパイラの世界でとても注目され、また活発に成長しているオープンソースC++コンパイラなのです。LLVM/ClangがAndroidとiOSに両対応できているので、C++BuilderもAndroidとiOSに両対応できるのです。
FireMonkey
いくらC++コンパイラそのものがAndroid/iOS両対応しても、OSにまつわる表示機能の差を埋めることはできません。C++Builderでは、Android/iOSの表示機能に関する差はFireMonkeyという抽象化層によって吸収しています。
豊富なコンポーネント
せっかくコンパイラとOS間の表示機能の差を克服しても、スマホやタブレットのAPIを直接呼び出してしまうと、そのままではAndroid/iOSの両環境で動作しなくなってしまいます。これを解決するために、C++Builderではカメラ、位置情報、加速度センサ、コンパスなどの多くのスマホ/タブレットならではのコンポーネント機能が提供されています。
これらコンポーネントを使うことによって、Android/iOS両対応が1つのソースコードで実現できているのです。
一歩踏み込んだ使い方
C++ならではの使い方はできるの?
C++Builderが提供するコンポーネントではどうしても実現できず、自分でC/C++のライブラリを準備して呼び出したり、あるいはOSのAPIを直接呼び出したくなる場合があるかもしれません。そのような場合も大丈夫。C++BuilderではそういったライブラリやOS APIの呼び出しももちろん実現できます。
ただし、そのような場合は、環境ごとの差異を#ifdefマクロをともなったプログラミングで埋めてあげるなどの工夫の必要が出てきます。世の中の多くの便利なライブラリはC/C++ライブラリとして提供されていることが多いので、これらを直接呼び出すことができるC++言語はとても便利です。
アプリ内広告課金やアプリ内課金はどうやって実現するの?
アプリを作ったら、アプリ内広告課金やアプリ内課金を実現したくなるかもしれません。そのような場面もC++Builderなら大丈夫。C++Builderにはアプリ内広告課金やアプリ内課金のためのコンポーネントが提供されています。
利用したい課金のためのコンポーネントをドラッグしてドロップするとあなたのアプリにアプリ内広告課金やアプリ内課金の機能が追加されるのです! なお、アプリ内広告課金やアプリ内課金の機能を利用するためには、あらかじめ広告サービス側の登録作業が必要です。だって少なくとも銀行振込先口座情報などの情報につなげるための何かしらを登録しないと、課金そのものが実現できませんものね。
アプリ内広告
アプリ内広告には「TBannerAd」を利用します。
詳しくは以下URLを参照してください。
アプリ内課金
アプリ内課金には「TInAppPurchase」を利用します。
詳しくは以下URLを参照してください。
カメラアプリを作ってみると
それでは、C++Builderを使ったカメラアプリ作成の流れをかいつまんで見てみましょう。
画面の作成
コンポーネント
まず、最初にC++Builderを使って画面を作成します。ツールパレットから使いたいコンポーネントをドラッグしてフォームにドロップしていきます。
構造ペイン
貼り付けたコンポーネントは、構造ペインで構造を確認することができます。貼り付けたコンポーネントの関連が意図とは異なる場合には、ここで変更します。
プロパティの設定
コンポーネントの貼り付けが終わったら、プロパティを設定して見栄えを調整します。
アクションの設定
「カメラの撮影が終わった後」のアクションを設定します。
アクションは、ファイル操作やデバイスに対する操作など、よく使うコマンドをあらかじめ定義したもので、今回は、「カメラの撮影が終わり画像を選んだ」という「TTakePhotoFormCameraAction」を選択します。
LiveBindingの設定
C++Builderでは、LiveBinding機能を利用してコンポーネント間の連携を設定することができます。ここではセピア色スライダーと実際のセピア色加工処理をLiveBindingで設定しています。
セピア加工のようなグラフィック加工のためのフィルター機能があらかじめ用意されているのも便利ですね。
コーディング
最後に、必要に応じてコンポーネントのイベントにコーディングを行います。ちなみに、このカメラアプリで必要なC++のコードはたったの1行でした。
コンパイル・実行
さて、ソフトウェアの作成が終わったら、あとはコンパイルして実行しましょう。C++Builderでコンパイルと実行を行うには、メニューバーの緑色の▼ボタンをクリックするだけ!
さあ、動きました。やった!
なお、iPhone、iPadでコンパイル・実行を行うためには、後述のMacおよびiOS Developer Programへの登録が必要です。
どうやったら試せるのか?
もし、C++Builderに興味を持たれたのでしたら、ぜひトライアル版を使ってみましょう。トライアル版を利用するには、以下の環境が必要です。
Windows
C++BuilderをインストールするためにはWindowsが必要です。Windows 8.1やWindows 7を利用することになります。VMwareのような仮想環境の上のWindows上でも動作します。
Mac OS X
iOS(iPhone、iPad)、Mac OS X用アプリの開発のためにはMac OS Xが必要です。またMacには Xcodeなどの導入が必要です。詳しくは以下の記事を参照してください。
iOS Developer Program - Apple Developer
iOS(iPhone、iPad)向けアプリ開発のためにはiOS Developer Programに参加する必要があります。詳しくは以下のページを参照してください。
トライアル版はこちら
さあ、そしてC++Builderのトライアル版を入手してみましょう。ダウンロードURLはこちら。
Appmethod
ちなみに、C++Builderには姉妹品のAppmethodもあります。AppmethodにはAndroidフォンアプリの開発に限定された「無料版」もあります。Appmethodを使えば、今回説明した開発手法で、Androidフォンアプリを開発し、Google Playに公開するまでを無料で行うことができます(Appmethodによって開発したことを明記する必要があります)。こちらのツールを選択した場合でも、有料プランに乗り換えることで、マルチデバイス対応が可能になります。
詳しくは、Appmethodのサイトをご覧ください。