それぞれの開発スタイル、メリット/デメリットは?
CodeZine:ありがとうございます。今のお話しの中で、「Webアプリ」「ネイティブアプリ」「ハイブリッドアプリ」といった言葉が出てきたのですが、各社さんのツールでどのような形態のアプリを、どのようなスタイルで作れるのかについて、もう少し整理してみたいと思います。また、その際のメリットやデメリットについても、触れていただければ幸いです。
アドビ:アドビの場合は「PhoneGap」が大きな役割を担っていますね。これは、HTMLとCSSベースで開発されたWebアプリをラッピングし、ネイティブ化、ハイブリッド化できるテクノロジーです。PhoneGapは基本的にオープンソースのプロダクトですが、Adobe Creative Cloudの有料メンバーシップを持っていれば、「PhoneGap Build」と呼ばれるサービスを使って、各プラットフォーム向けのパッケージングまでをクラウド上で行えるようになっています。PhoneGapを利用すると、マイナーなものも含めて、ほとんどすべてのプラットフォームに対応できます。
PhoneGapのメリットは、「ハイブリッドアプリ」が持っているメリットと同じですね。各デバイスが持っている特有の機能にアクセスできる。開発デザインを外注しやすいといった点でしょうか。ハイブリッドアプリの課題となっているパフォーマンス面も、徐々に改善が進められ、十分使えるものになってきています。
SCSK:Curlの場合、アーキテクチャは「ハイブリッド」アプリに近いですかね。開発はオブジェクト指向の独自言語である「Curl言語」から、HTMLやCSSにトランスレートした上で、パッケージングして、1つのアプリケーションにする流れになります。
Curlのトランスレーターでハイブリッドアプリを作る場合のメリットとデメリットですが、まずデメリットとしては、他のハイブリッドアプリやWebアプリと同様、WebViewやWebKitといったコンポーネントの機能に依存する点です。一方のメリットとしては、Curlのコンポーネントとトランスレータで、パフォーマンスが良好になるよう、かなりのチューニングを行っている点でしょう。普通の開発者がHTMLを手で書くより、より高いパフォーマンスを得られます。
独自のCurl言語を覚えなければいけない点は、デメリットと言われてしまうかもしれませんが、一方で、Curlで書けば、プラットフォームごとのブラウザの方言をトランスレータで吸収でき、本当のクロスプラットフォームを実現できます。学習コストも決して高くなく、Javaが分かる方には、スムーズに理解していただけるのではないかと思っていますし、JavaScriptを大規模開発やエンタープライズ・システムで利用する場合に問題視されることの多い型指定や名前空間の問題も解決できます。
エンバカデロ:エンバカデロのツールで作るモバイルアプリは「ネイティブ」になります。なので、パフォーマンスは高いですね。先ほども述べましたが、ドラッグ&ドロップでネイティブアプリの開発が可能な点がメリットです。デバイスの機能に対しても、コンポーネントが各デバイスの機能をネイティブに呼び出して利用できるようにしています。デバイスの「共通項」的な部分だけでなく、デバイスの特定の機能を使えるわけです。しかも、OSレベルのAPIも直接コールできますから、固有の機能を実装することもできます。「簡単なことは簡単にできて、必要ならば難しいこともできる」というのがポイントです。
エンバカデロのツールを使うメリットとして、従来クライアント/サーバ開発をやっていた人が、モバイル開発に移っても、これまでのスキルをそのまま活かせる点があると思います。一方のデメリットとしては、ツールとして「純正」のものに対するキャッチアップに、ある程度の時間が必要になる点があります。開発チームも努力はしていますが、完全に同じタイミングで、新たなデバイスやプラットフォームを100%サポートするのは難しく、ツール側での対応に若干のタイムラグが出てしまいます。とはいえ、例えばiOS 7リリース時には、即日アップデートを提供しています。そのあたりを考慮していただければ、非常に良いツールだと思います。
キヤノンITS:「Sencha」の基本はWebアプリになりますが、ネイティブ・パッケージングもできますので、「Webアプリ」と「ハイブリッド」に対応する形になります。デバイスが持つ機能への対応はSencha自身のネイティブAPIまたはPhoneGapを通じて行えますね。
先ほど、SCSKさんのお話にもありましたが、一般的にHTML5でアプリを作ろうとすると、パフォーマンス面でのチューニングに手間がかかります。これについて、Senchaでは、さまざまなコンポーネントに対して、チューニングを施しています。ユーザーは、難しいことを考えず、コンポーネントを使うだけで、高いパフォーマンスを得られます。
また、デバッグオプションなどにもパフォーマンス向上に関するものを用意しており、ネイティブに迫るパフォーマンスをHTML5でも出せるよう工夫をしています。Senchaで開発したWebアプリのパフォーマンスについては、FacebookのWebクライアントである「Fastbook」というデモアプリとしても公開されていますので、そちらで実際に体感していただくこともできます。
マジック: Magicアプリの開発は、Windows上の開発環境「Magic xpa Studio」で行います。開発したものを「Magic エンジン」と呼ばれる実行環境上で動作させますが、これは、マジック側があらかじめ準備した業務アプリケーションの処理に必要な、コンパイル済みのプログラム群になります。DBアクセスの専用モジュールも用意しておりSQL文の記述も不要なので、開発者側で行う必要があるのは「業務処理の定義」の部分だけになります。
手順としては、開発環境上でDBを定義し、画面を設計して、ビジネスロジックを定義するという形で進めます。すると、XML構造のアプリケーション・メタデータが生成されるのですが、これが、各プラットフォーム上で動作するネイティブの「Magicエンジン」によって解釈され、実行されるという仕組みです。そのため、ソースコードからコンパイルして…といった、一般的な開発のスキームとは全く異なります。
ビジュアルな表現力という部分については、ある意味で「捨てている」と言えるかもしれません。現時点ではよくある「PC用業務アプリ」としての画面を表現する程度のUI開発機能しか実装できていません。
ただ、より見ばえのよい画面は作れないのかというとそうではなく、Windowsクライアントでしたら.NETコンポーネントが利用可能です。また、ブラウザの機能をMagicアプリに提供するコントロールを用意しているので、これを使うと、例えばGoogle MapsやSenchaなど、ブラウザで表現可能なものはMagicアプリに組み込むことが可能です。ビジュアルの表現力は、それを得意とするツールに任せるか、用途に適したコンポーネントを必要に応じて選択できるという形です。
Magicでは、高度なビジュアライズの部分については、あえて追求せず、データベースのフロントエンドとして、業務ロジックの変更をいかに容易に修正できるか、できる限りロジックを変えずに、幅広いプラットフォームに対応できるかという部分で、モバイル開発については勝負していますね。
(後編に続く)
