本文へ移動

ホーム / デザイナー / 第2部 Web とアプリの実装の制約

第2部 Web とアプリの実装の制約・第5章

iOS・Android の作法

★★☆ 重要8トピック・面接 4問

スマホのアプリは、OS ごとの作法と制約の上で動きます。この章では、iOS と Android の違い、画面の端と単位、許可の求め方、アプリの更新の仕組みを押さえます。

5.1HIG と Material Design

用語★★☆ 重要
ひとことで

それぞれの OS の標準の操作・部品・戻る動作に合わせると、迷わず使える。

iOS には Apple の Human Interface Guidelines(HIG)、Android には Google の Material Design という公式の指針があります。OS の標準の部品や操作に合わせると、ユーザーは説明なしで使え、エンジニアも標準の部品で早く作れます。独自の部品は作る手間に加えて、アクセシビリティや OS の更新への対応も自前になります。

iOSAndroid‹ 戻る画面名←画面名ホーム検索通知設定ホーム検索通知設定+左端からスワイプ端からスワイプ左上のボタン・左端スワイプで戻るOS の戻る操作(端のスワイプ・ボタン)
iOS と Android のナビゲーションの違い(主な例)
項目iOSAndroid
戻る画面の左上の戻るボタン・画面の左端からのスワイプOS の「戻る」操作(ジェスチャーかボタン)。アプリ内の左上の矢印もある
主な移動画面下のタブバー画面下のナビゲーションバー(タブ)。大きい画面ではナビゲーションレール
大きさの単位pt(ポイント)dp(密度に依存しないピクセル)
タップの大きさの目安44×44pt 以上48×48dp 以上
下から出る画面シートボトムシート

1つのデザインを両方の OS に使う場合も、戻る操作・アイコン・部品の細部を OS ごとに合わせるかを、最初にエンジニアと決めます。全部をそろえるとどちらの OS でも少し不自然になり、全部を分けるとデザインと実装の手間が倍になるので、「操作の作法は OS に合わせ、色・文字・情報の構成は共通」がよくある落としどころです。

面接ではこう答える

iOS には Apple の Human Interface Guidelines、Android には Google の Material Design という公式の指針があります。OS の標準の部品と操作に合わせると、ユーザーは説明なしで使え、エンジニアも標準の部品で早く作れます。独自の部品は、作る手間に加えて、アクセシビリティや OS の更新への対応も自前になります。両方の OS に1つのデザインを使うときは、操作の作法は OS に合わせ、色や情報の構成は共通にすることが多いです。

ひとことで

アプリの画面は積み重なりで管理され、戻る操作で上から閉じる。Android は OS の戻る操作がいつでも使え、iOS は左上のボタンと左端からのスワイプが基本。

画面は「積み重なり」で、戻ると上から1枚ずつ閉じる一覧詳細編集(シート)戻る操作で何が閉じるか1. 開いているシート・ダイアログ2. いまの画面(詳細 → 一覧)3. 入力の途中なら確認を出す
戻る操作は、積み重なった画面を上から閉じる

ナビゲーションの違いで特に大事なのが「戻る」です。Android ではユーザーがいつでも OS の戻る操作を使うので、ダイアログやシートを開いているときに戻ると何が閉じるか、入力の途中で戻ったら確認を出すか、を決めておきます。iOS ではモーダル(全面に重なる画面)に戻るスワイプが効かない場面があるので、閉じるボタンや「キャンセル」を必ず置きます。

決めること例
戻ったときの行き先通知から詳細を開いたとき、戻ると一覧か、アプリを閉じるか
シート・ダイアログ戻る操作で閉じる。入力の途中なら「破棄しますか?」の確認
タブの切り替えタブごとに画面の積み重なりを持つか(別のタブから戻ったときの状態)
モーダル(全面)閉じる・キャンセルのボタンを置く
外部からの起動リンクや通知から途中の画面を開いたときの戻り先

面接ではこう答える

アプリの画面は、一覧の上に詳細、その上に編集のシート、というように積み重なりで管理され、戻る操作で上から1枚ずつ閉じます。Android ではユーザーがいつでも OS の戻る操作を使うので、シートやダイアログを開いているときに何が閉じるか、入力の途中なら確認を出すかを決めておきます。iOS は左上の戻るボタンと画面の左端からのスワイプが基本で、全面のモーダルではスワイプで戻れないことがあるので、閉じるボタンを必ず置きます。

ひとことで

ステータスバー・カメラの切り欠き・ホームインジケーターなどを避けた、操作するものを置いてよい範囲。背景は端まで広げ、ボタンや文字は内側に置く。

