iOS&Androidアプリのデザインをする人に知っておいてもらいたいこと


知り合いのデザイナーさんから「iOS&Androidアプリをデザインする時に何か知っておくべき事ってありますか？」と質問を受けたので、思い浮かんだ事をずらっと書いてみました。他にも何かありましたらコメントお願いします！ツッコミも歓迎(´ﾛ｀)

#iOS
##モバイルアプリデザインの原則とiOS
量が少し多いが、[公式のiOSヒューマンインターフェイス ガイドライン](https://developer.apple.com/jp/devcenter/ios/library/documentation/MobileHIG.pdf)は必読。(※ダウンロードに時間かかるので注意)
iOSだけに限らず、モバイルアプリのデザインをするにあたって重要な事がまとまっている。

###載っていること
- ヒューマンインターフェイスの原則
- アプリケーション設計戦略
- iOSテクノロジーの使用に関するガイドライン
- 標準で用意されている各UI要素(タブやツールバー等)の使い方

##マルチスクリーン対応
### どのような違いがあるのかを把握する
- [画面密度(ppi)](http://ja.wikipedia.org/wiki/Ppi)や画面サイズなど
- 参考：[iPhone](http://ja.wikipedia.org/wiki/IPhone#.E4.B8.BB.E3.81.AA.E4.BB.95.E6.A7.98), [iPod touch](http://ja.wikipedia.org/wiki/IPod_touch#.E4.BB.95.E6.A7.98), [iPad](http://ja.wikipedia.org/wiki/IPad#.E6.A9.9F.E7.A8.AE.E3.81.94.E3.81.A8.E3.81.AE.E4.BB.95.E6.A7.98.E4.B8.80.E8.A6.A7), [iPad mini](http://ja.wikipedia.org/wiki/IPad_mini#.E6.A9.9F.E7.A8.AE.E3.81.94.E3.81.A8.E3.81.AE.E4.BB.95.E6.A7.98.E4.B8.80.E8.A6.A7)


###画面密度の違いへの対応
- Retinaと非Retinaで画面密度が丁度倍違う。
- 画面レイアウトを設計する時、それぞれの要素(画像やボタン等)の大きさが画面密度が違っても変わらないように、"px(pixel)"でなく"pt(point)"という単位を使う。(非Retina:1pt=1px, Retina:1pt=2px)
- 画像を綺麗に表示するには、それぞれの画面密度に合わせた画像を用意する必要がある。
- 画像ファイル名を同じにしてRetina用は末尾に"@2x"を付ければ、自動的に出し分けてくれる仕組みがあるのでそれを利用する
- 例： 非Retina用->``sample.png``, Retina用->``sample@2x.png``


###画面サイズの違いへの対応
- iPhone4Sまで3.5インチで、iPhone5から4インチになった
- 横幅は同じで高さが違うだけ。3.5インチに合わせてデザインし、4インチで表示する時に伸ばす場所を決める。
- iPadの対応はよく知らないのでノーコメント…


##OS Versionによる違い
- 6と7で見た目が大幅に変わった
 - 参考:[iOS 6 vs iOS 7: the different UI views](http://www.idownloadblog.com/2013/06/14/ios-6-vs-ios-7-the-different-ui-views/)
- バージョンごとのシェア率 
 - [App Store Distribution - Support - Apple Developer](https://developer.apple.com/support/appstore/)
 - 古いの使ってる人はあんまりいない



#Android
##デザインガイドを読む
Androidもアプリをデザインするならデザインガイドは必読。日本語訳は非公式なものなので、必ず公式と比べながら読むこと。

- 公式: [Design | Android Developers](http://developer.android.com/design/index.html)
- 日本語(非公式) [Android デザインを訳してみた - Firespeed](http://firespeed.org/diary.php?diary=kenz-1462)


##マルチスクリーン対応
###どのような違いがあるのかを把握する
- [スマートフォン比較表](http://www.smph.info/)
- iOSと違って[画面密度(dpi)](http://ja.wikipedia.org/wiki/Dpi)や物理的な画面サイズの種類がめちゃくちゃ多いので、ざっくり分類されている
 - 参考:[y.okano blog: Android の画面サイズ](http://yokano-jp.blogspot.jp/2013/05/android_13.html)
- シェア率を把握する
 - 参考:[Dashboards | Android Developers](http://developer.android.com/about/dashboards/index.html#Screens)、[マルチスクリーン対応と最近のアプリの傾向](http://www.slideshare.net/yanzm/supporting-multiscreen/32)


###画面密度の違いへの対応
- 画面レイアウトを設計する時、それぞれの要素(画像やボタン等)の大きさが画面密度が違っても変わらないように、"px(pixel)"でなく["dp(Density Independent Pixel)"](http://tatete.blogspot.jp/2012/03/android-dp.html)という単位を使う
 - 参考:[Supporting Multiple Screens | Android Developers](http://developer.android.com/guide/practices/screens_support.html#density-independence)
- 本来は画面密度毎(mdpi, hdpi, xhdpi等)に画像を用意する必要があるが、それだと容量が大きくなるので、とりあえず xhdpi の画像だけ用意して、それで荒く見える画像だけ高解像度のを用意するとかやる(ケースバイケースなので要相談)

###画面サイズの違いへの対応
- 小さい画面(横320dp)に合わせてデザインし、大きい画面で表示する時に伸ばす場所を決める
 - 参考:[マルチスクリーン対応と最近のアプリの傾向](http://www.slideshare.net/yanzm/supporting-multiscreen/35)
- 画像を伸ばして表示したい場合は、普通に伸ばすと汚くなるので[9patch](http://d.hatena.ne.jp/tomorrowkey/20110501/1304245217)を利用する
- 画面サイズによって、別のレイアウトを使う事もできる
 - 参考:[Supporting Different Screens | Android Developers](http://developer.android.com/training/basics/supporting-devices/screens.html)

###フォントサイズ
 - ユーザのフォントサイズ設定によって表示されるサイズが変えることが出来る"sp"という単位がある
     - 参考: [Y.A.M の 雑記帳: Android　Dimension 単位](http://y-anz-m.blogspot.jp/2010/05/androiddimension.html)
 - フォントサイズを変えられるとレイアウトが崩れる場合は、dpでフォントサイズを指定する


##OS Versionの違い
- [Androidのバージョン履歴 - Wikipedia](http://ja.wikipedia.org/wiki/Android%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%B1%A5%E6%AD%B4)
- 2.x系と4.x系で見た目が大幅に変わった
- バージョンごとのシェア率
 - [Dashboards | Android Developers](http://developer.android.com/about/dashboards/index.html)
 - 2.x系に対応するのは非常に面倒だが、使ってる人が結構いる 



#両方に対応するアプリをデザインする場合
##iOS/Androidの違いを把握する
- それぞれのデザインガイドを読めば分かるが、デザイン方針に違いがある
- それぞれのデザイン方針で作られたアプリに、それぞれのプラットフォームのユーザは慣れている
- iOSのUIに合わせてデザインしたものをAndroidにも適用とかすると、Androidに慣れたユーザにとって違和感のあるUIになってしまう
- 違いを把握して、iOS/Androidのそれぞれに適したデザインを考える必要がある
- デザインの手間がかかる為それが出来ない場合、「デザインガイドに反したUIを実装するのは手間がかかるケースが多い」という事を理解して、プログラマーと相談しながら決めていくと良い


###例
- タブバー
 - iOSは下部に配置
 - Androidは上部に配置
- 戻るボタン
 - ナビゲーションバーの左側に配置
 - システムによってBackボタンが用意されている。アクションバーの左側に配置されるのはUpボタン


###参考
- [Pure Android | Android Developers](http://developer.android.com/design/patterns/pure-android.html)、[日本語訳](http://firespeed.org/diary.php?diary=kenz-1486)
- [秋葉ちひろのAndroidアプリデザイン入門-目次 - MdN Design Interactive](http://www.mdn.co.jp/di/articles/2887/)
- [iOS な人が Android アプリを開発するときに気をつけたいこと | SmartNews開発者ブログ](http://developer.smartnews.be/blog/2013/09/06/ios-android/)
- [Androidアプリの魅力的なインターフェース〜本当にiOSアプリのデザインを流用するだけでいいの？〜](http://www.slideshare.net/toooommmmmmmmy/androidios-25469241)