◇◆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆◇ ITエンタメ通信 Vol.085 2016年4月20日(水) -- インターネットで エンタメ系サービスを提供されている皆様の為のメルマガ -- ◆◇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◇◆ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ Androidハイブリッドアプリ開発を考える (文中敬称略) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■ ハイブリッドアプリ開発 ---------------------------------------------------------------------- iOS/Android両対応のアプリをWeb技術で開発できる手法をハイブリッドアプリ 開発といいます。 一時期は、お客様の方からハイブリッドアプリでという要望も多かったのです が、最近では次のような経験をされたのか、かつて程の盛り上がりはなくなっ ている感があります。 - クオリティやパフォーマンスがネイティブアプリに及ばない - Android(特に4.4未満)では、WebViewの端末/OS依存問題が多く発生し、開発 が思ったほど容易ではない しかし、適切なケースでハイブリッドアプリを選択することで、ハイブリッド アプリは工期短縮などの効果があり、いまでも一定の需要があります。 採用ケース: iOS版はSafariで提供、Android版はアプリで提供する形態を取っている、dキ ッズやauスマートパスといったようなプラットフォームでアプリを提供する場 合 本稿では、Androidにおけるハイブリッドアプリの開発の問題点と解決策を考 えます。 ■ 問題点1:Android4~4.4でWebViewの実装の差の大きさ ---------------------------------------------------------------------- Android4~4.4のWebViewで実装の差が大きいため、実装する上で下記の問題が あります。 - 使えるHTML5 APIに差がある - JS/CSSの動作に差異がある - 端末/OSごとに特有の不具合がある(端末メーカーがWebViewをカスタマイズ していることがあります) そのような問題があるにも関わらず、Android4.4以下ではWebViewは端末/OSに 依存しており、アプリ側でWebViewを修正することができません。 そのため、Android4~4.4を対応しようと考えるとクロスブラウザ対応レベル の苦労が必要になります。 ※Android5以降ではWebView単体をGoogle Playでアップデートできるようにな りました ■ 問題点2:サウンドの再生の端末依存 ---------------------------------------------------------------------- WebViewでサウンドの同時再生が必要とされる場合、WebAudio APIを利用する ことになりますが、WebAudio APIが使えるかどうかはWebViewが対応している だけではだめで、端末のCPUにも依存します。 そこで、より多くの端末で再生できるようにサウンドの再生をNative側で行う ようにすると、今度はMediaPlayer APIの次のような辛さに直面します。 - 端末/OSごとに不具合がある - MediaPlayerの実装のほとんどがJNIなので何か問題があってもアプリ側で対 応することが困難 - MediaPlayerの実装は端末/OS依存(端末メーカーがカスタマイズしているこ とがあります) ■ 解決策:Android4~4.4でWebViewの実装の差が大きい問題に対応する ---------------------------------------------------------------------- Android4~4.4でWebViewの実装の差が大きいのが問題ならば、独自のWebView をアプリに抱え持つことで解決します。 そのためのソリューションは色々ありますが、弊社では、下記の理由でCrossw alkを採用しております。 - 動作が安定している - Intelがスポンサーをしている - Cordovaがプラグインで対応している Crosswalkを採用することで次のメリットがあります。 - 使えるHTML5 APIに差がなくなる - JS/CSSの挙動に違いが生じない - Crosswalk自体にバグがあったとしてもアプリのUpdateで対応可能 ただし、WebViewをアプリ内部に抱え持つデメリットとして、通常のWebViewを 使用する場合に比べてアプリの容量が18Mほど増加します。 ■ 解決策:サウンドの再生の端末依存問題に対応する ---------------------------------------------------------------------- WebViewの解決策と同様の発想で、OSに依存しないMediaPlayerの代替をアプリ に抱え持つという解決策があります。 まさにその目的でgoogleが開発しているソリューションに、ExoPlayerという ライブラリがありますので、ExoPlayerを利用するのがお勧めです。 ExoPlayerはAndroid4.1以上の対応になりますので、Anroid4.1未満も対応した い場合はExoPlayerのラッパーであるExoMediaを利用すると便利です。 ExoMediaはExoPlayerが使えない場合には、内部的にMediaPlayerを利用するよ うになっています。 ■ まとめ ---------------------------------------------------------------------- Androidのハイブリッドアプリを実装する上で、大きく次の2つの問題がある ことがわかりました。 - Android4~4.4の間でWebViewの実装の差の大きさ - サウンドの再生の端末依存 対応方法をまとめると下記になります。 if ( Andriod4.4未満に対応する ) { Crosswalkを使う } if ( サウンドを再生する ) { NativeでExoPlayerを使って再生する } 以上です。 ラスターワークスではがっかりさせないハイブリッドアプリの提案をさせて頂 いております。 ハイブリッドアプリで実現したいシステムがございましたらぜひ弊社までご用 命くださいませ。 (IH) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■参考 ExoPlayer http://developer.android.com/intl/ja/guide/topics/media/exoplayer.html ExoMedia https://github.com/brianwernick/ExoMedia ■ 第3水曜日配信 次回の配信は2016年7月20日(水)の予定です ■ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ●お問合せはこちらまで mailmag@lusterworks.co.jp ●ホームページ http://www.lusterworks.co.jp 発行元:株式会社ラスターワークス 〒150-0002 渋谷区渋谷2-7-14 VORT青山 6F TEL 03-5778-4501 ●Android,iPhoneアプリの開発も承っております。 お気軽にお声掛け下さいませ。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ITエンタメ通信 発行システム:『まぐまぐ!』http://www.mag2.com/ 配信中止はこちら http://www.mag2.com/m/0001090180.html ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━