スマートフォンのネイティブアプリの開発を行う際に特有の、要件定義に盛り込んでおくべき内容をまとめます。自分向けメモのためやや殴り描きですが、随時更新しもう少しちゃんとまとめ直す予定です。
サポート端末
- サポート対応OS、バージョン、インストール可能な最低OSバージョン
- タブレットへのインストール可否
- サポート対象の画面サイズ(特にAndroidは画面サイズの種類が多いため)
UI関連
- ポートレートビュー(横表示)への対応有無
- split view(タブレットやAndroid7?以上で複数アプリを並べて表示させる機能)への対応有無
- タブレットの場合に、iPadの互換表示モード(?)を利用するのか、ユニバーサルアプリとしてリリースするのか。
- OSのUI設定についてどこまでサポートするか
- OS設定のフォントサイズ
※何も考えずに実装すると、iOSはOSのフォントサイズ設定に依存せず独立して描画され、AndroidはOS設定に影響を受ける。 - (Androidのみ)システムフォントの設定
- (Androidのみ)ビューの拡大表示
- (Androidのみ)デフォルトキーボードの設定
- (Androidのみ)Adaptive Iconへの対応(Android8以上) cf. https://qiita.com/ryo_mm2d/items/bc2807670eedc71630b9
- 画面サイズが大きい(タブレットとかの場合に)どのように拡大させるか。要素自体を引き伸ばすのか、要素間のマージンで幅を調整するのか。後者の場合は、どこの要素間でマージンを設けるのかなどを明示化するため、画面サイズごとにデザインパターンを何パターンかつくることもある。
- 幅や高さが固定の要素に対して文字数が超過した場合に、文字列の一部を「...」と省略表示とするのか、要素内に文字が収まるよう自動縮小させるのか(※設計時に要素ごとに検討した方が無難かも)
- (iOS13以降)ダークモードへの対応方針
- カラーユニバーサルデザイン( https://www.asobou.co.jp/blog/web/cud )への対応有無
トラッキング
- トラッキングの計測対象は何にするのか。screen_viewのみ?screen_viewを取得する場合はスクリーンクラスの定義も行なうのか?ボタンタップなどのイベントも取得するのか?
- クラッシュレポート(Crashlyticsなど)の導入有無を決める。ストアのコンソールでも確認できるが専用のツールを入れたほうが詳細な情報が取得できる。
セキュリティ
- iCloudなどにアプリ内保持項目もバックアップさせるかどうか
コーディング規約
- Android
日本スマートフォーンセキュリティ協会『Android アプリのセキュア設計・セキュアコーディングガイド』【2018年9月1日版】
https://www.jssec.org/report/20180901_securecoding.html - iOS
https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Introduction.html
その他
- URLスキーム、Universal Links(iOSのみ)の有無