SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
スマートフォンブラウザ不具合特集




          若松 浩昭(株式会社ジークス)
自己紹介

若松 浩昭(Hiroaki Wakamatsu)                      iPhone 3G


・Webサイトの設計
・フロントエンド周りの実装
                           003SH
・スマートフォン案件が主体                                     Galaxy S Ⅱ



・HTML5-WEST.jpコアメンバー
                                   Galaxt Nexus
                                                     SO-01B



Twitter : azuyuu
                              IS05
ブログ : goo.gl/x1kk4
                                     My Desktop!!
                                                               2
セッションのテーマ




  不具合をうまく回避して、
   案件を成功に導こう!!



                 3
セッションの内容

1. スマートフォン案件の現状

2. 不具合を回避するための事前準備

3. 代表的な不具合とその回避方法

4. その他、気をつけていること

5. 最後に・・・

                     4
Chapter. 1
スマートフォン案件の現状




               5
日本におけるスマートフォン




                6
案件の多くは・・・




            7
苦労するのがAndroid対応


•Android OS のバージョン
•端末の解像度
•ブラウザ
•機種に依存する不具合


                     8
Chapter. 2
不具合を回避するための事前準備




                  9
これだけはしておこう:対クライアント編


•Webで実現可能な表現・機能の説明
•iPhone Androidの説明
•Androidの機種依存問題の説明
•案件で対応する範囲を明確に


                      10
•Android 2.2以下も動作対象?
•標準ブラウザ以外のブラウザは?
•動作検証(担保)の対象となる機種は?

                       11
これだけはしておこう:クリエイター編


•とにかくノウハウが大事。日頃から不具合等
の情報収集に励む

•要件に対しては事前に必ず検証
•検証端末の確保(できれば複数台)


                     12
Chapter. 3
代表的な不具合と回避方法




               13
・・・の前に、不具合に対応するための準備


•UserAgentによる判別処理
var ua = navigator.userAgent;
var isIphone = /iphone/.test(ua);
var isAndroid = /android/.test(ua);

// Android端末なら、class="android"をHTMLタグに指定
if (isAndroid) {
  $("html").addClass("android");
}




                                           14
Case. 1
太字


•標準フォントの「Droid Sans
  Japanese」は、全角文字には非対応

•機種によっては、太字に完全対応したオリジ
  ナルフォントがインストールされている




    SAMSUNG製Android端末   Sharp製Android端末
                                          15
Case. 1
太字     ー 回避方法の例 ー




•text-shadow を使って太字を再現
   (機種別で分けるのは・・・さすがにしんどい)


   E{
     font-weight: bold;
   }

   .android E {
    font-weight: normal;
    text-shadow: 0 0 1px 文字の色;
   }

                                 16
Case. 2
リンク要素のアウトライン


•ブロック要素のアウトライン反応がおかしい
   <a href="リンク先URL">リンクのタイトル</a>

   a { display: block; } /* aをブロック要素としてレンダリング */




                                                   17
Case. 2
リンク要素のアウトライン                ー 回避方法の例 ー




•aタグの直下にdivタグを挿入
  (pタグや、display:block; にしたspanタグはNG)


   <a href="リンク先URL"><div>リンクのタイトル</div></a>




                                               18
Case. 3
translate3d


•translate3d実行後のレンダリングに崩れ
   リンク要素のアウトライン、transform系プロパティ、
   各種インプット系要素 ...




                                   19
Case. 3
translate3d


•translate3dと同時に指定した、その他の
  transform系プロパティが反映されない




          iPhone4   IS05




                            20
Case. 3
translate3d


•translate3dを実行した要素内では、
  インプット系要素が不可思議な動き



                  デモURL :
                  goo.gl/8oNXZ




                                 21
Case. 3
translate3d          ー 回避方法の例 ー




•Androidではtranslate3dを使用しない
   E{
     transition: all 0.75s ease-out;
     transform: translate3d(0, 400px, 0);
   }

   .android E {
     transform: translate(0, 400px);
   }




                                            22
Case. 4
オーバーレイ


•下層レイヤーのクリック要素(プルダウン含
  む)が反応




              Case 1
                       23
Case. 4
オーバーレイ


•条件によっては、オーバーレイ上の要素が
  操作できなくなる可能性も・・・




          Case 2   Case 3   Case 4

                                     24
