UI の同期性では、ユーザインターフェイスがユーザ操作に反応する方法を、ブロックする/しないやり方のいずれも、記述します。
同期 UI
同期UIはバックグラウンドデータの状態や処理と固く結ばれたユーザインターフェイスです。同期UIのいくつかの例は、読み込みのスピナーやモーダルダイアログです。同期UIの意図は、関連した処理や状態変化が完了するまで、ユーザの継続した操作をブロックする事です。同期UIは、次の操作が、今の操作の完了に依存している状況で使われるべきです。
非同期 UI
非同期UIは、いかなる処理やバックグラウンドデータの状態とも切り離されたユーザインターフェイスです。非同期UI には同期UIと比して、知覚できる利点があります:
- ユーザインターフェイスがフィードバックに対し即座に反応し、応答性が良く感じられる
- 処理がバックグラウンドで生じる
- UI 継続性がインターフェイスをブロックしない
続いた操作をブロックしないUIは、活動をブロックするUIよりも、もっと応答性が良く感じられます。非同期UIを使うと、ユーザはアプリが "速く動作し" たり "キビキビして" いると感じると報告します。バックグラウンド処理が変更されていると気付かれない場合でもそうです。
UI継続
非同期UIでは、ネットワークエラーや、入力バリデーションや、単なる通知のために操作が停止する問題があります。
既にUIにて操作の完了が認められる時、何かがおかしいのをどうやってユーザに通知しましょう? UI継続は、こうした通知を届けるテクニックを参照します。UIの継続に例がいくつかあります:
- ユーザ変更をそっと巻き戻す
- 非侵入型の通知バー
- 音や知覚のフィードバック
非同期UIを適用した時、賢いUI継続を操作に組み入れる事が重要です。頻繁なUI継続は、同期/非同期UIになりうる事を忘れないで下さい。つまり、それぞれの状況にあったツールを使います。
非同期ファースト(Async First)
同期UIに対する非同期UIの利点があって、非同期ファースト の様式が推奨されます。非同期ファーストでは:
- デフォルトで非同期UIを使ってUIを作るのを試みる
- 作用に対して操作が論理的でなかったり、ビジネスルールを破ったりする場合のみ、同期UIに切り替える。
非同期UIは全ての状況に適用できるわけでなく、非同期ファースト戦略を適用すると、アプリのどの部分で、処理とデータを密に結びつける必要があるか、どこが切り離したままにできるかを決定する手助けとなります。