スマートフォンサイト制作 よくあるトラブルと 解決方法・回避方法

115

Click here to load reader

Upload: maboroshiinc

Post on 20-Dec-2014

45.602 views

Category:

Technology


2 download

DESCRIPTION

NTTレゾナント主催のセミナーで発表した内容です。

TRANSCRIPT

Page 1: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

木村哲朗 / 西畑一馬

スマートフォンサイト制作 よくあるトラブルと解決方法・回避方法

Page 2: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

木村 哲朗フロントエンドエンジニア

Page 3: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

西畑 一馬フロントエンドエンジニア

Page 4: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

•フロントエンド実装•デザイン・設計•スマフォサイト制作•セミナー登壇

Page 5: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

弊社スタッフの執筆書籍

Page 6: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Outline•はじめに•事前のチェックポイント•トラブルシューティング•スマホサイトの検証・確認方法•スマホにおけるパフォーマンス

Page 7: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

はじめに

Page 8: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

スマフォのやっかいな点

Page 9: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

パフォーマンスは高くないAndroid 4.0.4

Mobile Safari 6.0

Chrome 26.0.1410

0 100,000 200,000 300,000 400,000

361,156回/秒

77,906回/秒

53,235回/秒

jsPerfにて1秒間に処理できる createElement の回数を計測:http://jsperf.com/loop-130517-01/2

GALAXY NEXUS

iPhone 4S

MacBook Air

Page 10: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

機種によって挙動が異なる

Page 11: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

端末の種類が山ほどある

0

10

20

30

40

50

2011 2012 2013(~6月)

7

1614

4

2219

17

45

24

DoCoMo au SoftBank

スマートフォンデータベースにて調査:http://smartphone.ultra-zone.net/

Page 12: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

事前のチェックポイント

Page 13: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

対応OSと対応機種

Page 14: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

国内OS別シェア(1Q, 2013)

その他5.0%

Android45.8%

iOS49.2%

Kantar調査より

Page 15: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

iOS Ver別シェア(06, 2013)

iOS4以下1.4%

iOS 59.5%

iOS 689.1%

http://stats.unity3d.com/mobile/os-ios.html

Page 16: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

iOSの対応範囲•メジャー最新版•5.1 / 6.1•4.x以下は検証ができない•iOS7登場

Page 17: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Android Ver別シェア(06, 2013)

その他2%

Android 2.322%

Android 4.034.9%

Android 4.136.3%

Android 4.24.2%

http://stats.unity3d.com/mobile/os.html

Page 18: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

•2.3.x•4.0.x / 4.1.x / 4.2.x•2.2.x以下はトレンド実現困難

Androidの対応範囲

Page 19: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

端末ごとの対応

全機種対応は

大変

Page 20: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

できる端末から対応

Page 21: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

検証端末を決める•iPhone5, 4S / iOS6.1•iPhone4 / iOS5.1•GALAXY S4 / Android 4.2.2•HTC J butterfly / Android 4.1.1•Xperia AX / Android 4.0.4•SH-06D / Android 2.3.5

クライアントや開発会社と握る

Page 22: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

機種名とOS詳細バージョンは必ずセットで指定

型番も!

Page 23: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

•タブレットはどうしますか?•Android 3.x には対応しますか?

© All rights reserved by Paymentmax

Page 24: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

基本をおさらい

Page 25: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Webとネイティブの違い

フリック可アニメあり

ネイティブ Web

フリック不可アニメなし

Page 26: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

表現力とパフォーマンス

ネイティブ Web

>

Page 27: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

運用効率

ネイティブ Web

<

Page 28: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

ハイブリットアプリネイティブ Web+

ネイティブで外側を用意しコンテンツはWebアプリで表示

Page 29: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

高精細なディスプレイ

ページ上の1px

デバイス上の4px

=

Page 30: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

画像も倍の密度が必要

Page 31: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

カンプは640pxで作る640px

•キャンバスは640px•あらゆるものを偶数サイズで

Page 32: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

リキッドデザインで作成する

Page 33: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

その他デザインの注意点•テキストにはボールド(太字)体を使用しない

•ドロップシャドウにはボケ足が必要

•画像を極力使用しない•CSS3で実現可能なデザインを心がける

Page 34: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

ピクセルパーフェクトに

こだわらないお金と時間によるけどね!

Page 35: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

viewportで画面を設定する

•画面幅の指定•拡大・縮小の許可・不許可•meta要素で設定

Page 36: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

<meta name="viewport" content="width=device-width,initial-scale=1.0">

• “width=device-width”端末の画面サイズに成行• “initial-scale=1.0”初期拡大率は等倍• 拡大・縮小の不許可は要件などによる

一般的な指定

Page 37: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

RWDか専用サイトか

Page 38: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

レスポンシブウェブデザイン (RWD)

OK メリット NG デメリット

•1ソースでマルチデバイスに対応可能

•設計やデザインに十分な知識が必要

Page 39: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

RWDを導入するには

設計が肝心!

•既存PCサイトをRWD化するのは茨の道•モバイルファースト予めスマフォ向けに設計をする