Case. 4
オーバーレイ               ー 回避方法の例 ー




 方法1:ハイライトカラーを透明化
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);




   Case 1              Case 2             Case 3   Case 4


            ハイライトは消えるが、要素は反応している

                                                            25
Case. 4
オーバーレイ               ー 回避方法の例 ー




 方法2:タップ時のイベントをキャンセル
  $("E").on("touchstart", function(e) {
     e.preventDefault();
  }




   Case 1              Case 2             Case 3   Case 4


                    プルダウンが機能しなくなる                           26
Case. 4
オーバーレイ                  ー 回避方法の例 ー




 方法3:クリック(プルダウン)要素を非表示
  visibility: hidden;




   Case 1                Case 2      Case 3   Case 4


  下層レイヤーのaタグやプルダウンが全て非表示になるが・・・

                                                       27
Case. 5
固定配置




 iOSなら5以上、Android OSなら2.2以上
 で、position: fixed; が使用可能
                              28
Case. 5
固定配置


•iOS4でも対応するなら、ライブラリの使用
  を推奨
               iScroll4
               http://cubiq.org/iscroll-4




                                       29
Case. 5
固定配置


•Androidでは、iScroll等のライブラリは動
  作が不安定

•position: fixed; を使用する場合は、
  viewportに user-scalable=no の指定が
  必須(Android4は除く)



                                    30
Case. 5
固定配置


•Galaxy S Ⅱなどの一部の機種では、
  position: fixed; がうまく動かない




                             31
Case. 5
固定配置      ー 回避方法の例 ー




•スクロール途中は固定配置の要素を
  非表示にする等、調整を入れる



                       デモURL :
                       goo.gl/jLJwZ




                                      32
Case. 6
text-shadow


•必ずぼかしの設定値は1px以上にする
  (Android4は除く)

  text-shadow: 0 0 1px rgba(0, 0, 0, 0.75);




                                              33
Case. 6
text-shadow


•Galaxy Nexusでは、特定の文字で文字飛
  びが発生するので、text-shadowは無効に




  if (/Galaxy Nexus/.test(navigator.userAgent)) {
    $("E").css("text-shadow", "none");
  }

                                                    34
Case. 7
拡大と縮小


•3種類のアクション




   ピンチイン・アウト   ダブルタップ   拡大・縮小ボタン
                                   35
Case. 7
拡大と縮小


•2種類の拡大結果




          全体がそのまま拡大   画面幅に合わせて改行
                                   36
Case. 7
拡大と縮小


•拡大(縮小)時のアクションと結果は、
  機種によって違う場合がある
   例)

   Xperia acro:
   → ピンチアウト ... 全体がそのまま拡大
   → ダブルタップ/拡大アイコン ... 画面幅に合わせて改行

   HTC EVO 3D:
   → ピンチアウト/ダブルタップ ... 画面幅に合わせて改行




•端末の仕様と割り切る
                                    37
Chapter. 4
その他、気をつけていること




                38
Point. 1
スワイプ系のライブラリの選定


•選定する時は「Androidでも動くか?」を
  基準にする




                          39
Point. 1
スワイプ系のライブラリの選定


•flickSimple
  イトーヨーカドー、スターバックス、セブンイレブン

•flipsnap
  JRおでかけネット、ドミノピザ、UNO(資生堂)

•flickslide
  海遊館、ミスタードーナツ、モスバーガー

•etc...
           まとめURL : goo.gl/eagSn
                                   40
Point. 2
フォーム系のスタイルを調整


•テキストフィールドの調整
•プルダウンの高さ調整
           input {
              padding: 8px 5px;
           }

           select {
             height: 36px;
           }


                                  41
Point. 2
フォーム系のスタイルを調整


•チェックボックスやラジオボタンのサイズ調
  整と、labelタグへのイベント登録

            <label onclick="">
               <input type="checkbox" />
            </label>

            input[type=checkbox] {
               -webkit-transform: scale(1.8);
            }



                                                42
Chapter. 5
   最後に・・・




             43
最後に・・・


•スマートフォン案件は、Androidの不具合
をどれだけうまく回避できるかが鍵

•Androidに関しては、   格好いい 動きの実
装は避けた方が幸せ

•HTML5のAPIを使用する際は、特に入念な
検証が必要


                          44