セーフエリア上:ステータスバー・カメラの切り欠き→ 大事な文字やボタンを置かない内側:ボタン・文字を置く範囲背景の色や画像は端まで広げてよい下:ホームインジケーター(ジェスチャーの領域)→ 下のボタンはこの上に置く
セーフエリア:操作するものは内側に置く

スマホの画面の上下(横向きなら左右)には、ステータスバー・カメラの切り欠き・ホームインジケーターなどがあります。これらを避けた範囲をセーフエリアと呼びます。

場所気をつけること
画面の上時刻・電池の表示とカメラの切り欠き。文字やボタンを重ねない
画面の下ホームインジケーター(スワイプでホームに戻る領域)。下に固定するボタンはこの上に
横向き左右に切り欠きが来る。横向きを許すかどうかも決める
背景色や画像は端まで広げてよい(切れて見えないように)
キーボードキーボードが出ると画面の下半分が隠れる。下のボタンと入力欄が隠れないか

端末によって切り欠きの形や大きさは違うので、数値を決め打ちにせず「セーフエリアの内側から ○px」とデザインに書きます。Web では env(safe-area-inset-bottom) などで、端末ごとのセーフエリアの幅を受け取れます。

面接ではこう答える

セーフエリアは、ステータスバーやカメラの切り欠き、画面下のホームインジケーターなどを避けた、ボタンや文字を置いてよい範囲です。背景の色や画像は画面の端まで広げてよいですが、押すものや読ませるものはセーフエリアの内側に置きます。画面の下に固定するボタンは、ホームインジケーターの上に置かないと、OS のジェスチャーとぶつかります。Web でもスマホで全面表示にする場合は、CSS でセーフエリアの幅を受け取って余白にできます。

ひとことで

iOS は pt、Android は dp という、画面の密度に依存しない単位で大きさを決める。実際の画素の数は端末の密度(2x・3x など)で変わる。

同じ 1pt・1dp でも、画面の画素の数は端末で違う1x1pt に 1×1 画素2x1pt に 2×2 画素3x1pt に 3×3 画素デザインは pt・dp で描き、画像は 2x・3x なども書き出す(SVG なら1つでよい)
論理的な単位(pt・dp)と画面の密度

スマホの画面は、同じ大きさでも端末によって画素の細かさ(密度)が違います。そこで、密度に依存しない単位で大きさを決めます。

iOSAndroid
単位pt(ポイント)dp(密度に依存しないピクセル)。文字は sp
密度の段階1x・2x・3xmdpi(1x)・hdpi(1.5x)・xhdpi(2x)・xxhdpi(3x)・xxxhdpi(4x)
画像の渡し方@2x・@3x の画像か、PDF・SVG のベクター密度ごとの画像か、ベクター(Vector Drawable)
タップの大きさの目安44×44pt 以上48×48dp 以上

Android の sp は文字のための単位で、ユーザーのフォントサイズの設定で大きくなります。Web の CSS の px も、実際の画素ではなく論理的な単位です。デザインツールの 1px は、これらの論理的な単位の1つ分として扱うのが基本です。

面接ではこう答える

iOS では pt、Android では dp という単位で大きさを決めます。どちらも画面の密度に依存しない単位で、同じ 1pt でも、高密度の画面では2倍や3倍の画素で描かれます。デザインはこの単位で描き、写真やイラストの画像は 2x・3x など密度ごとに書き出すか、アイコンは SVG などの拡大しても劣化しない形式で渡します。Web の CSS の px もこれと同じ考え方の論理的な単位です。

日付の選択や共有のように、OS が標準で用意している画面や部品があります。標準のものを使うと、ユーザーは慣れた操作で使え、アクセシビリティや OS の更新への対応も OS に任せられます。独自に作ると、見た目は自由になりますが、作る手間と保守の手間が大きく増えます。

部品・画面標準を使う利点独自にすると増えること
日付・時刻の選択地域の書き方・読み上げに対応済み曜日・祝日・地域の書き方・読み上げを全部自前で
共有(シェア)ユーザーが入れているアプリ全部に送れる送り先ごとの対応
写真の選択OS の権限の仕組み(選んだ写真だけ渡す)に沿う権限の扱いが複雑になる
シート・ボトムシートOS の閉じ方・ジェスチャーと一致つまむ・閉じる動きの調整
ダイアログ(確認)OS の見た目と読み上げフォーカスの扱い・戻る操作
スイッチ・選択肢OS ごとの見た目と操作感両方の OS の作法を再現

デザインで独自の見た目にしたいときは、「標準の部品の色や文字だけ変える」「標準の部品を使い、周りを工夫する」から検討すると、手間を抑えられます。どこまで標準に合わせるかは、プロダクトの最初にエンジニアと方針を決めておきます。

