SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
ANDROIDハイブリッドアプリを約
2年間メンテンナンスしてきて
分ったこと
xtone勉強会
2013/08/30
高谷秀一
ハイブリッドアプリってなに?
ネイティブアプリの中にWebViewと呼ばれる
簡易ブラウザを利用して、表示自体はWeb
ベースで表現し、ロジックをネイティブで開
発したアプリのこと。要するにネイティブア
プリとウェブアプリの良いとこ取り。
でも、良いことばかりじゃないんです。
「HTMLとJavascriptだから簡単だよね。 」と
か思うかもしれませんが、そんなことはない
です。
むしろ、Java書ける人はネイティブアプリに
いくべきと思います。
なぜならWebviewには問題が。。。
 セキュリティ・ホールがある
(addJavascriptInteface)
 メモリリークが起きる
 OSバージョン毎にAPIとWebkitの変更に両
方対処する必要がある。
 フォントやフォントサイズの変更でHTML
が初期化されてしまう。
ちなみに、フォントサイズ変更って
これのこと。
Activityが初期化されるのでwebviewも初期化
される。
でも、ハイブリッドアプリも悪いことば
かりじゃないので、これから作る人のた
めに注意した方が良いことをズラズラ書
いていきたいと思います。
まず、ここが重要。
 ビジネスロジックをJavaかJavascriptのど
ちらに寄せるかポリシーを決める
 removeJavascriptIntefaceした方がいい
 フォント変更に対応するか、プロジェク
トが始まる前に確認
PCブラウザで開発したら。
ブラウザでもテストしたいので、こんなコード
書いていたら。
$(‘#flickable’).bind(‘touchstart touchmove touchend
mousedown mousemove mouseup’, touchhandle);
しっかり、マウスイベントが発生する端末もある。
こんな風に対処
var ua = navigator.userAgent.toLowerCase();
if(ua.indexOf(‘android’) && e.type == ‘mouseup’) {
return;
}
DPI(解像度)毎に処理を振り分けな
いといけない時もある
if (window.devicePixelRatio<1) {
$('.widgetImage').css('max-width', '210px');
} else if (window.devicePixelRatio<1.5) {
$('.widgetImage').css('max-width', '280px');
} else if (window.devicePixelRatio<2.0) {
$('.widgetImage').css('max-width', '420px');
} else {
$('.widgetImage').css('max-width', ‘560px');
}
2系だけ処理を切り分けたい
(各バージョン対応もできるよ)
こんなコードを書いてバージョンごとに処理分
けてます。
var ua = navigator.userAgent.toLowerCase();
var version = ua.substr(ua.indexOf('android')+8, 3);
if(ua.indexOf(‘android’) && parseFloat(version) < 3) {
// ここでゴニョゴニョ。
}
特定の機種だけおかしい
これはしょうがない。
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf(‘f-02e’) >= 0) {
// ここでゴニョゴニョ。
}
3系だけ対処
ハニカムはこれで判別
var isHoneycomb =
navigator.userAgent.toLowerCase()
.match(/android 3¥.[0-9]/)!==null;
まとめ
 ライフサイクルが短いアプリが向いてます
 対応機種が少ないアプリが向いています
 入力が少ないアプリが向いています
 セキュリティにはネィティブアプリより気
を使います。(webviewはOS4.3からはセ
キュリティ部分はかなり改善されているら
しい)

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについてネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
 
Cordova×業務システム:失敗しないモバイル開発の秘訣
Cordova×業務システム:失敗しないモバイル開発の秘訣Cordova×業務システム:失敗しないモバイル開発の秘訣
Cordova×業務システム:失敗しないモバイル開発の秘訣
 
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
 
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
120分聞けばドヤ顔で語れる apache cordova スーパー勉強会
 
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
Androidでもサクサク動くHTML5ハイブリッドアプリの作り⽅
 
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発
 
Monaca+Onsen UIで作るアプリ事始め
Monaca+Onsen UIで作るアプリ事始めMonaca+Onsen UIで作るアプリ事始め
Monaca+Onsen UIで作るアプリ事始め
 
Monacaでつくるハイブリッドアプリ
MonacaでつくるハイブリッドアプリMonacaでつくるハイブリッドアプリ
Monacaでつくるハイブリッドアプリ
 
Cordovaの最近ホットな話題と地雷をまとめて紹介
Cordovaの最近ホットな話題と地雷をまとめて紹介Cordovaの最近ホットな話題と地雷をまとめて紹介
Cordovaの最近ホットな話題と地雷をまとめて紹介
 
エンタープライズ要件に対応する高品質なCordovaアプリ開発のポイント
エンタープライズ要件に対応する高品質なCordovaアプリ開発のポイントエンタープライズ要件に対応する高品質なCordovaアプリ開発のポイント
エンタープライズ要件に対応する高品質なCordovaアプリ開発のポイント
 
HTML5ハイブリッドアプリ の活用ポイント
HTML5ハイブリッドアプリの活用ポイント HTML5ハイブリッドアプリの活用ポイント
HTML5ハイブリッドアプリ の活用ポイント
 
HTML5によるモバイルアプリ開発 が拓拓くビジネスチャンス
HTML5によるモバイルアプリ開発 が拓拓くビジネスチャンスHTML5によるモバイルアプリ開発 が拓拓くビジネスチャンス
HTML5によるモバイルアプリ開発 が拓拓くビジネスチャンス
 
