📌
PWAのManifestにおけるorientationメンバの挙動メモ
を読んでもよくわからなかったので調査したことをメモ。素人の雑記。
結論
深く考えないのであれば、指定しないほうが良い。Androidでしか有効でないメンバだし。
orientationは何をするか
アプリの向きを固定する。その方向を以下のワードで指定する。
-
landscape
横向きで固定する。ユーザーは縦にできない。180度回転はできる。 -
landscape-primary
横向きであるが、より自然な横向き(primary)である。つまり、スマートフォンの縦方向を考慮したうえで、自然な横方向(音量ボタンが上みたいな)に固定される。端末によってはその設定がないので無視されうるらしい。ユーザーは縦にできず、180度回転もできなくなる。 -
landscape-secondary
自然でないほうの横向き。あとは同じ。 -
portrait
縦向きで固定する。(以下略) -
portrait-primary
縦向きで固定するが、上下方向が自然な向きになる。カメラが上になり、USBポートが下になるみたいな。 -
portrait-secondary
ノッチを下にしたい変人向けの設定ということになる。 -
natural
最も自然な向きに固定される。スマートフォンの場合、portrait-primary
と同じになることが多いのではないか。ユーザーは一切の方位変更ができない。 -
any
全方位に固定することを許可する。ユーザはスマホを傾けることで任意の方位に向きを変えることができる。
これらはThe Screen Orientation APIのOrientationLockTypeと同一であるそうだ。
端末によっては指定した設定が無視されることがある。極端な例はデスクトップPCのモニタであり、すべて無視される。モバイルデバイスでも、primary
やsecondary
も無視されやすそうだ。ノッチがあるデバイスでは、portrait-secondary
方位への回転がそもそもシステム上許可されていない場合もあるようだ。
自動回転の設定をorientationは無視する。
多くのスマートフォンには自動回転のON/OFF設定があるが、orientationはこれをすべて無視する。例えばany
を指定すると、自動回転がOFFでも回転が行われる。当たり前だが、natural
を指定すると、自動回転がONでもビクともしなくなる。
設定しないほうがいいと思う理由
まず、アプリはユーザーの自動回転設定を尊重すべきである。これを実現する答えはorientationメンバを指定しないことである。
また、PWAのマニフェストはデバイスの種類ごとに設定できない。スマートフォンではportrait-primary
でいいかもしれないが、タブレットでそれは不便ではないか?向きの制御には他の方法もあると思うので、マニフェストで指定するのは悪手だと思う。
Discussion