アプリエンジニア向け:端末と OS の多様性

ぶつかりやすい・画面の左端からのスワイプ(OS の戻る)・画面の下端のスワイプ(ホームへ)・上からの引き下げ(通知の画面)ぶつからない工夫・横スワイプは画面の内側で使う・下に固定するボタンは少し上に・ジェスチャーと同じ操作のボタンも置く
アプリのジェスチャーは OS の操作とぶつかることがある

スワイプ・長押し・つまむなどのジェスチャーは便利ですが、見えないので気づかれにくく、OS の操作とぶつかることもあります。

ジェスチャー注意
横スワイプ(削除・切り替え)画面の端からのスワイプは OS の戻る操作になることがある。内側で使う
引き下げて更新一覧の上で使うのが一般的。ほかの場所で引き下げに別の意味を持たせない
長押し気づかれにくい。メニューのボタンからも同じ操作ができるように
つまむ(拡大)画像や地図向け。文字の拡大は OS の設定に任せる

ジェスチャーだけでできる操作は、キーボードや支援技術を使う人には使えないことがあります。WCAG でも、複数の指や軌跡を使う操作には、1本の指で押すだけの代わりの手段を用意することが求められています。

ひとことで

通知・位置情報・カメラなどは OS のダイアログでユーザーの許可を得る。断られると再び出せないことが多いので、使う場面で理由を先に伝える。

許可を求める流れ(例)使う場面になる例:近くの店を探す自前の説明なぜ必要かOS のダイアログ許可する・しない断られたら設定への案内OS のダイアログの文言と見た目は変えられない。断られると、もう一度は出せないことが多い
許可は「必要になった場面で、理由を先に」

通知・位置情報・カメラ・写真・連絡先などは、OS が出すダイアログでユーザーの許可を得ます。OS のダイアログは、見た目もボタンの文言もアプリ側では変えられません(説明文の一部だけ書けます)。

決めることよい例
いつ求めるか起動直後にまとめてではなく、その機能を使う場面で
先に説明するか自前の説明の画面で「なぜ必要か・何に使うか」を伝えてから OS のダイアログへ
どこまで求めるか位置情報は「使用中のみ」で足りるなら常に、を求めない
断られたときその機能なしでも使える形・設定アプリへの案内
許可の状態の表示設定画面などで、今の許可の状態と変え方が分かる

一度断られると、アプリから同じダイアログを再び出せないことが多く、ユーザーが設定アプリで変えるしかなくなります。だからこそ、最初に出す場面とその前の説明が大事です。

面接ではこう答える

通知や位置情報、カメラなどを使うには、OS のダイアログでユーザーの許可を得る必要があります。このダイアログの見た目や文言はアプリ側で自由に変えられず、一度断られると、アプリからもう一度出せないことが多いです。そこで、起動直後にまとめて求めるのではなく、その機能を使う場面で、なぜ必要かを自前の画面で先に説明してから OS のダイアログを出すようにしています。断られたときは、機能の代わりの使い方か、設定から変える方法を案内します。

ひとことで

アプリはストアの審査を通って公開され、ユーザーが更新するまで古い版が使われ続ける。Web のようにすぐ直せない前提でデザインする。

Web はすぐ届くが、アプリは届くまでに段階があるWeb直してデプロイすぐ全員に届くアプリ直してビルドストアの審査公開ユーザーが更新更新しないユーザーには古い版が残る。古い版でも困らないようにしておく
Web とアプリの、直してから届くまでの違い

アプリを直してユーザーに届けるには、Web より多くの段階があります。

違いWebアプリ
公開までデプロイすればすぐストアの審査を通ってから(時間がかかることがある)
ユーザーに届くまで次に開いたときユーザーが更新したとき(自動更新を切っている人もいる)
古い版残らないしばらく残る。強制的に更新を求める仕組みを作ることもある
段階的な公開フィーチャーフラグで一部の人だけにストアの段階的な公開、またはサーバーからの設定

デザインでは、①リリース前に実機で確認する時間を計画に入れる、②お知らせ・バナーなど変わりやすい部分はサーバーから内容を変えられる形にするかを相談する、③古い版のアプリに新しい種類のデータが届いても崩れない(知らない種類は表示しない、など)ことを確かめる、の3つを意識します。

面接ではこう答える

