iPhone5 と iOS6 での HTML5開発についてあれこれ
本日、iOS6がリリースされましたね。明日は iPhone5 の発売日。Mobile Safari も大幅にアップデートされて、Web開発者にとって非常に気になります。
iPhone 5 and iOS 6 for HTML5 developers, a big step forward: web inspector, new APIs and more で素晴らしいまとめがありましたので、簡単に紹介したいと思います。
iPhone5
新しい画面サイズ
新しい 4インチ画面になり、解像度は WDVGA (Wide Double VGA) 640×1136px になりました。横幅はこれまでと変わりませんが、高さが 176px 増えました。
新しいシミュレーター
Xcode4が新しくなり、iOS6のシミュレータが出ました。Mac AppStore からダウンロードできます。
何をすべきか
画面サイズに依存したWebサイト(アプリ)は注意が必要です。縦幅が足りなくなります。Google Mapsの例のように、下が切れます。
レスポンシブWebデザインを使っていても不十分です。通常RWDは横幅に対して使われますが縦には使われていません。
デバイスの検出
サーバーサイドでiPhone5を検出する方法はありません。userAgent は iOS6 としか判定できません。iOS6 の載った iPhone4/4s と区別不能です。
しかし、JavaScript か メディアクエリーを使えば判定できます。スクリーンの高さが 568px の時は 4インチディスプレイになります。
isPhone4inches = (window.screen.height==568);
また、CSSメディアクエリーとレスポンシブWebデザインのテクニックでiPhone5を判定できます。
@media (device-height: 568px) and (-webkit-min-device-pixel-ratio: 2) { /* iPhone 5 or iPod Touch 5th generation */ }
ホームスクリーンWebアプリ
ホームにWebアプリを追加すると、上下にレターボックスが表示され、今までの画面サイズと同じように表示されます。しかし、4インチに対応したWebサイト(アプリ)でもこうなってしまう問題があります。
iOS6 での HTML5
ファイル管理
Web Audoi API
Smart App Banner
CSS3 Filter
CSS3 Cross-Fade
フルスクリーン Safari
Animation Timing API
CSS Image Set
Passbook クーポンとパスの配布
Storage API と WebAppの更新
- Application Cache の制限が 25Mb に増えました。(これまでは約5M)
- ホームスクリーンWebAppは独自のストレージサンドボックスを持つようになりました。
(追加する度に新しいストレージを持つようになったため、複数アプリの切り替えにはよいニュースです。Webサイトとホームの間でデータのやりとりをするには問題があります。) - ホームスクリーンWebAppのタイトルが定義できるようになりました。これまではサイトのページタイトルが使われていたのが、別名を定義できるようになりました。
WebView の更新
リモート デバッギング
- HTML、CSS の確認とライブ変更
- ストレージへのアクセス: クッキー、Local Storage、Session Storage、SQL Database。
- webapp のプロファイル: ネットワークリクエスト、レイアウト&レンダリング、JavaScript、イベントのパフォーマンスレポート。パフォーマンスツールの大きな進歩です。
- DOMの検索
- 全ての警告とエラーを一カ所で確認
- worker thread の管理
- JavaScript ブレークポイントの管理、キャッチしない例外のブレーク
- コンソールへのアクセスとJavaScriptの実行
- JavaScriptコードのデバッグ
- 対象の要素をタッチしてインスペクトする
その他の小さなアップデート
- JavaScriptのパフォーマンスが 20%向上
- Google Maps が iOS6 から使えなくなる。http://maps.google.com へのアクセスは ネイティブアプリではなく、GoogleMapsのWebサイトへリダイレクトされる。そこで、ネイティブマップアプリを開く新しいURLスキーマができた。maps:?=<query> queryはまさに検索文字列か、緯度経度をいれる。ルートナビゲーションを開始するパラメータは次のようになる。maps:?saddr=<source>&daddr=<destination>
- XHR2: XMLHttpRequestProgressEvent をサポート
- input の autocomplete を公式サポート
- DOM4 の Mutation Observers を実装。WebKitMutationObserver で DOMの変更をキャッチできる。
- -webkit-transform: preserve-3d でのハードウェアアクセラレーションの廃止。パフォーマンステクニックとしてこれを使うことは止めるべきだ。
- window.selection による Selection API
- <keygen> 要素
- Canvas アップデート: createImageData の引数は1つになり、二つの関数が増えた。高解像度対応の、webkitGetImageDataHD と webkitPutImageDataHD。
- SVGプロセッサとイベントの更新
- 新しい CSS viewport が結びつけられた。 vh (viewport height), vw (viewport width) と、vmin(vw と vh の最小値)
- CSS3 Exclusions と CSS Regions が β1で利用可能だったが、最終バージョンで削除された。
- iCloud タブ。Mac、iPhone、iPadでタブを同期することが出来る。そのため同じURLが全てのデバイスへ配布される。モバイルWebのアーキテクチャに気をつける必要がある。
以上、 iPhone 5 and iOS 6 for HTML5 developers, a big step forward: web inspector, new APIs and more の紹介でした!あとちょっと、「まだ待っているもの」、「最後に」と続きますが、そこは割愛。気になる方は是非原文を読んで下さい。かなり意訳&はしょったところもありますので、ご指摘&コメント歓迎です。
個人的に今回の目玉はやはり リモートWebインスペクターに限りますね!特にプロファイラとブレークポイントが泣けるほど嬉しい!これを切望したWeb開発者も大勢いると思います。