小さく早い改善がスマホのサービス開発を変える
小さく早い改善がスマホのサービス開発を変える小さく早い改善がスマホのサービス開発を変える
小さく早い改善がスマホのサービス開発を変える
 
モバイルアプリ開発の現状
モバイルアプリ開発の現状モバイルアプリ開発の現状
モバイルアプリ開発の現状
 
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPIWindows ストアアプリから使かえるセンサーAPIとデバイスAPI
Windows ストアアプリから使かえるセンサーAPIとデバイスAPI
 
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
~新しい着回しと出会おう~ 『XZ(クローゼット)』 を支える技術 -Cordova編-
 
その Web サイト、その Web アプリを最新の IE11 に対応しよう
その Web サイト、その Web アプリを最新の IE11 に対応しようその Web サイト、その Web アプリを最新の IE11 に対応しよう
その Web サイト、その Web アプリを最新の IE11 に対応しよう
 
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみたCordova を使って本気で商用ハイブリッドアプリ開発をやってみた
Cordova を使って本気で商用ハイブリッドアプリ開発をやってみた
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装もっと良くなるHTMLアプリケーション設計と実装
もっと良くなるHTMLアプリケーション設計と実装
 

Semelhante a Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと

Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)
Yoshiki Ushida
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解
Monaca
 
Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発
takeuchi-tk
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
Nobuhiro Sue
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
Takashi Endo
 
Web制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみたWeb制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみた
Masakazu Muraoka
 
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
Kenyu Miura
 

Semelhante a Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと (20)

Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)
 
OpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクルOpenID ConnectとAndroidアプリのログインサイクル
OpenID ConnectとAndroidアプリのログインサイクル
 
はじめてのモバイルウェブアプリ 2
はじめてのモバイルウェブアプリ 2はじめてのモバイルウェブアプリ 2
はじめてのモバイルウェブアプリ 2
 
HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解HTML5 クロスプラットフォームアプリ開発の現実解
HTML5 クロスプラットフォームアプリ開発の現実解
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発
 
HTML5 によるロボット制御
HTML5 によるロボット制御HTML5 によるロボット制御
HTML5 によるロボット制御
 
20111031 MobileWeb at TDC
20111031 MobileWeb at TDC20111031 MobileWeb at TDC
20111031 MobileWeb at TDC
 
JqueryMobile
JqueryMobileJqueryMobile
JqueryMobile
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
 
アプリ開発も出来るイマドキのWeb技術入門(エンジニア適職フェアWeb技術入門セミナー)
アプリ開発も出来るイマドキのWeb技術入門(エンジニア適職フェアWeb技術入門セミナー)アプリ開発も出来るイマドキのWeb技術入門(エンジニア適職フェアWeb技術入門セミナー)
アプリ開発も出来るイマドキのWeb技術入門(エンジニア適職フェアWeb技術入門セミナー)
 
React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発React Nativeで考えるクロスプラットフォーム開発
React Nativeで考えるクロスプラットフォーム開発
 
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
2014年メディア工房勉強会 第1章「Webの仕組みとHTML5」
 
Web制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみたWeb制作者がandriodのcddを読んでみた
Web制作者がandriodのcddを読んでみた
 
Osc html5-monaca
Osc html5-monacaOsc html5-monaca
Osc html5-monaca
 
HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう HTML5でできるカメラアプリを実際に体験しよう
HTML5でできるカメラアプリを実際に体験しよう
 
Windows IoT Core and Robot Arm
Windows IoT Core and Robot ArmWindows IoT Core and Robot Arm
Windows IoT Core and Robot Arm
 
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
 
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
 

Mais de Shuichi Takaya

フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。
Shuichi Takaya
 

Mais de Shuichi Takaya (12)

svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発svelte と tailwind で始めるフロントエンド開発
svelte と tailwind で始めるフロントエンド開発
 
とあるムービーを作った話
とあるムービーを作った話とあるムービーを作った話
とあるムービーを作った話
 
Android O で開発者が気をつけること
Android O で開発者が気をつけることAndroid O で開発者が気をつけること
Android O で開発者が気をつけること
 
ABTest
ABTestABTest
ABTest
 
Bracketsについて
BracketsについてBracketsについて
Bracketsについて
 
Test the web forward に行きました。
Test the web forward に行きました。Test the web forward に行きました。
Test the web forward に行きました。
 
フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。フラッシャーはこれからどうしたらいいのか。
フラッシャーはこれからどうしたらいいのか。
 
普段はAndroid開発やってるけど、Tizenをさわってみたよ
普段はAndroid開発やってるけど、Tizenをさわってみたよ普段はAndroid開発やってるけど、Tizenをさわってみたよ
普段はAndroid開発やってるけど、Tizenをさわってみたよ
 
グレープフルーツの剥き方
グレープフルーツの剥き方グレープフルーツの剥き方
グレープフルーツの剥き方
 
Androidアプリのリバースエンジニアリング
AndroidアプリのリバースエンジニアリングAndroidアプリのリバースエンジニアリング
Androidアプリのリバースエンジニアリング
 
Android端末のroot化について
Android端末のroot化についてAndroid端末のroot化について
Android端末のroot化について
 
Androidアプリ開発を楽にするために
Androidアプリ開発を楽にするためにAndroidアプリ開発を楽にするために
Androidアプリ開発を楽にするために
 

Androidハイブリッドアプリを約2年間メンテンナンスしてきて分ったこと