BrowserStackでiPhoneのSafeArea対応の動作確認をする

2021.06.02

吉川@広島です。

Webフロントエンド開発をしている時、iPhoneのノッチ有りモデルに対するSafeArea対応の動作確認はなかなか面倒です。

私自身はAndroidユーザなので実機が手元にありません。また、仮に実機があったとしても開発作業はMacで行っているわけで、MacとiPhoneを交互に見ながら開発・・・というのは結構な手間です。

そこで本記事ではBrowserStackというサービスを使ってSafeArea対応の確認ができることを紹介します。比較としてXCodeのiPhoneシミュレータでの確認にも触れます。

環境

  • XCode 12.1
  • Parcel 1.12.4

確認用環境を作る

SafeArea対応をしたHTMLとCSSを用意

テスト用に以下のファイルを用意しました。

<!-- index.html -->

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8" >
    <meta name="viewport" content="viewport-fit=cover, width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <link rel="stylesheet" href="./style.css">
</head>
<body>
    <div class="container">
        <div class="content"><h1>コンテンツ</h1></div>
    </div>
</body>
</html>
/* style.css */

html {
    height: 100%;
}

body {
    height: 100%;
    margin: 0;
}

h1 {
    margin: 0;
}

.container {
    height: 100%;

    /* SafeArea対応 */
    padding-top: constant(safe-area-inset-top);
    padding-bottom: constant(safe-area-inset-bottom);
    padding-left: constant(safe-area-inset-left);
    padding-right: constant(safe-area-inset-right);
    padding-top: env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);
    padding-left: env(safe-area-inset-left);
    padding-right: env(safe-area-inset-right);
}

.content {
    width: 100%;
    height: 100%;
    color: white;
    background-color: red;
}

開発用サーバを立ち上げる

テスト用のサーバが立ち上がればなんでも良いのですが、今回はParcelを使います。

# Parcelのインストール
yarn add -D parcel

# 用意したindex.htmlをエントリポイントに指定し、ポート3000で開発用サーバを立ち上げる
yarn parcel ./index.html --port 3000

ngrokで公開する

後述するBrowserStackから動作確認できるようにngrokで公開します。

ngrokを使ってローカル開発中のVueアプリをHTTPSで公開する

ngrok http 3000

上のコマンド実行で Forwarding https://xxxxxxxxxxx.ngrok.io -> http://localhost:3000 のように出力があるので https://xxxxxxxxxxx.ngrok.io のURLを控えておきます。

方法1: XCodeのシミュレータを使う

まずはXCodeのiPhoneシミュレータを使って確認してみます。

iPhone SE

iPhoneSEはノッチがない機種なので、SafeArea対応のCSSは特に効いていないですね。

iPhone 12

iPhone12はノッチがある機種です。左右がSafeAreaのpaddingの分だけ白くなっており、CSS記述が効いているのがわかります。SafeArea対応をしっかり確認できていますね。

方法2: BrowserStackを利用する

続いてBrowserStackを利用する方法です。

こちらを利用するとiPhoneを含めた様々な機種のブラウザの挙動を簡単に確認することができます。

Most Reliable App & Cross Browser Testing Platform | BrowserStack

Give your users a seamless experience by testing on 2000+ real devices and browsers. Don't compromise with emulators and simulators.

てっきりBrowserStackはシミュレータを提供するサービスだと思っていたのですが、「2000以上の 実際のデバイス やブラウザでテストすることで、ユーザーにシームレスな体験を提供します。エミュレータやシミュレータで妥協する必要はありません。」ということなので、実機と遜色ない動作確認ができるようです。

料金表は下記になります。

BrowserStack Subscription Plans

それでは確認していきます。

iPhone SE

iPhoneSEはノッチがない機種なので、SafeArea対応のCSSは効かないですね。これは期待通りです。

iPhone X

iPhoneXはノッチがある機種です。こちらも期待通り、しっかりとSafeArea対応が効いているのがわかります。

まとめ

XCodeのシミュレータを使う方法は無料というメリットはありますが、Mac限定という条件が付いてきます。また、シミュレータはそれなりにMacのリソースを消費するので、元のスペックによっては全体の動作が重くなることもあるかもしれません。

この点、ブラウザ上で端末を遠隔操作するBrowserStackはMac以外のOSでも使用できますし、端末への負担も相対的に少ないというメリットがあるかと思います。

フリートライアルもあるようなので、興味が出た方は一度試してみては如何でしょうか。

本文紹介以外の参考記事