スマートフォンブラウザ不具合特集


        若松 浩昭(株式会社ジークス)
                 @azuyuu

Contenu connexe

Tendances

JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てandroid sola
 
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCYu Nobuoka
 
私の欲しい Android 端末
私の欲しい Android 端末私の欲しい Android 端末
私の欲しい Android 端末android sola
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeKen Morishita
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門一希 大田
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす XamarinTatsuji Kuroyanagi
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Tatsuji Kuroyanagi
 
Windows phone SDK 8.0でのアプリ開発
Windows phone SDK 8.0でのアプリ開発Windows phone SDK 8.0でのアプリ開発
Windows phone SDK 8.0でのアプリ開発Nobuaki Aoki
 
iOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips までiOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips までYuki Tanabe
 
BaseViewControllerは作りたくない
BaseViewControllerは作りたくないBaseViewControllerは作りたくない
BaseViewControllerは作りたくない今城 善矩
 
iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方kakegawa-atsushi
 
Ble android
Ble androidBle android
Ble androidkudo1048
 

Tendances (14)

JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放て
 
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
 
Embedded Master2
Embedded Master2Embedded Master2
Embedded Master2
 
私の欲しい Android 端末
私の欲しい Android 端末私の欲しい Android 端末
私の欲しい Android 端末
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす Xamarin
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
 
Windows phone SDK 8.0でのアプリ開発
Windows phone SDK 8.0でのアプリ開発Windows phone SDK 8.0でのアプリ開発
Windows phone SDK 8.0でのアプリ開発
 
iOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips までiOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips まで
 
BaseViewControllerは作りたくない
BaseViewControllerは作りたくないBaseViewControllerは作りたくない
BaseViewControllerは作りたくない
 
iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方
 
既存アプリのiOS8対応 #ios8yahoo
既存アプリのiOS8対応 #ios8yahoo既存アプリのiOS8対応 #ios8yahoo
既存アプリのiOS8対応 #ios8yahoo
 
Ble android
Ble androidBle android
Ble android
 

Similaire à スマートフォンブラウザ不具合特集

Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Tomoaki Shimizu
 
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324Tak Inamori
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Yusuke Suzuki
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Yuki Higuchi
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...エピック・ゲームズ・ジャパン Epic Games Japan
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Taiji Miyabe
 
【XPagesDy】A-2_コムチュア_20131106_公開用
【XPagesDy】A-2_コムチュア_20131106_公開用【XPagesDy】A-2_コムチュア_20131106_公開用
【XPagesDy】A-2_コムチュア_20131106_公開用comtakahashi
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦うYugo Shimizu
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeNA
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見たOCHI Shuji
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)NTT Resonant Technology Inc.
 
【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプ【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプkentaro watanabe
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実Takumi Ohashi
 
DeNA Creative Seminar #2 に行ってきた
DeNA Creative Seminar #2 に行ってきたDeNA Creative Seminar #2 に行ってきた
DeNA Creative Seminar #2 に行ってきたsilvers ofsilvers
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~normalian
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DKatsushi Suzuki
 

Similaire à スマートフォンブラウザ不具合特集 (20)

Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島Cocos2d-x公開講座 in 鹿児島
Cocos2d-x公開講座 in 鹿児島
 
ABC2012Spring 20120324
ABC2012Spring 20120324ABC2012Spring 20120324
ABC2012Spring 20120324
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...  そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2 <Texture Streaming, メモリプロ...
 
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
 
【XPagesDy】A-2_コムチュア_20131106_公開用
【XPagesDy】A-2_コムチュア_20131106_公開用【XPagesDy】A-2_コムチュア_20131106_公開用
【XPagesDy】A-2_コムチュア_20131106_公開用
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
分割と整合性と戦う
分割と整合性と戦う分割と整合性と戦う
分割と整合性と戦う
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見た
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)リモート・スマホ・レンタル(第2回 Androidテスト祭り)
リモート・スマホ・レンタル(第2回 Androidテスト祭り)
 
【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプ【19-B-5】出張!DDD難民救済キャンプ
【19-B-5】出張!DDD難民救済キャンプ
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実
 
DeNA Creative Seminar #2 に行ってきた
DeNA Creative Seminar #2 に行ってきたDeNA Creative Seminar #2 に行ってきた
DeNA Creative Seminar #2 に行ってきた
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 

スマートフォンブラウザ不具合特集