Page 40: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

ブレイクポイント

•どのくらいの画面サイズでレイアウトを切り替えるかを設定

~640px 641px~

Page 41: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

InternetExplorerの取り扱い•RWDに対応できるのはIE9以上•CSS3などを用いた表現もIEではサポートしていないことが多い•グレイスフルデグラデーション古いIEではそれなりに

Page 42: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

ピクセルパーフェクトに

こだわらない

Page 43: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

専用サイト

OK メリット

•専用の画面設計が可能なため自由度が高い

•PC版との振り分けなどに手間がかかる

NG デメリット

Page 44: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

振り分け方法・URLルール

最初に決める!

•PCサイトとの振り分け方法•サーバーサイド or フロントサイド•URLのルール•同一URL or 別URL

Page 45: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

切り替えスイッチの実装•スマフォ版とPC版の表示を切り替えるボタン•表示モードをLocalStorage かCookie に保存する•LocalStorage が一般的だがJavaScript以外からアクセス不可•CookieはAndroidで難あり

Page 46: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

作らない①http://www.apple.com/jp

Page 47: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

作らない②http://canon.jp

Page 48: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

UI別の注意点

Page 49: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

カルーセル 固定配置 モーダルウィンドウ

Page 50: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

•縦から横にしたときどうするの?•ヒアリング時にiPhoneでしか確認していない•バグ報告があがってきたが提示された参考サイトでも同じことがおきている•そもそも採用したプラグインがバグってる

Page 51: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

カルーセル

•ループ処理、自動スクロールの有無•チラつきやガタつきを完全になくすのはかなり大変•画面の情報量が多いとバグりやすい

Page 52: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

固定配置

•CSSでもJSでも実装は大変•まさにバグのデパートあらゆるバグの原因になるのでもはや御法度レベル

Page 53: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

これまでに出会ったバグ•期待通りの場所に表示されない •レイヤーの表示順が崩れる•画面の一番上をタップすると画面の一番下にあるはずのリンクに反応する•フォームパーツの表示や文字入力が正常にできなくなる•描画パフォーマンスを著しく下げる

Page 54: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

モーダルウィンドウ

•モーダルウィンドウ内で文字入力などをするのは危険•モーダルウィンドウの大きさが画面サイズを超える場合にどうするか•シンプルな使い方にとどめる

Page 55: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

動画配信

Page 57: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

video要素でできないこと

•動画のダウンロードを禁止すること•ブラウザ内でインライン再生すること(iPhone, Android 2.x系)•シークバーやボリューム操作•ストリーミング配信

Page 58: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

動画配信のファイナルアンサー

YouTubeでみんな幸せ!

Page 59: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

DRMつきストリーミング配信

•専門の会社やASPに相談するhttp://www.stream.co.jp/ http://uliza.jp/

Page 60: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

トラブルシューティング

Page 61: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

viewport関連

Page 62: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

文字が大きくなる

NGOK

Page 63: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

発生条件 ~  Chrome$('head')

.append('<meta name="viewport" content="width=device-width, initial-scale=1">');

$('.foo').hide();

• viewport で initial-scale が未指定• JSでたくさんの要素を非表示にしてる• 他にも複合的な要因あり

Page 64: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

親要素に max-height: 999999px

参照: http://stackoverflow.com/questions/11289166/chrome-on-android-resizes-font

.foo{ max-height: 999999px;}

<div class="foo"><!-- !のp要素で現象が発生する場合 --><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. </p></div>

Page 65: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

form関連

Page 66: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

フォーカス時にズームするNGOK

Page 67: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

発生条件 ~6.x<p><input type="text"></p><p><textarea></textarea></p>

[type="text"],textarea { font-size: 14px;}

• テキストフィールドやテキストエリアなどの文字入力が可能なフォームパーツ• フォントサイズが16px未満

Page 68: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

font-size: 16px(相当)にする

参照: http://stackoverflow.com/questions/2989263/disable-auto-zoom-in-input-text-tag-safari-on-iphone

:root { /* ブラウザのデフォルトフォントサイズは16px */

font-size: 1em;} [type="text"],textarea { /* デフォルトフォントサイズを継承する */

font-size: 1rem;}

Page 69: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

端末回転後に表示が崩れる

NGOK

Page 70: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

発生条件 6.x~<input type="text" placeholder="プレースホルダ">

• テキストフィールドに placeholder属性 が指定されている• CSSで width が 100% に指定されている

[type="text"]{ width: 100%; box-sizing: border-box;}

Page 71: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

親要素に overflow: hidden

参照: http://stackoverflow.com/questions/12582788/placeholder-attribute-on-text-input-with-ios-6-from-landscape-to-portrait

/* input要素の親要素に指定する */form > p { overflow: hidden;} form [type="text"] { width: 100%; box-sizing: border-box;}

<form action=""><p><input type="text" placeholder="プレースホルダ"></p></form>

http://qiita.com/items/58621961c1f81b017e8d

Page 72: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

テキストフィールドがダブる

OK 本来のテキストフィールド

