App Architecture
🆕 はiOS 15.0
から導入されたものです。
Launching
- Provide a launch screen.
→ コンテンツのロード中にユーザを待機させない
参考: Launch Screen - Launch in the appropriate orientation.
→ アプリ起動時の画面の向きを考慮する
参考: Adaptivity and Layout - Avoid asking for setup information up front.
→ 設定画面は最小限に(カスタマイズ性より汎用性 ※ユーザ意識) - Avoid showing in-app licensing agreements and disclaimers.
→ App Store等に規約を明示する(ユーザにとって不要なダウンロードは避ける) - Restore the previous state when your app restarts.
→ 何度も同じ手順を踏ませない - Don't encourage rebooting.
→ 何度も再起動させない - Avoid asking people to rate your app too quickly or too often.
→ レビューを強要しない
Onboarding
- Provide onboarding that helps people enjoy your app, not just set it up.
→ 有意義な情報を精査する - Get to the action quickly.
→ チュートリアルはスキップ可能にする - Anticipate the need for help.
→ ユーザが困りそうな(または既に困っている)タイミングでチュートリアルを挿入する - Stick to the essentials in tutorials.
→ チュートリアルに含む情報を精査する - Make learning fun and discoverable
→ 体験学習をさせる(仕様を眺めさせない)
Loading
- Make it clear when loading is occurring.
→ ユーザに待機させる場合はインジケーターを表示する - Show content as soon as possible.
→ プレースホルダを用意して画面だけは先に表示する - Educate or entertain people to mask loading time.
→ ロード時間を利用してTipsを提供する - Customize loading screens.
→ インジケーターはアレンジする
参考: Progress Indicators
Modality
- Use modality when it makes sense.
→ モーダルはユーザに重要な情報を提供するときのみ利用する - Reserve alerts for delivering essential - and ideally actionable - information.
→ アラートはユーザ操作を阻害するものであることを念頭に置いておく - In general, keep modal tasks simple, short, and narrowly focused.
→ モーダルはなるべく手短に済ませる - Consider using a fullscreen modal style for immersive content or a complex task.
→ モーダルはフルスクリーン表示の方が没頭させられる - Always include a button that dismisses the modal view.
→ モーダルは常に解除(非表示)できるようにする - When necessary, help people avoid data loss by getting confirmation before closing a modal view.
→ データが消える場合にモーダルを利用する - Make it easy to identify a modal view's task.
→ モーダルを表示する際はそのモーダルの責務を示す - Coordinate the modal view's appearance with your app.
→ アプリケーションのUIに沿ったモーダルを作る - Choose a modal transition style tat makes sense in your app.
→ モーダルの遷移スタイルは一貫させる
Navigation
- Always provide a clear path.
→ 直感的に分かる遷移にする - Design an information structure that makes it fast and easy to get to content.
→ 目的のコンテンツまで最短で遷移させる - Use touch gestures to create fluidity.
→ ジェスチャーによる遷移を可能にする - Use standard navigation components.
→ 標準的なナビゲーション部品を利用する - Use a navigation bar to traverse a hierarchy of data.
→ ナビゲーションバーを利用する場合はタイトルに現在の階層を明示する
参考: Navigation Bars - Use a tab bar to present peer categories of content or functionality.
→ タブバーを利用してコンテンツのカテゴリごとにまとめる
参考: Tab Bars - On iPad, use a split view instead of a tab bar.
→ iPadの場合はタブバーの代わりにSplit Viewを利用する
参考: Split Views - Use a page control when you have multiple pages of the same type of content.
→ Page Controlを利用して類似コンテンツ間の遷移を可能にする
参考: Page Controls
Accessing User Data and Resources
Requesting Access Permission
- Request permission only when your app clearly needs access to the data or resource.
→ リソースを利用するときにのみパーミッションダイアログを表示する
参考: Using the Location Button - Request permission at launch only when the data or resource is necessary for your app to function.
→ アプリ全体でリソースを利用する場合は利用前にパーミッションダイアログを表示し、その旨も明示する - Write copy that clearly describes how your app uses the data or resource you're requesting.
→ パーミッションダイアログでリソースを利用する場面とその理由を明示する
参考: Requesting Access to Protected Resources / App Tracking Transparency
🆕 Using the Location Button
- Consider using the location button to give people a lightweight way to share their location for specific app features.
→ 位置情報を「一度のみ利用」すると予想できる場合はLocation Buttonでの実装を検討する - Consider customizing the location button to harmonize with your UI.
→ アプリケーションのUIに合うようにカスタマイズする
🆕 Using the Microphone in a ShazamKit App
- Stop recording as soon as possible.
→ 音声認識機能は短時間での利用に留める - Let people opt in to storing your app's recognized songs to their iCloud library.
→ 音声認識によって判別した曲はiCloudに保管できるようにする
参考: ShazamKit
Displaying Custom Messaging Before the Alert
- Make it clear that opening the system alert is the only action people can take in your custom-messaging screen.
→ ユーザがリソースの利用を許可すると容易に想像できる場合は、パーミッションダイアログを表示する前に説明書きを表示する(続行ボタンのラベルは「続ける」や「次へ」を利用する)
Clarifying Tracking Requests
- Never precede the system-provided alert with custom messaging that could confuse or mislead people.
→ パーミッションダイアログ表示前の説明書きでは、ユーザがリソースの利用を承認するように仕向けない
Settings
- Infer what you can from the system.
→ リソースを利用することでユーザの設定項目を極力減らす - Thoughtfully prioritize configuration options within your app.
→ 設定項目の重要度に応じてメイン画面とサブ画面に配置を分ける - Expose infrequently changed configuration options in Settings.
→ 変更頻度の低い設定項目はアプリ内で設定できるようにする
参考: Implementing an iOS Settings Bundle - Provide shortcuts to Settings when appropriate.
→ 「設定」アプリに遷移する場合は遷移先に直接飛べるようにする
参考: openSettingsURLString