CodeZine(コードジン)

特集ページ一覧

C++でAndroid/iOS(iPhone、iPad)両対応のネイティブなスマホアプリを作る

C++Builder/Appmethodでマルチデバイス開発をビジュアルに実現

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/06/26 14:00

 現在主流のスマートデバイスといえば、AndroidとiOS(iPhone、iPad)です。スマホアプリを作るのであれば、Android/iOS両対応のネイティブなスマホアプリを開発したい、というのが多くのスマホアプリ開発者、そしてスマホアプリ開発参入予備軍の気持ちではないでしょうか。そしてもう一つ、C++という言語があります。AndroidだとJava、iOSだとObjective-Cというのがネイティブ開発をするときの言語と決まっています。でも開発者の気持ちとしては、共通の言語、しかもなるべくPC向けの開発でも使用した標準の言語を使いたいというのが本音でしょう。今回は、そんな2つの要望をかなえてみましょう。

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のモバイルアプリ開発画面
C++Builderのモバイルアプリ開発画面

 C++Builderそれ自身はWindows上で動作します。ビジュアルな編集環境の上で「ぽとりぺたり」と画面を編集し、そのプロパティやイベントをビジュアルに設定し、そして必要に応じてC++言語を用いてロジックを記述します。画面編集およびロジック記述が終わったら、コンパイル・配備・デバッグを行います。そして、これらの開発作業は基本的にWindows上で完結できるようになっています(※iOS、Mac OS Xに配備・デバッグする場合には、Windowsに加えて別途Mac OS Xが必要になります)。

「ぽとりぺたり」の開発スタイル

 作成するアプリの種類をAndroidとiOS(iPhone、iPad)とで切り替えるためには、プロジェクトマネージャのターゲットプラットフォームのなかのアイコンをダブルクリックすることで実現できます。

ターゲットの切り替え

 この操作だけで、例えばNexus 5とiPhoneの切り替えができます。実行イメージは以下のようになります。

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という抽象化層によって吸収しています。

FireMonkey(FMX)コンポーネントフレームワーク

豊富なコンポーネント

 せっかくコンパイラと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」を利用します。

アプリ内広告機能をカプセル化したTBannerAdコンポーネント

 詳しくは以下URLを参照してください。

アプリ内課金

 アプリ内課金には「TInAppPurchase」を利用します。

アプリ内課金機能をカプセル化したTInAppPurchaseコンポーネント

 詳しくは以下URLを参照してください。

カメラアプリを作ってみると

 それでは、C++Builderを使ったカメラアプリ作成の流れをかいつまんで見てみましょう。

画面の作成

コンポーネント

 まず、最初にC++Builderを使って画面を作成します。ツールパレットから使いたいコンポーネントをドラッグしてフォームにドロップしていきます。

ツールパレットからコンポーネントをドラッグ

構造ペイン

 貼り付けたコンポーネントは、構造ペインで構造を確認することができます。貼り付けたコンポーネントの関連が意図とは異なる場合には、ここで変更します。

構造ペインで貼り付けたコンポーネントの関連を確認

プロパティの設定

 コンポーネントの貼り付けが終わったら、プロパティを設定して見栄えを調整します。

プロパティの設定

アクションの設定

 「カメラの撮影が終わった後」のアクションを設定します。

アクションの設定

 アクションは、ファイル操作やデバイスに対する操作など、よく使うコマンドをあらかじめ定義したもので、今回は、「カメラの撮影が終わり画像を選んだ」という「TTakePhotoFormCameraAction」を選択します。

LiveBindingの設定

 C++Builderでは、LiveBinding機能を利用してコンポーネント間の連携を設定することができます。ここではセピア色スライダーと実際のセピア色加工処理をLiveBindingで設定しています。

LiveBindingでビジュアルにコンポーネントを関連付け

 セピア加工のようなグラフィック加工のためのフィルター機能があらかじめ用意されているのも便利ですね。

コーディング

 最後に、必要に応じてコンポーネントのイベントにコーディングを行います。ちなみに、このカメラアプリで必要なC++のコードはたったの1行でした。

撮影した画像を画面に表示するためのコード

コンパイル・実行

 さて、ソフトウェアの作成が終わったら、あとはコンパイルして実行しましょう。C++Builderでコンパイルと実行を行うには、メニューバーの緑色の▼ボタンをクリックするだけ!

 さあ、動きました。やった!

AndroidとiPhoneで実行

 なお、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のサイトをご覧ください。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • EDN編集部(イーディーエヌ編集部)

    エンバカデロ・デベロッパーネットワーク(EDN)は、ソフトウェア開発者とデータベース技術者のための技術情報サイトです。Delphi、C++Builderをはじめとする開発ツールやER/Studioなどのデータベースツールに関連する技術記事、ビデオなどを提供しています。EDN編集部は、EDN記事と連携...

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5