多様化するデバイス・OSが求める「ハイブリッド開発」
生産効率向上のために環境整備が必須
「iOSやAndroid、Windowsストア・アプリなどをめぐり、ハイブリッドであることが要件というプロジェクトが急増しており、ハイブリッド開発基盤へのニーズの高まりを実感している」
そう語るのは、長年Java EEなどを使った受託開発プロジェクトに関わり、近年はモバイル系でフロントエンド開発を多数手がけてきた日本アイ・ビー・エム株式会社(以下、日本IBM) ソフトウェア事業 WebSphere事業部の佐々木志門氏だ。
それでも受託の開発プロジェクトにあたっていた当時は、ハイブリッド開発など不要だと考えていた。しかし、技術営業職として多くのユーザーの要望を聞く中で、ハイブリッド開発が「必須要件」になりつつあることを実感したという。そうなれば、複数のアプリケーションをどう迅速にデリバリーするかが、大きな課題となる。
たとえば、同じサービスをAndroidとiPadで展開したり、バラバラの個人所有機器をBYODとして利用したり、要件は様々だ。実際に佐々木氏には「既存のPDA業務をスマートフォンに置き換えたいが、機種はまだ決めてない」という相談まであったという。そんな中で、ネイティブ開発のみでは、運用の二重管理やアップデートなどが大きな負担となり、行き詰まり感を禁じ得ない。
また、ユーザー部門では競争力を高めるために、新しいものを取り込もうとする意欲が高いが、IT部門では、運用管理やセキュリティー、新技術を追加した際の品質管理の問題もあり、なかなか踏み切れない。開発者側ではネイティブ開発はもちろんHTML5でもブラウザーごとに動作が異なるなど、成果物のポータビリティーには悩ましさが残る。こうしたステークホルダーのせめぎ合いが、サービスやシステムの迅速なリリースの弊害になっているのだ。
佐々木氏は「HTML5中心のクライアントサイド開発に移行したことで、Java EE等のサーバーサイド開発でも新しいフレームワークを構築する必要がある。また、フロントエンドだけでなく、バックエンド開発やセキュリティー、アップデート管理など、モバイル開発・運用のライフサイクル全般を広く捉えることが大切」と力説する。
そうした中で注目されるのが、複数の環境に対応する「ハイブリッドアプリケーション」だ。佐々木氏は「エントリー時のイニシャルコストはかかるが、デバイスやOSなど対象のプラットフォームが増えるにつれて、非常に生産効率が上がる」と評価する。
昨今では、iOSやAndroidに加えて、Windows 8やChrome OSを採用する企業が増えているという。特にエンタープライズ系ではSurfaceの大量採用などもあり、ExcelやWordを使えるWindows 8が今後増える可能性は大きい。
HTML5で対応しようにも、Kinectなどの最先端センサーやChromecastなどのデバイスは、成熟したネイティブOSのAPIとしてしか提供されない。これらを活用するためには、HTML5に併せてネイティブスキルが必要となり、双方を両輪で回すことが不可欠となる。
こうしたマルチOS対応のカギとなる技術要素として、佐々木氏は「WebView/UIWebViewクラスの存在」を紹介する。つまり、AndroidはWebView、iOSはUIWebViewでアプリにブラウザーを埋め込み、中身をHTML5アプリとして実装するという方法だ。さらに、Webサーバーに保存していたWebリソースを、アプリケーション内のファイルシステムに持ってくることで、オフラインでも動く。
なお、各プラットフォームのAPIはJavaScriptに対するインターフェースを持っているので、どの言語でもHTML5のJavaScriptからネイティブコードに引数を渡し、ネイティブコードから戻り値を受け取れる。こうした組み合わせによって、WebでもJavaScriptでも、ネイティブアプリケーションコードと連携できる仕組みになっている。このブリッジ役を担うのがApache Cordovaであり、PhoneGapだ。ただし、Cordovaはコマンドラインインターフェースしか持たない。そのため、エディターやフレームワークなどの機能を構築する必要がある。
また、マルチ画面のデザインについては、メディアクエリーで単一のCSSの中で切り替えるアプローチにより、ウィンドウサイズに合わせて画像サイズも可変させる手法「Fluid Grid」「Fluid Image」が用いられる。しかし、デバイス情報に基づくスタイルシートの切り替えなどの機能は持たない。