せっかくデザインしたものがエンジニアに「実装コストが高いので、標準部品で実装する」言われることが、モバイルアプリデザインするデザイナーさん誰でも経験したことがあると思います。

コストのため仕方がありませんが、実に残念なことでしょう。そうならないように最初からOSを考慮した上でデザインしていきましょう。

と言われても、自分のデバイスはiOSとAndroidのどれかひとつで、片方の常識があるとは言え、もう片方は全然わからない場合が多いと思います。Human Interface GuidelinesMaterial Designを読むべきかもしれませんが、量が多いし、抽象的でわかりにくいところもあるし、具体的でややこし過ぎるところもあります。

公式が提供しているデザインリソース(iOS | Android)があり、中の部品は大体実装コストが低い標準部品1ですので、OSの常識を把握するには適切だと思います。

では早速見ていきましょう。

トップバー

iOS(Navigation Bar Android(App Bar)
iOS(Navigation Bar) Android(App Bar)

背景色

iOS側は固定な色で、Android側はメインな色になるのが普通ということがわかります。とは言え色だけですので、実装の配慮する必要がありません。デザイン上の必要がなければ、普通の方がユーザーに対して違和感が少ないです。

タイトルの位置

iOS側は中央揃えで、Android側は左寄せです。タイトル自体があまり変わりがありませんが、Android側の左のボタンはひとつまでです。

ボトムバー

iOS(Toolbar) Android(App Bar)
iOS(Toolbar) Android(App Bar)

背景色はトップバーと同じですので、省略します。

ボタンの比重

iOS側のボタンの比重が統一で、Android側にfloating action button(FAB)というMaterial Design特有なボタンをひとつまで嵌めることが可能で、違う比重が表せます。

ボタン

iOS text button Android text button
iOS icon button Android icon text Button
Add to Siri button Android outlined button
Added to Siri button Android Contrained Button
Sign in with Apple button Toggle
Pay with Apple Pay button Floating action button
iOS Android

Android側の多様なスタイルと比べ、iOS側は二種類しかなく、残ったのは専用ボタンです。ボタンなんてカスタマイズしてもコストあまりかからないと思われがちですが、非活性や押さている状態のデザインやアクセシビリティも考慮しなければなりませんので、デザイン上の必要がなければ、標準の方が無難です。

アラート、アクションシート|ダイアログ

Alert Dialog
Three options alert No title dialog
Text field alert  
Action sheet  
iOS Android

iOS側はアラートとボトムシート二種類があり、ボタンがデフォルト以外におすすめ、破壊的、非活性のスタイルがあります。それに対して、Android側はあまりバリエーションがないように見えますが、リソースに入っていないだけです。こちらを参考してみればわかると思いますが、結構バリエーションがあります2

テキストフィールド

iOS text field Android text field
  Android text field with helper text
  Android text field with error
  Android outlined text field
iOS Android

iOS側はクリアボタンしかありません。そのかわりにAndroid側はテキストフィールドによくあるユースケースをほぼ網羅できています。エラー表示について実装コストを考慮してiOS側はアラートを採用しがちですが、Android側はテキストフィールドを活用しましょう。

スライダー

iOS slider Android slider
  Android discret slider
  Android slider with value indicator
iOS Android

iOS側はただのスライダーで、それ以上は全部自前で実装する必要があります。それに比べ、Android側は目盛りと現在の値を表示できます。

セグメンテッドコントロール|タブ

iOS segmented control Android tabs
  Android scrollable tabs
iOS(Segmented Control) Android(Tabs)

ボトムナビゲーションと似たような機能です。元々Android側はボトムナビゲーションが非推奨でしたので、タブ(iOSにおいてボトムナビゲーションを指す)というややこしい名前になりました。

iOS側とAndroid側の標準なデザインの違いが少なくありませんので、デザインのよるとカスタマイズしにくいところが出るかもしれません。こだわりがなければデフォルトでいきましょう。

また、iOS側のセグメンテッドコントロールはスクロールできないため、ボトムナビゲーションのように五つまでにしましょう。

プルダウンメニュー|ドロップダウンメニュ

iOS pull-down menu Android dropdown menu
iOS 14 Android

Android側に早期からありまして、現在に至ってテキストフィールドと一緒に使うことも可能に比べ、iOS側はiOS 9から似たような機能(Peek and Pop)がリリースされ、iOS 13でリニューアル(Context Menus)されましたが、詳細画面のプレビュー(コンテキスト)と伴う部品でした。

iOS 14からついにプレビューなしで使えるようになりました。

日時ピッカー

iOS date picker なし
iOS 14 Android

Android側は結構前から使いやすい日時ピッパーがあります3 4。使うのは当たり前すぎて、デザインに記載する必要がない理由で、リソースに載っていないと個人的に思います。

iOS 13以前ではローラーのようなピッカーしかなくて、使い勝手はあまり良くありません。iOS 14からついにAndroid側と似たような日時ピッパーが出てきました。とはいえ、Android側と比べるとタップと入力の切り替えはできませんし、日時の範囲を選択することもできません。

日時ピッカーはOSの所々に使われる部品ですので、例えより優秀なデザインがあっても、ユーザーの習慣が少しでも違いがあると、逆に使いにくい恐れがあります。デザインを統一するために、Android側もローラーのようなピッカーにするような習慣の違いはともかく、使い勝手を低下することはやめましょう。

OSバージョン

すでに気づいたかもしれませんが、公式リソースのダウンロードページもこの記事もiOSのバージョンのみ記載してあります。Android側バージョンの問題を気にしなくても大丈夫でしょうか?

大体の場合は大丈夫です。iOS側のデザイン変更は主にバージョンと共に進んでいますので、配慮しなければなりませんが、Material DesignはAndroid専属なデザインガイドラインではありませんので、Androidの進化と共にデザインが更新されるというより、公式がMaterial DesignをAndroidに実装しています。普通の開発と同じ、古いバージョンをサポートしています。

とはいえ、公式だからと言って全バージョンバグなし完全に同じ動きになる保証がありませんし、古すぎるバージョンを切り捨てる場合もありますので、何か不具合を遭遇した場合、エンジニアと回避策を考えましょう。

Android特有

これからはAndroid特有な部品に入ります。

選択ボタン

Radio button Checkbox
Radio Button Checkbox

単一と複数選択の場合よくあるデザインと思いますが、iOS側に存在しません。

iOS selection list Android selection list
iOS Android

リストの場合はチェックマークで表せますが、規約を同意する意味合いを持つチェックボックスを直接表せる部品がありません。

選択ボタン自体が二つ状態しかなく、一応二つ状態のリソースを準備してあげれば簡単5に実装できます。

スナックバー

Snackbar
Snackbar with action
Snackbar

ユーザーのアクションは必須ではない場合、メッセージを出す部品になります。iOS側がありませんので、自前で作るかアラートを使うかになりますが、Android側にせっかくありますので、積極的に使いましょう。

まとめ

プログラミングがわからなくても、公式のデザインリソースから見てiOSとAndroidの標準や違いいろいろわかりますね。上記に書いてあるのはあくまで一部で、今後デザインリソースの更新につれ、また新たな情報が出てくるのでしょう。

このような情報を生かし、実装コストが低い、各OSの本領が発揮でき、デザイナー、エンジニア、ユーザー全部喜ぶデザインを作りましょう。


  1. 全部ではありません。特にAndroidの方はMaterial DesignでAndroid専用ではありません。 

  2. 実装の知識がないとわからない情報ですが、Android側はタイトルとボタンのアウトにカスタムビューを入れることが可能で、タイトルとボタンを表示しないことも可能ですので、コストが増えますが、なんでもできます。しかしiOS側はほぼできません。 

  3. Date pickers 

  4. Time pickers 

  5. Android側の部品のように選択をグループして、アニメーションもつけるにはそれなりに大変です。