HTML5Experts.jp

iOS7におけるMobile Safariの主な変更点

Safari on iOS7

iOS7上のSafariがどのように変化したかについて、Maximiliano Firtman氏(@firt)がブログで詳細に解説しています。 この記事では、同氏のブログから、Web制作者/開発者にとって重要と思われる情報を引用して、Web技術者にとっても大きな影響を持つこのアップデートについて紹介していきたいと思います。

元記事は非常に長大、かつ詳細なため、全てのポイントを紹介することはとてもできません。素晴らしい記事ですので、関心のある人は、ぜひ元記事を参照してください。

ちなみに、最初にガッカリさせることになってしまいますが、@firt氏によれば、「1.0以降最もバグの多いバージョンだ」(this is the buggiest Safari version since 1.0)だそうです…

UIが大幅に変更、フルスクリーン(に近いサイズ)がデフォルトに

Webブラウジングをしている最中は、フルスクリーンがデフォルトになりました。ホスト名部分をクリックしたり、トップに戻るようスクロールを始めた時に、URLバーとツールバーが表示されます。

Webページはフルスクリーンに近いサイズで表示される

ユーザーの操作に応じてツールバーが出現する

問題は、ツールバーの表示/非表示が切り替わった際にresizeイベントが発生せず、メディアクエリなどでも検知できないことです。これにより、画面の高さが変わったことをアプリが検知できないということになり、なるべく固定の幅や高さを確保しようとするゲームなどでは、時に大きな問題になります。 また、ネイティブではないスクロール(iframeやoverflow:scroll、JavaScriptベースのスクロールなど)を使用しているアプリの場合は、ツールバーが表示されっぱなしになってしまう事があります。

Appleのサイトもネイティブのスクロールを使用していないためか、URLバーとツールバーが表示され続ける

新しいジェスチャー

新しいSafariでは、画面端からスワイプするというジェスチャーに操作が割り当てられました。 画面の下端から上に向かってジェスチャーすることでコントロールセンターを表示でき、画面の横端から右/左にスワイプすることで「戻る/進む」といったナビゲーションを行えます。

スワイプ操作を取り扱っているWebアプリは、画面端に適切なマージンを設けていない限り、これらのジェスチャーと被ってしまう可能性があります。

また、右・左のスワイプ操作に割り当てられている「戻る/進む」と言ったナビゲーションは、ナビゲーション前後のページが重ねて表示されます。こうした動作は、履歴管理API(History API)を用いる単一ページアプリケーションでは多少問題になるかもしれません。同じアプリのUIが重ねて表示されることになるためです。

History APIを使用するアプリケーションでは、同じアプリのUIが重ねて表示されてしまう

HTML5関連の変更

JavaScript API関連の変更

CSS関連の変更

終わりに

iOS 7のMobile Safariは、Indexed Database APIやWebGL、WebRTCなどの期待される機能は搭載されませんでしたが、細かいアップデートがたくさん行われています。 特に、track要素やCSS Flexboxのサポートは嬉しいですね。 ただ、バグが多いらしいので、Web開発者は頭を悩ませる日々が続きそうです…

この記事では、Webページを記述する際にポイントとなりそうな変更点に絞ってご紹介しました。 繰り返しになりますが、この記事の元になったMaximiliano Firtman氏(@firt)のブログ記事は素晴らしいリソースですので、ぜひ一度目を通してみてください。