Windowsオンリーの時代は終わった
「5年前であれば、ミーティングに行くとほとんどの人がWindowsのラップトップを持っていました。でも今は、iPad、Androidタブレット、スマートフォンなどを持った人が同じぐらいいます」
エンバカデロ・テクノロジーズで製品担当ディレクターを務めるジョン・トーマス氏はこのように語る。Windowsのみを開発ターゲットにしていればよかった時代は終わり、今や多様なスマートデバイスもターゲットにしなければならなくなった。

しかも、多くの人は、一つのデバイスではなく、複数デバイスを状況によって使い分けているのだ。
「私自身も朝起きるときは、スマートフォンが目覚まし時計代わり。メールのチェックもスマートフォンを使います。オフィスでの仕事は、主にラップトップです。でも、夜、家に帰るとタブレットでWebを見たり、ゲームをしたりします」
つまり、時間帯ごとにデバイスを使い分けするユーザーのニーズに対応するには、どれか一つというわけにはいかないのだ。
では開発者として、このような変化にいかに対応していくべきか?
開発者向け調査が明らかにしたモバイル開発の実態
昨年、独立系の調査会社が実施したWindows開発者向け調査によると、回答者の実に85%がモバイルへの対応を求められているという結果が出た。さらにそのうちの99%が、今後もWindowsの開発やサポートを継続することを求められている。言いかえれば、モバイルをサポートするからといって、Windows開発がなくなるというわけではなく、単に仕事が増えるという状況にあるということだ。

しかも、多くの顧客は、iOSとAndroidの双方をサポートすることを求めており、デスクトップOSに加えて、複数のモバイルOS向け開発を行わなければならない状況にある。
このような要求に応える技術として、HTML5などのWebテクノロジーが注目されている。共通のコードベースで複数デバイスに対応できるからだ。しかし、多くのユーザーが、Webテクノロジーはモバイル開発には不十分であると考えている。デバイス独自の機能にアクセスするのが難しかったり、JavaScriptのような言語では機能が不足している、パフォーマンスが劣るなどが主な理由だ。

その結果、実に85%の開発者が、ユーザーにとってネイティブのモバイルアプリが最善であると回答している。

「先日、Facebookのキャンバスでのイベントに参加して、同社のエンジニアリング担当のディレクターから話を聞くことができました。ほとんどのユーザーは、Facebookをブラウザで使うことには慣れていましたが、モバイルデバイスに対しては、違う期待を持っていたそうです」
その結果、Webテクノロジーを使ったFacebookアプリは支持されず使われなかった。それがネイティブに移行する決断をした理由とのことだ。
「すべてのプラットフォームでソースコードを共有できるということは、確かに大きなメリットです。しかし、ユーザーがそのアプリを使ってくれないなら、それは失敗です」
C++でもiOS向け開発をサポート
エンバカデロが提供する方法は、マルチデバイス対応のネイティブ開発。既に2013年4月からDelphi言語においては、モバイル開発をサポートしているが、今回C++でもこれを実現した。

「世界でも最も人気のあるプログラミング言語の一つがC++です。日本でも大変人気があります。標準のC++言語を用いたiOS向け開発がいよいよ可能になるのです」
C++Builderを使ったモバイル開発は、従来WindowsやMac向けにビジュアルな操作でアプリケーションを開発してきたのと同じように、コンポーネントのドラッグ&ドロップが基本だ。
モバイルアプリでは、画面サイズや縦横の向きの違いによって、レイアウトが異なってくる。C++Builderでは、これに対応するために、レイアウトマネージャやアンカーといった仕組みを提供している。また、操作性の異なるスマートフォンとタブレットで、それぞれ別のUIを表示させるようにすることもできる。

ドラッグ&ドロップで設計画面に配置したコンポーネントは、プロパティを変更することでその外観や動作を変更できる。コンポーネントに対してなされた操作に対応するコードは、イベントハンドラに記述する。ここで使用するコードは標準のC++だ。つまり、モバイルアプリにおいても、C++の既存のコードを使ったり、豊富なライブラリを利用することが可能になるのだ。

C++Builderで開発したアプリは、即実機に転送して実行することができる。ソースコードレベルでのデバッグも可能だ。将来的には、Androidにも対応し、単一のコードで、iOS、Androidの両方のモバイルデバイスに対応できるようになる。
モバイル開発ではバックエンドとの接続も大事
モバイルアプリの多くは、ほかのサービスやサーバーとの通信を行う形態のものが多い。例えば、企業のデータベース。DelphiやC++Builderでは、コンポーネントを使って容易に主要なデータベースのデータを利用できるが、モバイルの場合、ファイヤーウォールを越えたアクセスも想定しなければならない。
C++Builder(そしてDelphi)では、DataSnapと呼ばれる多層アーキテクチャによって、モバイルやWebなど、多様なクライアントからのアクセスに対応できるようになっている。ここで使用するインターフェイスはRESTなどオープンなものであり、容易に異なるシステムとの連携が可能になっている。

データベースといえば、もう一つ、組み込み型のデータベースの利用がある。ローカルストレージとして利用できるこれらのデータベースについても、SQLite、そしてInterBaseの軽量モバイル版IBLiteなどに対応している。
なお、C++Builder XE5、Delphi XE5はそれぞれ単独のツールとして購入できるほか、両方を含むスイート製品RAD Studio XE5としても購入できる。
モバイル開発は専業から多様な選択肢の一つに変化
C++Builderのような従来Windows向け開発をサポートしてきたツールが、本格的なモバイル開発を実現したことの意義は大きい。これまでは、モバイル開発には、ベンダー固有のツールや言語を用いるか、Webテクノロジーなどを選択するしかなかった。そのいずれも、従来のアプリケーション開発とは異なる、新しいノウハウを必要とするものだ。

Windows向け開発ツールが、現行の開発パラダイムのまま、モバイル向けに拡張されたことにより、従来のアプリケーション開発の延長としてモバイル開発を捉えることが可能になった。開発者は、従来の開発資産やノウハウを活かして新たにモバイル向け開発に取り組みながらも、引き続き要求されるWindows向け開発にも対応できるのだ。
ジョン・トーマス氏の講演ビデオはYouTubeで視聴できる。