謎のテキストフィールド

NG

Page 73: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

発生条件 ~  2.3.x$('input').focus(function(){ window.scrollTo(0, $(this).offset().top);});

• フォーカス時に画面をスクロールさせる• JSでたくさんの要素のスタイルを変更する• 他にも複合的な要因あり

Page 74: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

無茶しない•フォーカス時のスクロールは禁物•translate3dなどでも発現する•スタイル変更の影響範囲を最小限に抑える

•4.x系ではテキスト入力自体ができなくなる端末も…

参照: http://blog.webcreativepark.net/2012/02/28-182744.html

Page 75: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

その他の困った

Page 76: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

明朝体で表示されてしまうNGOK

Page 77: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

発生条件 6.x~

• font-family が指定されていない

Page 78: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

font-familyを指定する

参照: http://ofsilvers.hateblo.jp/entry/font-family-for-ios6

/* スマートフォン専用サイトは"sans-serif"のみでも良い */body{ font-family: sans-serif;}

/* iOS,OSXの標準フォントは'Hiragino Kaku Gothic ProN' */body{ font-family: 'Hiragino Kaku Gothic ProN', Meiryo, sans-serif;}

Page 79: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

ページ内リンクが動かない

タップしても反応しない

NG

Page 80: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

発生条件 ~  4.x

<a href="#foo">↑ページの先頭へ</a>

• 同じアンカーをもう一度踏む• URLが変わらないとジャンプしない

Page 81: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

JSでスクロールさせる

参照: https://code.google.com/p/android/issues/detail?id=15437

$('a[href^="#"]').click(function(){ window.scrollTo(0, $(this.hash).offset().top);});

Page 82: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

スマホサイトの検証・確認方法

Page 83: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Step.1 Google Chrome

Page 84: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Dev Tools

Page 85: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Dev Tools

•UserAgentの偽装•ディスプレイサイズの変更•タッチイベントのシミュレート•GeolocationやDeviceOrientationのシミュレート

Page 87: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

QR-Code Tag Extension

https://chrome.google.com/webstore/detail/qr-code-tag-extension/bcfddoencoiedfjgepnlhcpfikgaogdg

Page 88: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Step.2 iOSシミュレーター

Page 89: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

iOSシミュレーター +Safari

Page 90: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Step.3 local server

•xampp•MAMP•python simplehttpserver

python -m SimpleHTTPServer 8000

Page 91: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Local Area Network

Page 92: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

IPアドレス•ifcofing / ipconfig•My IP Address

Page 93: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Adobe Edge Inspect CC

Page 94: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

iPhone+Safari

Page 95: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Charles

Page 96: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Charles

#hosts127.0.0.1 maboroshi.biz

Page 97: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

スマホにおけるパフォーマンス

Page 98: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

reflow : リフローrepaint : リペイント

Page 99: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

リフロー・リペイントとは

Page 100: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

…その前に

Page 101: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

レンダリングプロセスHTMLから

DOMツリー構築

CSSからスタイルルール構成

▲ レンダーツリー構築・配置

▲ 描画

Page 102: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

HTMLからDOMツリー構築

CSSからスタイルルール構成

▲ レンダーツリー構築・配置

▲ 描画

レンダリングプロセス

JSで変更

再構築再配置

リフロー

再描画

リペイント

Page 103: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

発生トリガー•DOMの追加・変更・削除

•スタイルの追加・変更・削除

•アニメーション•大きさや座標の取得•フォームの文字入力

•クラス属性の変更•フォントの変更•画面の回転•ウィンドウリサイズ•スクロール(!)

…などなど

Page 104: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

リフローは高負荷

Page 105: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

Androidでのバグ

リフローの処理落ち

Page 106: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

リフローを制する者

Androidを制する

Page 107: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

スタイル変更はクラス変更にまとめる

$('#foo').addClass('bar');

$('#foo').width(100).height(50).css('color': '#FC0');

#foo.bar{ width: 100px; height: 50px; color: #FC0;}

クラスの付け替えはできるだけ末端の要素で

Page 108: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

その他のポイント

•position: fixed を使わない•アニメーションさせる要素はposition: absolute にする

•アニメーションは60fpsを目標にする(Chromeのデベロッパーツールで計測可)

Page 110: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

まとめ

Page 111: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

痛し痒し

•デザインカンプを作り込みすぎるとAndroidではまりやすくなる

•プロトタイプを作って回していく•ウォーターフォール型のワークフローだと辛い

Page 112: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

終わらない戦い

•今後もOSや端末ごとのバグや挙動の差違は増え続ける

•スマフォに無茶させない•モバイルファーストな設計が重要

Page 113: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

線引きが重要•どこまで対応するのか何を優先するのか

•予算や納期を全力で確保する•まぼろしでは見積もりもアジャイル

Page 114: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

ピクセルパーフェクトに

こだわらない

Page 115: スマートフォンサイト制作  よくあるトラブルと 解決方法・回避方法

ありがとうございました

木村哲朗 / 西畑一馬

スマートフォンサイト制作よくあるトラブルと解決方法・回避方法