Web はサーバーに新しい版を置けばすぐ全員に届きますが、アプリはビルドしてストアの審査を通り、公開された後、ユーザーが更新して初めて届きます。更新しないユーザーには古い版が残るので、アプリの不具合やデザインの誤りはすぐには消えません。そのため、リリース前の確認を厚くすること、サーバーからの設定で表示を切り替えられる部分を作っておくこと、古い版でも新しいデータで崩れないことをエンジニアと確かめています。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • OS の公式の指針(HIG・Material Design)と標準の部品に合わせると、迷わず使え、早く作れる
  • 戻る操作・セーフエリア・ジェスチャーは OS ごとの違いが大きい
  • アプリは審査と古い版のユーザーがいるので、Web より「出してから直す」に時間がかかる
  • HIG と Material Design:それぞれの OS の標準の操作・部品・戻る動作に合わせると、迷わず使える。
  • 戻る操作とナビゲーション:アプリの画面は積み重なりで管理され、戻る操作で上から閉じる。Android は OS の戻る操作がいつでも使え、iOS は左上のボタンと左端からのスワイプが基本。
  • セーフエリアと画面の端:ステータスバー・カメラの切り欠き・ホームインジケーターなどを避けた、操作するものを置いてよい範囲。背景は端まで広げ、ボタンや文字は内側に置く。
  • pt・dp と画面の密度(2x・3x):iOS は pt、Android は dp という、画面の密度に依存しない単位で大きさを決める。実際の画素の数は端末の密度(2x・3x など)で変わる。
  • 通知・位置情報などの許可の求め方:通知・位置情報・カメラなどは OS のダイアログでユーザーの許可を得る。断られると再び出せないことが多いので、使う場面で理由を先に伝える。
  • アプリの更新とストアの審査:アプリはストアの審査を通って公開され、ユーザーが更新するまで古い版が使われ続ける。Web のようにすぐ直せない前提でデザインする。

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1iOS と Android で同じデザインを使うとき、どこを OS ごとに変えますか?

模範回答

基本の見た目や情報の構成は共通にして、操作の作法に関わるところを OS に合わせることが多いです。いちばん大きいのは「戻る」で、Android は OS の戻る操作がいつでも使えるので、シートやダイアログを開いているときに何が閉じるかを決めます。iOS は左上の戻るボタンと左端からのスワイプです。

ほかに、上のバーのタイトルの位置、日付の選択や共有などの OS 標準の画面、アイコンの形、タップの大きさの目安(iOS は 44pt、Android は 48dp)などです。独自の部品にすると、作る手間に加えて、アクセシビリティや OS の更新への対応も自前になるので、変えない部分も理由を持って決めます。

深掘りされたら

  • ブランドの統一感と OS の作法がぶつかったら、どう決めますか?

見られているポイントHIG と Material の違い、特に戻る操作

Q2通知の許可は、どのタイミングで求めますか?

模範回答

起動直後にまとめて求めるのではなく、通知が役に立つ場面で求めます。例えば、注文した商品の発送を知らせる通知なら、注文が終わった画面で「発送されたらお知らせします」と説明してから、OS のダイアログを出します。

OS のダイアログは文言や見た目を変えられず、一度断られるとアプリから再び出せないことが多いので、先に自前の画面で理由を伝えることが大事です。断られた場合も、機能はそのまま使えるようにし、設定画面で今の状態と変え方が分かるようにしておきます。

深掘りされたら

  • 許可された割合が低いとき、何を見直しますか?

見られているポイントOS の制約(変えられない・再表示できない)を知ったうえでの設計

Q3Android の戻る操作について、デザインで決めておくことは何ですか?

模範回答

Android ではユーザーがいつでも OS の戻る操作を使うので、どの状態で戻ったら何が起きるかを決めておきます。シートやダイアログが開いていればそれを閉じる、入力の途中なら破棄の確認を出す、通知やリンクから途中の画面を開いたときに戻るとどこへ行くか、などです。

画面遷移の図に戻り先まで書いておくと、エンジニアが迷わずに済みます。iOS では左上の戻るボタンと左端からのスワイプが基本で、全面のモーダルには閉じるボタンを必ず置く、という違いもあわせて伝えます。

深掘りされたら

  • タブを切り替えた後に戻ると、どうなるのがよいですか?

見られているポイント戻る操作の行き先を状態ごとに決められるか

Q4アプリのデザインで、Web と違って気をつけていることは何ですか?

模範回答

すぐに直せない、という点です。アプリはストアの審査を通って公開され、ユーザーが更新するまで古い版が使われ続けます。デザインの誤りが見つかっても、Web のようにその日のうちに全員に届けることはできません。

そのため、リリース前に実機で確認する時間を計画に入れ、変わりやすいお知らせなどはサーバーから内容を変えられる形にするかをエンジニアと相談します。また、古い版のアプリに新しい種類のデータが届いても崩れないよう、知らない種類のときの表示も決めておきます。

深掘りされたら

  • 段階的な公開はどう使いますか?

見られているポイント審査・更新・古い版という、アプリ特有の制約を理解しているか