本記事は、本記事投稿時点の Human Interface Guidelines - iOS を DeepL で機械翻訳したものです。明らかな誤訳が見受けられた際には修正を加えています。

Human Interface Guidelines - iOS

https://developer.apple.com/design/human-interface-guidelines/


  1. Overview
  2. App Architecture
  3. User Interaction
  4. System Capabilities
  5. Visual Design
  6. Icons and Images
  7. Bars
  8. Views
  9. Controls
  10. Extensions

User interaction - 3D touch

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/3d-touch/

3D タッチ

サポートされているデバイスでは、ユーザーがタッチスクリーンにさまざまなレベルの圧力をかけることで、追加機能にアクセスできます。アプリは、コンテキストメニューを表示して(または Peek and Pop をサポートして)、アイテムとそのアイテムに影響を与えるためのアクションを表示します。

iOS 13 以降を搭載したデバイスでは、3D Touch をサポートしているかどうかにかかわらず、タッチ&ホールドのジェスチャーでコンテキストメニューを開くことができます。3D Touch デバイスでは、このジェスチャーでコンテキストメニューをよりすばやく表示できます。

ホーム画面でのインタラクション

iOS 13 以降を搭載したデバイスのホーム画面では、ユーザーがアプリのアイコンをタッチ&ホールドすると、アプリがコンテキストメニューを表示します(3D Touch デバイスでは、アイコンを短く押すとメニューが表示されます)。アプリのコンテキストメニューでは、アプリ固有の一般的なタスクをすばやく実行したり、興味深い情報を確認したりすることができます。例えば、カレンダーでは、イベントを作成するためのショートカットが用意されているほか、次のイベントの予定も表示されます。デザインの指針については、「ホーム画面のアクションとウィジェット」を参照してください。

ライブフォト

Live Photos は、人々が写真に触れると、動きや音を使って、写真が撮られる前と後の瞬間を表現することができます。iOS 13 以降を搭載したデバイスでは、写真の上に指を置くとライブフォトが表示されます。3D Touch デバイスでは、ライブフォトの上で短く押すと表示されます。デザインガイダンスについては、「Live Photos」をご覧ください。


User interaction - Apple pencil and scribble

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/apple-pencil-and-scribble/

Apple Pencil と Scribble

Apple Pencil は、iPad アプリケーションのための多目的で直感的なツールで、メモを取ったり、スケッチしたり、絵を描いたり、文書に印をつけたりする際にピクセルレベルの精度を発揮します。iPadOS 14 以降では、Scribble により、Apple Pencil を使って、デバイス上での高速でプライベートな手書き認識により、あらゆるテキストフィールドにテキストを入力することができます。ガイダンスについては、Supporting Scribble を参照してください。

期待される行動をサポートします Apple Pencil は、絵を描いたり、手書きしたり、印をつけたりする作業を楽に、自然に行えるように設計されており、ポインターや UI のインタラクションツールとしても機能します。人々が期待する Apple Pencil の動作を可能にするだけでなく、予想外のインタラクションもサポートすることを検討してください。例えば、ドキュメントの余白にメモを取ることができるようなアプリです。

Apple Pencil と指での入力を切り替えるタイミングは、人々に選択させましょう 例えば、コントロールを操作するために、Apple Pencil から指に切り替える必要はありません。アプリが Apple Pencil でのマーキングに対応している場合、アプリのコントロールも Apple Pencil に対応している必要があります。反応しないコントロールは混乱の原因となり、故障やバッテリー不足の印象を与えてしまいます。同様に、指でも絵を描いたりマークをつけたりできるようにしましょう。Scribble は Apple Pencil の入力にのみ対応しています)。

Apple Pencil が画面に触れた瞬間に印をつけてもらう Apple Pencil をスクリーンに置いたときの体験は、従来の鉛筆を紙に置いたときの体験を反映したものでなければなりません。Apple Pencil を使う前に、ボタンをタップしたり、特別なモードに入ったりする必要はありません。

Apple Pencil の使い方に反応することで、人々が自分自身を表現できるようにします Apple Pencil は、傾き(高度)、力(圧力)、方向(方位)を感知することができます。アプリはこの情報を使って、太さや強さを変えるなど、Apple Pencil のストロークに影響を与える必要があります。圧力に反応するときは、シンプルで直感的なものにします。例えば、インクの不透明度やブラシのサイズなどの連続的なプロパティに影響を与えるには、圧力を変化させるのが自然です。

コンテンツとの直接的なつながりを示す視覚的なフィードバックを使用します Apple Pencil は、画面上で触れたコンテンツを直接かつ即座に操作しているように見えるべきです。Apple Pencil は、画面上のコンテンツを直接かつ即座に操作するように見えなければなりません。

左利きと右利きの両方に配慮したデザイン 左右どちらの手でも操作できるような場所にコントロールを置かないようにしてください。コントロールが見えなくなる可能性がある場合は、人々がコントロールを再配置することを検討してください。

可能な限り、ダブルタップジェスチャーに関するユーザーの設定を尊重してください Apple Pencil 2 は、ダブルタップのジェスチャーに反応して、直接的(ツールの変更)または間接的(色のオプションの表示)に描画方法を変更します。デフォルトでは、ダブルタップで現在のツールと消しゴムが切り替わりますが、ユーザーは「設定」で、ダブルタップで現在のツールと前のツールを切り替えたり、カラーピッカーを表示/非表示にしたり、何もしないように指定することができます。アプリがこれらの動作をサポートしている場合は、システム全体のダブルタップの設定を尊重し、同じ動作のために新しいジェスチャーを覚えてもらおうとは思わないでください。システム全体のダブルタップの設定があなたのアプリで意味をなさない場合でも、ジェスチャーを使って Apple Pencil 2 のモードを変更することができます。例えば、メッシュ編集ツールを備えた 3D アプリケーションのユーザーは、ダブルタップでツールの上げ下げモードを切り替えることができます。

必要に応じて、ダブルタップのカスタム動作を有効にする方法を提供します アプリケーションが Apple Pencil 2 のダブルタップ動作の一部または全部をサポートしていて、さらにカスタムのダブルタップ動作もサポートしている場合は、カスタムの動作を有効にできるコントロールを提供します。カスタム動作を有効にする明示的な方法がない場合、ユーザーは、アプリがシステムワイドのダブルタップ設定に反応しないことに戸惑うかもしれません。このような場合は、アプリがサポートする代替動作をユーザーが簡単に見つけられるようにしますが、デフォルトでは有効にしないでください。

ダブルタップジェスチャーを、コンテンツを変更するアクションに使用しないでください 誤ってダブルタップしてしまう可能性があるため、アプリがアクションを実行したことに気づかない可能性があります。また、ダブルタップでツールのモードを切り替える場合、誤ってモードを変更してしまっても、もう一度ダブルタップするだけで簡単に元に戻すことができます。しかし、ジェスチャーを使ってアクションを実行するアプリでは、元に戻す方法を探すためにワークフローを中断しなければなりません。さらに悪いことに、ダブルタップを使って破壊的な動作を行うアプリでは、ユーザが動作の発生に気づかない場合、データが失われる可能性があります。

開発者向けのガイダンスについては、「Pencil Interactions」を参照してください。

Scribble のサポート

Scribble と Apple Pencil を使えば、アプリケーション内でテキストが受け入れられる場所ならどこでも、タップしたりモードを切り替えたりすることなく、簡単に書くことができます。Scribble は iPadOS 14 以降に完全に統合されているため、キーボードと同様に、すべてのアプリケーションでデフォルトで利用できます。以下のガイドラインは、デフォルトの Scribble サポートを強化して、アプリケーションで優れたライティングエクスペリエンスを提供するのに役立ちます。

テキストを入力するときは、常にスムーズで楽な感じにします デフォルトでは、Scribble は、パスワードフィールドを除くすべての標準テキストコントロール(テキストフィールド、テキストビュー、検索フィールド、Web コンテンツの編集可能フィールドなど)で機能します。アプリケーションでカスタムテキストフィールドを使用する場合、ユーザーが書き込みを開始する前にタップまたは選択させないようにしてください。

人々がテキストを入力する可能性のある場所では、Scribble を利用できるようにします キーボードを使うのとは異なり、Apple Pencil を使うと、紙を扱うように画面を扱うことができます。テキスト入力が自然に思える場所で Scribble を一貫して利用できるようにすることで、アプリケーション内でのこの認識を強化することができます。例えば、リマインダーでは、最後の項目の下の空白に新しいリマインダーを書き込むことで、その領域にテキストフィールドがないにもかかわらず、自然にリマインダーを作成することができます。開発者向けのガイダンスについては、UIIndirectScribbleInteraction を参照してください。

書いている人の気を散らさないようにする テキストフィールドの動作の中には、キーボード入力には適していても、Apple Pencil で可能になる自然な書き心地を妨げるものがあります。例えば、テキストフィールドで文章を書くときに自動補完テキストを表示するのは避けた方がいいでしょう、候補が視覚的に邪魔になるからです。また、人が書き始めた瞬間にフィールドのプレースホルダーテキストを非表示にして、入力が重なって見えないようにするのもよいアイデアです。

ユーザーがテキストフィールドに書き込んでいる間は、そのフィールドが固定され、内容がスクロールしないようにしてください 場合によっては、テキストフィールドに注目が集まったときに、テキストフィールドを移動させることが有効です。例えば、検索フィールドは、検索結果を表示するためのスペースを確保するために移動します。このような動きは、キーボードを使っているときには問題ありませんが、文章を書いているときには、入力した内容がどこに行くのかコントロールできなくなったように感じられます。テキストフィールドの移動を防ぐことができない場合は、ユーザーが書き込みを一時停止するまで移動を遅らせることを検討してください(開発者向けのガイダンスとしては、sribleIntractionShouldDelayFocus(_:)を参照してください)。

また、テキストフィールドで書き込みや編集をしている間の自動スクロールを防ぐことも重要です。転写されたテキストが自動スクロールすると、その上での書き込みを避けようとするかもしれません。さらに、Apple Pencil を使ってテキストを選択しているときにテキストがスクロールすると、必要なテキストとは異なる範囲を選択してしまうかもしれません。

文字を書くのに十分なスペースを確保しましょう 小さなテキストフィールドは、キーボードを使って文字を入力するときには問題ありませんが、文字を書くときには違和感があります。Apple Pencil による入力の可能性が高いことがわかっている場合は、ユーザーがテキストフィールドに書き込みを始める前、または書き込みを中断したときに、テキストフィールドのサイズを大きくすることで、アプリでの書き込み体験を向上させます。人が書いている間にテキストフィールドのサイズを変更することは常に避けてください。

開発者向けのガイダンスについては、UIScribbleInteraction を参照してください。

カスタムな描画体験の提供

PencilKit を使用すると、iOS で提供されているのと同じ低遅延のエクスペリエンスで、メモを取ったり、文書や画像に注釈を付けたり、絵を描いたりすることができます。PencilKit を使用すると、アプリケーション内にカスタムの描画キャンバスを簡単に作成でき、最先端のツールピッカーとインクパレットを提供できます。開発者向けガイダンスは、PencilKit をご覧ください。

既存のコンテンツの上に絵を描けるようにする デフォルトでは、PencilKit のキャンバスの色はダークモードに動的に調整されるので、どちらのモードでコンテンツを作成しても、その結果はどちらでも美しく表示されます。しかし、PDF や写真などの既存のコンテンツの上に絵を描く場合は、マークアップがシャープで見やすい状態を保つために、色の動的な調整を行わないようにするとよいでしょう。

アプリケーションがコンパクトな環境で動作する場合、ツールピッカーがコンテンツを覆い隠さないようにします 通常の環境では、ツールピッカーはコンテンツの上に浮かんでいるので、ユーザーはツールピッカーを邪魔にならないように動かすことができますが、コンパクトな環境では、ツールピッカーは画面の下端に固定されます。コンテンツが見えなくならないように、コンテンツビューのフレームやスクロールビューのインセットを調整することで、ツールピッカーの高さを考慮することができます。

コンパクトな環境でアプリを実行したときに表示される、カスタムのアンドゥとリドゥのボタンを提供することを検討してください 通常の環境では、ツールピッカーにアンドゥとリドゥのボタンが含まれていますが、コンパクトな環境では含まれていません。コンパクトな環境では、カスタムボタンをナビゲーションバーに表示することができます。また、どのような環境でも使用できるように、標準的な 3 本指のアンドゥ/リドゥジェスチャーをサポートすることも検討してください。詳しくは、「元に戻す」と「やり直し」をご覧ください。


User interaction - Audio

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/audio/

オーディオ

iPhone と iPad は、内蔵または外付けのスピーカー、ヘッドフォン、そして Bluetooth や AirPlay 対応デバイスを介したワイヤレスでのオーディオ再生が可能です。デバイスのサウンドを操作するには、ボリュームボタン、Ring/Silent スイッチ、ヘッドフォンコントロール、Control Center のボリュームスライダ、他社製アクセサリのサウンドコントロールなど、いくつかのタイプのコントロールを使用します。サウンドがアプリ体験の主要な部分であるか、装飾的なものであるかにかかわらず、アプリのサウンドがどのように動作すべきか、人々の期待に応える必要があります。

静寂

着信音やメッセージの着信音など、予期せぬ音に邪魔されたくないときは、デバイスをサイレントに切り替えます。この場合、キーボードのクリック音、効果音、ゲームのサウンドトラック、その他のフィードバック音など、必要のない音も消したいと考えます。サイレントモードでは、メディアの再生、アラーム、オーディオ/ビデオメッセージなど、ユーザーが明示的に指示した音声のみを再生する必要があります。

ボリューム

人々は、音量をどのように調整しても、音楽やアプリ内の効果音など、システム内のすべての音に影響することを期待しています。ただし、呼出音の音量は、「設定」で個別に調整できます。

ヘッドホン

ヘッドホンは、人目を気にせず、両手を自由に使えるようにするために使います。ヘッドホンを接続するときは、音が途切れることなく自動的に再生されることを期待し、ヘッドホンを外すときは、再生がすぐに停止することを期待します。

優れたオーディオ体験をデザインする

必要に応じて自動的にレベルを調整し、全体の音量を調整しない アプリケーションは、オーディオの素晴らしいミックスを実現するために、相対的で独立したボリュームレベルを調整することができますが、最終的な出力は常にシステムボリュームが支配するべきです。

可能であれば、オーディオの再ルーティングを許可する 人々はしばしば、別のオーディオ出力デバイスを選択したいと思うものです。例えば、リビングルームのステレオ、カーラジオ、Apple TV で音楽を聴きたいと思うかもしれません。やむを得ない理由がない限り、この機能をサポートしてください。

システムが提供するボリュームビューを使って、オーディオを調整することができます ボリュームビューには、ボリュームレベルのスライダとオーディオ出力を再ルーティングするためのコントロールがあります。スライダの外観はカスタマイズできます。開発者向けガイダンスは、「MPVolumeView」を参照してください。

システムのサウンドサービスを使って、短い音や振動を再生することができます 開発者向けガイドは、「オーディオサービス」を参照してください。

アプリでの音の使い方に合わせて、オーディオカテゴリーを選択します 選択したオーディオカテゴリーに応じて、アプリのサウンドが他のオーディオと混ざったり、アプリがバックグラウンドで動作している間に再生されたり、Ring/Silent スイッチをサイレントに設定したときに停止したりします。可能な限り、アプリが人々の期待に応えられるようなカテゴリーを選んでください。たとえば、必要がなければ、他のアプリの音楽を聴くのをやめさせるようなことはしないでください。開発者向けのガイダンスとしては、AVAudioSession.Category を参照してください。

カテゴリー 意味 動作
ソロアンビエント 必須ではないが、他の音を消してしまう音。例えば、サウンドトラックのあるゲームなどです。 無音スイッチに反応する。他の音とは混ざらない。バックグラウンドでは再生されない。
アンビエント サウンドは必須ではなく、他のオーディオを無音にしません。例えば、ゲームプレイ中に他のアプリの音楽をゲームのサウンドトラックの代わりに再生できるゲームなど。 沈黙のスイッチに反応する。他の音と混ざる。バックグラウンドでは再生されない。
再生 音は必須で、他の音声と混ざる可能性があります。例えば、外国語を学ぶオーディオブックや教育用アプリなど、アプリを終了した後も聴きたくなるようなものです。 無音スイッチには反応しません。他の音声と混ざることもありますし、混ざらないこともあります。バックグラウンドで再生できます。
レコード 音を記録する。例えば、音声録音モードを備えたノートアプリ。この種のアプリでは、録音したメモを再生できるようにすると、カテゴリーが再生に切り替わることがあります。 無音スイッチには反応しません。 他の音と混ざらない。バックグラウンドでの録音が可能です。
再生と記録 音は録音され、同時に再生される可能性があります。例えば、音声メッセージングやビデオ通話アプリなど。 無音スイッチには反応しません。他の音と混ざることも、混ざらないこともあります。バックグラウンドでの録音・再生が可能です。

割り込みが終了したときに、オーディオ再生を自動的に再開するかどうかを判断します 別のアプリケーションからのオーディオが、自分のアプリケーションが再生しているオーディオを中断することがあります。割り込みには、電話の着信のように再開可能なものと、新しい音楽プレイリストを開始したときのように再開不可能なものがあります。再生を自動的に再開するかどうかを決めるには、中断の種類とアプリの種類を使用します。例えば、中断が発生したときにオーディオを再生しているメディア再生アプリは、中断が終了したときに再生を継続する前に、再開可能なタイプであることを確認する必要があります。一方、ゲームのようなアプリは、自動的に再生を再開する前に中断タイプを確認する必要はありません。なぜなら、ゲームはユーザーの明示的な選択なしにオーディオを再生するからです。開発者向けのガイダンスとしては、shouldResume を参照してください。

VoIP アプリがオーディオ・セッションの中断に正しく反応するようにします 特に、内蔵マイクを使用しているときに iPad のスマートフォリオを閉じた場合には、通話を終了させることが重要です。Smart Folio を閉じると、iPad のマイクが自動的にミュートされ、デフォルトではそのマイクに関連するオーディオセッションが中断されます。ユーザーが Smart Folio を再び開いたときにオーディオセッションを再開すると、ユーザーが知らないうちにマイクが再び有効になり、ユーザーのプライバシーが侵害される危険性があります。オーディオセッションの中断を検査することで、適切な対応方法を判断することができます。開発者向けのガイダンスは、「オーディオセッションの中断に対応する」を参照してください。

一時的なオーディオの再生が終了したことを他のアプリに知らせる アプリが他のアプリのオーディオを一時的に中断することがある場合、他のアプリがいつ再開できるかを知らせる方法で、オーディオセッションにフラグを立てるようにしてください。開発者向けのガイダンスとしては、「notifyOthersOnDeactivation」を参照してください。

オーディオコントロールには、意味がある場合にのみ対応してください ユーザーは、アプリがフォアグラウンドであるかバックグラウンドであるかにかかわらず、Control Center やヘッドフォンのコントロールなど、アプリのインターフェイスの外からオーディオ再生をコントロールできます。アプリがオーディオを積極的に再生している場合、オーディオに関連する明確な状況にある場合、または Bluetooth や AirPlay 対応デバイスに接続されている場合は、オーディオコントロールに反応しても問題ありません。そうでない場合は、ユーザーがコントロールを起動したときに、アプリが現在再生中の他のアプリのオーディオを停止させてはいけません。

オーディオコントロールを再利用しないでください 人々は、オーディオコントロールがすべてのアプリで一貫した動作をすることを期待しているので、あなたのアプリでオーディオコントロールの意味を再定義してはいけません。アプリが特定のコントロールをサポートしていない場合は、単にそれに対応しないでください。


User interaction - Authentication

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/authentication/

認証

ユーザーには、体験のカスタマイズ、追加機能へのアクセス、コンテンツの購入、データの同期などの価値と引き換えにのみ、認証を求めることができます。アプリケーションで認証が必要な場合は、Sign in with Apple を使用して、簡単で安全な方法でサインインできるようにしましょう。Sign in with Apple に対応すると、信頼できる一貫したサインイン体験と、複数のアカウントやパスワードを覚えておく必要のない利便性が得られます。

Sign in with Apple を利用していない場合は、Password AutoFill をご利用ください この機能は、パスワードやセキュリティコードを自動的に生成して入力するので、認証画面に費やす時間を短縮できます。すべてのアプリケーションでこの機能をサポートする必要があります。開発者向けガイダンスは Supporting Password AutoFill をご覧ください。

サインインを可能な限り遅らせる 人々は、有益なことをする前にサインインを余儀なくされると、アプリを放棄してしまうことがよくあります。アプリにコミットする前に、そのアプリを好きになるチャンスを与えましょう。ショッピングアプリでは、起動してすぐに商品を見てもらい、購入の準備ができてからサインインしてもらうようにします。メディアストリーミングアプリでは、サインインして何かを再生する前に、コンテンツを探索して、何を提供しているかを確認してもらいます。

認証の利点とサービスへの登録方法を説明する アプリで認証が必要な場合は、ログイン画面に簡単で親切な説明を表示し、必要な理由とそのメリットを説明します。また、アプリを利用するすべての人が最初からアカウントを持っているわけではないことを忘れないでください。アカウントを取得する方法を説明するか、アプリ内で簡単にサインアップできる方法を提供してください。

適切なキーボードを表示することで、データ入力を最小限に抑えます たとえば、メールアドレスの入力を求めるときは、データ入力に便利なショートカットを含むメールキーボード画面を表示します。関連するガイダンスについては、「キーボード」を参照してください。利用可能なキーボードタイプの完全なリストについては、UITextInputTraits の UIKeyboardType 定数を参照してください。

「パスコード」という言葉は絶対に使わないでください パスコードは、生体認証が無効な場合に、ユーザーの iOS デバイスのロック解除や Apple Pay での認証に使用されます。

Apple Pay 認証設計ガイダンスについては、「Apple Pay」を参照してください。

Face ID と Touch ID

可能な限り、生体認証をサポートします Face ID と Touch ID は、人々が信頼する安全で使い慣れた認証方法です。ユーザーが生体認証を有効にしている場合、その仕組みを理解し、利便性を評価し、可能な限り使用したいと考えていると考えられます。ユーザーが自分のデバイスで生体認証を無効にすることを選択する可能性があることを念頭に置き、アプリはこのシナリオに対応できるように準備する必要があります。

認証方法を 1 つに絞ること 最も直感的なのは、認証方法を選択する必要がないことです。Face ID のような単一の選択肢を提供してください。ユーザー名とパスワードの入力を求めるなどの代替手段は、最初の方法が失敗した場合にのみ提供します。

ユーザーのアクションに応じてのみ認証を開始する ボタンをタップするなどの明確なアクションは、ユーザーが認証を望んでいることを確実にします。Face ID の場合は、ユーザーがカメラの方を向いている可能性も高くなります。

認証方法を常に明示する 例えば、Face ID を使ってアプリにサインインするためのボタンは、“Sign In “ではなく “Sign In with Face ID “というタイトルにすべきです。

認証方法を正確に示す Face ID をサポートしているデバイスの Touch ID を参照してはいけません。逆に、Touch ID に対応しているデバイスで Face ID を参照してはいけません。デバイスの機能を確認し、適切な用語を使用してください。開発者向けのガイダンスとしては、LABiometryType を参照してください。

一般に、アプリ内で生体認証を選択するための設定を提供することは避けてください システムレベルで生体認証が有効になっている場合は、ユーザーがそれを使用したいと考えていると考えてください。アプリ固有の設定を実装すると、実際にはシステム全体で無効になっている生体認証が、アプリ内では有効になっているように見える状態になる可能性があります。

システム認証機能の識別にアイコンを使わない システムの Touch ID(親指の指紋)や Face ID のようなアイコンを見ると、ユーザーは認証するものだと思ってしまいます。認証機能を識別するためにアイコンを使用すると、一貫性がなく、特にアイコンがカラー化されていたり、大きなサイズで表示されていたり、文脈を無視して表示されている場合には混乱が生じます。

開発者向けのガイダンスについては、「ローカル認証」を参照してください。


User interaction - Data entry

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/data-entry/

データ入力

インターフェイスの要素をタップしても、キーボードを使っても、情報を入力するのは面倒な作業です。アプリが何かをする前に多くの入力を求めてプロセスを遅らせてしまうと、人々はすぐに落胆し、アプリを完全に放棄してしまうかもしれません。

可能な限り選択肢を提示する データ入力はできるだけ効率的に行いましょう。例えば、テキストフィールドの代わりにピッカーやテーブルを使用することを検討してください。

可能な限りシステムから情報を得てください 連絡先やカレンダーの情報など、自動的に収集できる情報や、ユーザーの許可を得て収集できる情報は、無理に提供しないようにしてください。

妥当なデフォルト値を提供する 可能な限り、最も可能性の高い値をフィールドに入力する。適切なデフォルト値を提供することで、意思決定を最小限に抑え、プロセスを高速化することができます。

必要な値を収集した後でのみ、先に進むを有効にする 「次へ」または「続ける」ボタンを有効にする前に、すべての必須フィールドに値があることを確認します。ボタンを有効にすることで、先に進むべき時が来たことを視覚的に知らせます。

フィールドの値を動的に検証する 長いフォームを入力した後に、もう一度戻って間違いを訂正しなければならないのは、イライラするものです。可能な限り、入力後すぐにフィールド値をチェックし、ユーザーがすぐに修正できるようにしましょう。

必要なときだけフィールド値を入力させる 必須フィールドは、入力を進める上で本当に必要な情報のみに使用してください。

値のリストを見やすくする 特にテーブルやピッカーでは、値を選ぶのが簡単でなければなりません。値のリストをアルファベット順に並べたり、論理的な方法で並べることで、素早くスキャンして選択できるようにしましょう。

テキストフィールドにヒントを表示して目的を伝えやすくする テキストフィールドには、他のテキストが入力されていない場合、「E メール」や「パスワード」などのプレースホルダーテキストを入力することができます。プレースホルダーテキストで十分な場合は、テキストフィールドの説明に別のラベルを使用しないでください。


User interaction - Drag and drop

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/drag-and-drop/

ドラッグ&ドロップ

選択した写真やテキストなどのコンテンツを、指一本で別の場所にドラッグし、指を上げてドロップすることで、コンテンツの移動や複製が可能になります。

選択したコンテンツをタッチしたままにすると、コンテンツが上昇してユーザーの指に付着したように見える。コンテンツをドラッグすると、アニメーションと視覚的な合図でドロップ先が表示されます。また、ドロップができない場合や、移動ではなく複製になってしまう場合には、バッジが表示されます。開発者向けのガイダンスとしては、UIKit のドラッグ&ドロップを参照してください。

ソースとデスティネーション

ドラッグ&ドロップでは、選択したコンテンツをソースの位置からデスティネーションに移動させます。これらの場所は、テキストビューのように同じコンテナ内にある場合もあれば、分割ビューの反対側にあるテキストビューのように異なるコンテナ内にある場合もあります。例えば、ノートでは、選択したテキストを同じノート内の新しい場所にドラッグできます。リマインダーでは、個々のリマインダーをあるリストからドラッグして、別のリストにドロップすることができます。

iPad では、ソースとデスティネーションの場所が異なるアプリケーションにも存在するため、Safari のウェブページからメールの新規メッセージに写真をドラッグするなど、アプリケーション間でのインタラクションが可能です。コンテンツをドラッグしている間、ユーザーはマルチタスク、ホーム画面への退出、または画面下から上にスワイプして Dock を表示することで、別のアプリケーションにアクセスすることができます。

注意
アプリ間でコンテンツをドラッグ&ドロップすると、コンテンツの移動ではなく、重複してしまいます。

ドラッグ&ドロップのサポート

ドラッグ&ドロップは効率的で直感的な機能であり、ユーザーはシステム全体に実装されることを期待しています。テキスト、写真、ビデオ、オーディオなど、移動、コピー、挿入が必要なコンテンツをアプリで作成する場合は、ドラッグ&ドロップをサポートする必要があります。

すべての選択可能なコンテンツと編集可能なコンテンツでドラッグ&ドロップを利用できるようにします 選択可能なコンテンツはドラッグ可能で、編集可能なコンテンツはドロップされたコンテンツを受け入れる必要があります。また、アプリがこれらの領域でのコピー&ペーストをサポートしていることも確認してください。

必要に応じてコントロールにコンテンツをドロップできるようにします 一般に、テキストフィールドなどのデータ入力や選択が可能なコントロールは、コンテンツをドロップできるように設定します。

可能な限り、標準のテキストビューとテキストフィールドを使用してください これらのシステム要素には、ドラッグ&ドロップのサポートが組み込まれています。関連するガイダンスについては、「テキストフィールドとテキストビュー」を参照してください。開発者向けのガイダンスとしては、「UITextField」と「UITextView」を参照してください。

効率化のために、複数アイテムのドラッグ&ドロップに対応することを検討します 多くのアプリケーションでは、ユーザーが 1 本の指で 1 つのアイテムをドラッグし、ドラッグ中にもう 1 本の指でアイテムをタップして追加アイテムを選択することができます。選択されたアイテムは一緒に移動し、元のアイテムをドラッグしている指の下に重ねて表示されます。ユーザーは、これらのアイテムをグループとしてドラッグし、目的の場所にドロップします。例えば、ホーム画面では、複数のアプリアイコンを選択して一度にフォルダにドラッグすることができます。写真」などの一部のアプリでは、ドラッグする前に複数のアイテムを選択できる選択モードが用意されています。

アプリ内でコンテンツをドラッグ&ドロップする際に、移動とコピーのどちらを行うかを決定します 一般的には、移動元と移動先のコンテナが同じ場合(ドキュメント内でのテキストのドラッグ)には移動が、異なる場合(ドキュメント間やアプリ間でのドラッグ)にはコピーが適しています。しかし、これは必ずしもそうとは限りません。何よりも、ドラッグ&ドロップは直感的に操作できなければなりません。リマインダーでは、リスト間でリマインダーをドラッグすると、コピーではなく移動されます。アプリ間でコンテンツをドラッグ&ドロップすると、必ずコピーされます。

可能な限り、ドラッグ&ドロップを取り消すことができます 一般的に、ユーザーが誤ってコンテンツを誤った場所にドロップした場合、「元に戻す」を使用してアプリを以前の状態に戻すことができなければなりません。つまり、ドロップしたコンテンツを削除し、アプリ内の他の場所から移動した場合は、元の場所に戻す必要があります。

スプリングローディングの有効化を検討します スプリングローディングを有効にすると、ユーザーは、選択したコンテンツをドラッグして、コンテンツをドロップせずに一時停止することで、ボタンやセグメントコントロールなどの特定のコントロールをアクティブにすることができます。例えば、Mail では、選択したメッセージをナビゲーションバーの「戻る」ボタンの上にドラッグすると、メールボックス階層の別の場所に移動することができます。スプリングローディングは、コントロールをアクティブにする唯一の方法ではありません。スプリングローディングは、コントロールを作動させる唯一の方法ではなく、発見される可能性のある装飾として使用してください。ほとんどの場合、スプリングローディングされたコントロールは、タップジェスチャーにも反応するはずです。開発者向けのガイダンスとして、UISpringLoadedInteraction を参照してください。

ドラッグしたコンテンツの提供

必要に応じて、ドラッグアイテムのプレビューをカスタマイズします 一般的に、ユーザーの指の下に表示されるプレビューは、ドラッグされているコンテンツを半透明で表現する必要があります。この表示により、コンテキストが提供され、ドラッグが進行中であることが示され、ドラッグされたコンテンツの下にある目的地を確認することができます。

ドラッグされたデータは、可能な限り、忠実度の高いものから低いものまで、複数の表現を提供します 例えば、線画を提供する場合は、PDF のベクター表現、透過性のあるロスレス PNG 画像、透過性のないロスレス JPEG 画像の順に提供することができます。このようにして、送信先はインポート可能な最高品質の表現を選択することができます。

必要に応じて、カスタムオブジェクトのネイティブバージョンを最もリッチなデータとして表示します 例えば、グラフをドラッグするアプリでは、まずネイティブのグラフオブジェクトを表示します。次に、チャートオブジェクトをサポートしていないアプリのために、チャートの画像バージョンなどの代替品を提供します。

アプリのコンテンツの転送に時間やリソースがかかる場合は、ファイルプロバイダエクステンションを導入します ファイルプロバイダエクステンションは、アプリが実行されていなくても、転送プロセスを管理し、確実に完了させます。なお、転送プロセスは、ユーザーがコンテンツをドロップするまで開始されません。開発者向けのガイダンスについては、NSFileProviderExtension を参照してください。

アプリのコンテンツの転送に時間がかかる場合は、進捗情報を提供します コンテンツのダウンロードが必要な場合や、大きなファイルのコピーに時間がかかる場合は、進捗情報を提供します。最低限、コンテンツの合計サイズを提供することで、転送先が残り時間を計算し、適切な進行状況を表示することができます。開発者向けのガイダンスについては、「NSProgress」を参照してください。

ドロップされたコンテンツの受け入れ

視覚的な手がかりを使って行き先の候補を特定し、コンテンツをドロップしたときの効果をプレビューします コンテンツのドロップ先を特定するには、ハイライト表示、挿入ポイント表示、アニメーションなどが有効です。コンテンツがドラッグされると、ビューが微妙に点滅したり、色が変わったりします。また、ドラッグされた画像のために段落が移動することもあります。画面上に複数の移動先がある場合は、一度に一つずつ確認します。ソースコンテナとデスティネーションコンテナが同じであれば、コンテンツがソースから完全にドラッグされて再びソースに入る場合を除き、ハイライトは不要な場合があります。コンテンツがドロップされたり、デスティネーションの上に配置されなくなると、ハイライトが削除されることを確認してください。

適切な場合、デスティネーションのコンテンツを自動的にスクロールする コンテンツが移動先の範囲外にドラッグされた場合、移動先のコンテンツをスクロールするか、ユーザーがまったく別の移動先にドラッグを続けることを許可するかをアプリが判断する必要があります。ユーザーがドラッグを続ける場合は、ドラッグされたアイテムがその上に配置されたときに自動的にスクロールする領域を定義することを検討してください。例えば、Mail の長い下書きメッセージは、コンテンツが本文領域の上部または下部にドラッグされると、自動的にスクロールします。標準のテキストビューやテキストフィールドでは、この動作が自動的に行われます。

ドロップされたコンテンツの可能な限りリッチな表現を抽出して表示します 例えば、アプリにいくつかのチャートの表現が提供される場合があります。アプリがチャートをサポートしている場合は、ネイティブのチャートオブジェクトを抽出して表示できます。アプリがチャートをサポートしていない場合は、代わりにチャートの画像バージョンを抽出して表示することができます。

必要に応じて、ドロップされたコンテンツの関連部分のみを抽出します たとえば、ユーザーが連絡先を Contacts から Mail メッセージの受信者フィールドにドラッグした場合、名前とメールアドレスのみが使用され、連絡先の住所情報は使用されません。

コンテンツが削除された後、テーブルビューやコレクションビューにプレースホルダーを表示する プレースホルダーは、コンテンツの転送が完了した後にコンテンツが置かれる場所を一時的に示します。

ドロップされたコンテンツの転送に時間がかかる場合、進捗状況を表示する デフォルトでは、アプリ間で時間のかかる転送が発生した場合、システムはアプリモーダルアラートを表示します。例えば、テーブルビューやコレクションビュー内のプレースホルダーに進捗状況を表示するなど、進捗状況の表示方法をカスタマイズすることで、ユーザーがアプリの使用を妨げられないようにすることができます。なお、ユーザーがコンテンツをドロップしないと、転送プロセスは開始されません。

コンテンツのドロップによりプロセスが開始されたときにフィードバックを提供する ユーザーがコンテンツをコントロールにドロップすることでタスクが開始された場合、タスクが開始されたことを示し、その進捗状況をユーザーに知らせます。

ドロップが失敗したらユーザーに知らせる ファイル転送が中断されたなどの理由でドロップしたコンテンツを挿入できなかった場合は、ドロップが失敗したことをユーザーに知らせる。

ドロップしたテキストに適切なスタイルを適用する ソースとデスティネーションが同じスタイルのテキスト属性をサポートしている場合、ドロップされたテキストは元のフォント、書体、サイズ、およびその他の属性を維持する必要があります。そうでない場合は、ドロップしたテキストは宛先のスタイルを採用する必要があります。

ユーザーがドラッグ&ドロップをすぐに取り消すことができない場合には、さりげなく、直感的に操作を中止する方法を提供することを検討してください 例えば、共有アプリでは、ドロップしたコンテンツを投稿する前に、中間的な共有シートを表示します。この共有シートでは、ステータスメッセージなどの追加コンテンツを提供するとともに、キャンセルボタンを提供することができます。Photos では、共有フォトストリームに写真がドラッグされたときにこのような動作をします。


User interaction - Feedback

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/feedback/

フィードバック

フィードバックは、アプリケーションが何をしているのかを知り、次に何ができるのかを発見し、行動の結果を理解するのに役立ちます。

ステータスなどのフィードバックをインターフェイスにさりげなく組み込む 理想的なのは、ユーザーが何もしなくても、あるいは邪魔されなくても、重要な情報を得られることです。例えば Mail では、メールボックスの中を移動する際に、ツールバーにステータス情報をさりげなく表示しています。この情報は、画面上の主要コンテンツと競合することなく、いつでもパッと見て確認することができます。

不必要なアラートを避ける アラートは強力なフィードバックメカニズムですが、重要な情報、そして理想的には実行可能な情報を提供するためにのみ使用するべきです。重要な情報を含まないアラートを多く目にすると、人々はすぐに今後のアラートを無視するようになります。その他のガイダンスについては、「アラート」を参照してください。

触覚フィードバックのガイダンスについては、「触覚」を参照してください。


User interaction - File handling

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/file-handling/

ファイル操作

ファイルを作成したり、閲覧したり、操作したりするときに、ファイルシステムのことを考える必要はありません。あなたのアプリがファイルを扱うなら、ファイル処理をできるだけ軽視してください。

キャンセルや削除をしない限り、仕事は常に保存されているという自信を持たせる 一般的には、ファイルを明示的に保存させることはありません。代わりに、一定の間隔で、ファイルを開いたり閉じたり、他のアプリに切り替えたりしたときに、変更を自動的に保存します。ただし、既存のファイルを編集しているときなどは、編集内容が実際に取り込まれたかどうかを確認するために、保存やキャンセルのオプションが必要な場合もあります。

ローカルのみのファイルを作成するオプションを提供しない ユーザーは、すべてのファイルがすべてのデバイスで利用できることを期待しています。可能な限り、iCloud などのクラウドベースのファイルストレージをサポートしてください。

直感的でグラフィカルなファイル閲覧インターフェースを導入する ファイルの閲覧には、システムでおなじみのドキュメントピッカーを使うのが理想的です。カスタムのファイルブラウザを実装する場合は、直感的で効率的なものにしてください。ファイルブラウザは、ファイルを視覚的に表現したグラフィカルなものが最適です。より迅速なナビゲーションのために、新規ドキュメントボタンを提供し、ユーザーが新規ドキュメントを作成するために他の場所に移動する必要がないようにします。

ユーザーがアプリを離れずにファイルをプレビューできるようにする クイックルックを使えば、Keynote、Numbers、Pages の文書、PDF、画像など、特定の種類のファイルをアプリで実際に開かなくても、その内容を見ることができます。詳しくは「クイックルック」をご覧ください。

他のアプリケーションとのファイル共有を検討する 意味がある場合は、ファイルプロバイダ拡張機能を使って、アプリでファイルを他のアプリと共有できます。また、アプリで他のアプリのファイルを閲覧したり開いたりすることもできます。開発者向けのガイダンスについては、「アプリにドキュメントブラウザを追加する」を参照してください。


User interaction - Game controllers

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/game-controllers/

ゲームコントローラー

ゲームコントローラは、ゲームプレイを向上させ、ゲームへの没入感を高めることができます。可能な限り多くのゲームコントローラーをサポートすることで、ゲームやアプリとのインタラクションを楽しむ方法が増えます。

ゲームコントローラーの要件を決定する ゲームにリモートでは対応できない高度なゲームメカニズムがある場合は、ゲームコントローラの使用を要求できます。App Store では、このようなアプリケーションを識別するために「Game Controller Required」バッジが表示され、互換性のあるゲームコントローラを iOS デバイスとペアリングしていない場合は警告が表示されることがあります。

起動時に必要なゲームコントローラーの接続を確認する ユーザーは、ゲームコントローラーが接続されていなくても、いつでもゲームを開くことができます。ゲームコントローラーが必要なアプリの場合は、起動時にゲームコントローラーの有無を確認し、必要に応じて接続を促すようにしましょう。

アプリでゲームコントローラーを使うことの利点を理解してもらう アプリがリモートとゲームコントローラの両方をサポートしている場合は、リモートではできないことをゲームコントローラでできることを示します。

サポートされているすべての入力デバイスをテストします アプリがサポートするすべての入力デバイスでメニューや重要なナビゲーションが動作することを確認してください。

開発者向けのガイダンスについては、「ゲームコントローラー」を参照してください。

ボタン類

ゲーム機のコントローラーには、人間工学に基づいた様々な方法で配置された同じようなボタンがあります。その一例をご紹介しましょう。

クリックできるサムスティックがある場合は、それに対応する コントローラーの中には、クリックしたり、押し続けたり、回転させたりできるサムスティックが付いているものがあります。これらのボタン(L3 および R3 と呼ばれる)は、通常、サムスティックを回転させることで有効になるアクションを変更することができる。例えば、左のサムスティックをクリックまたは押し続けることで動きが可能になり、異なる速度で動くことができたり、カメラの向きを調整する右のサムスティックをクリックまたは押し続けることで、ズームインしたり、「しゃがむ」ことができたりします。クリックできるサムスティックのサポート方法を検討する際には、様々なジャンルのゲームで人々が期待する動作を参考にしてください。

一般的には、左のサムスティックや D パッドのボタンを使って、現在の画面の中でフォーカスを移動させることが好まれます 一般的に、ゲーム中に右の親指スティックを使ってフォーカス移動を行うことは想定されていません。

一般的に、トリガーやショルダーボタンを使って UI を操作することは避けてください ゲームの UI が深く入り組んでいて、高速なナビゲーションが必要な場合を除き、通常は A ボタンと B ボタンを使って操作してもらうのがベストです。

接続されているゲームコントローラに合わせて、画面上の説明をカスタマイズする コントローラーによって、同じようなボタンでも、色や記号が異なる場合があります。例えば、Xbox コントローラでは B ボタンは赤ですが、MFI コントローラでは同じボタンは緑です。混乱を避けるために、接続されているコントローラの表示方法でボタンを参照してください。


User interaction - Gestures

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/gestures/

ジェスチャー

人々は、タッチスクリーン上でジェスチャーを行うことによって、iOS デバイスを操作します。これらのジェスチャーは、コンテンツとの密接な関係をもたらし、画面上のオブジェクトを直接操作している感覚を高めます。

基本的には、標準的なジェスチャーを使用してください 人々は標準的なジェスチャーに慣れ親しんでおり、同じことをするのに別の方法を覚える必要はありません。ゲームなどの没入感のあるアプリでは、カスタムジェスチャーが楽しい体験の一部になります。その他のアプリでは、標準的なジェスチャーを使用することで、ジェスチャーを発見したり覚えたりするための特別な努力が不要になります。

標準的なジェスチャーで非標準的な動作を行うことは避けてください アプリが積極的なゲームプレイを行うゲームでない限り、標準ジェスチャーの意味を再定義することは、混乱や複雑さにつながります。

システムワイドなスクリーンエッジジェスチャーの妨害を避ける デバイスにもよりますが、スクリーンエッジジェスチャーは、ホーム画面、アプリスイッチャー、通知センター、コントロールセンター、Dock へのアクセスを提供します。人々は、これらのジェスチャーがすべてのアプリで機能することを期待しています。まれに、ゲームなどの没入型アプリケーションでは、システムのジェスチャーよりも優先される独自のスクリーンエッジジェスチャーが必要になることがあります。1 回目のスワイプでアプリ固有のジェスチャーが起動し、2 回目のスワイプでシステムジェスチャーが起動します。最初のスワイプでアプリ固有のジェスチャーが起動し、2 回目のスワイプでシステムジェスチャーが起動します。この動作(エッジプロテクト)は、システムレベルのアクションへのアクセスが困難になるため、実装は控えめにする必要があります。開発者向けのガイダンスとしては、UIViewController の prioredScreenEdgesDeferringSystemGestures プロパティを参照してください。

ショートカットジェスチャーは、インターフェースベースのナビゲーションやアクションに代わるものではなく、補完するものです 可能な限り、たとえタップ数が増えても、シンプルで目に見えるナビゲーションやアクションを提供する。多くのシステムアプリケーションには、前の画面に戻るための明確でタップ可能なボタンを備えたナビゲーションバーがあります。しかし、ユーザーは画面の横からスワイプして戻ることもできます。iPad では、ホームボタンを押すか、4 本指でつまむようなジェスチャーで、ホーム画面に戻ることができます。

複数の指を使ったジェスチャーは、一部のアプリケーションをより快適にします 複数の指を同時に使うジェスチャーは、すべてのアプリに適しているわけではありませんが、ゲームやお絵かきアプリなど、一部のアプリでは体験を豊かにすることができます。例えば、ゲームでは、ジョイスティックや発射ボタンなど、同時に操作できる複数の操作部が画面上に配置されている場合があります。

開発者向けのガイダンスについては、UIGestureRecognizer を参照してください。

標準的なジェスチャー

一般的に、以下の標準的なジェスチャーは、システム全体やすべてのアプリで同じように動作すると考えられています。

タップ コントロールを起動したり、アイテムを選択したりします。

ドラッグ 要素を左右に移動させたり、画面上で要素をドラッグしたりします。

フリック スクロールやパンを素早く行うことができます。

スワイプ 1 本指で操作すると、前の画面に戻ったり、分割表示されたコントローラの隠しビューを表示したり、テーブルビューの行の削除ボタンを表示したり、Peek のアクションを表示したりします。iPad で 4 本指で操作すると、アプリを切り替えることができます。

ダブルタップ コンテンツや画像をズームインして中央に表示したり、すでにズームインしている場合はズームアウトしたりします。

ピンチ 外側にピンチするとズームイン、内側にピンチするとズームアウトします。

三本指ピンチ 内側につまむと選択した文字列をコピーし、外側につまむとコピーした文字列をペーストします。

3 本指でのスワイプ 左にスワイプするとアンドゥ、右にスワイプするとリドゥになります。

タッチアンドホールド 編集可能または選択可能なテキストで実行すると、指先でテキストをハイライトし、編集メニューを表示します。

回転させる 画像やビューを回転させます。

シェイク 元に戻す、やり直しを行う。


User interaction - Haptics

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/haptics/

ハプティクス

ハプティクスは人の触覚に働きかけ、画面上のインターフェイスとのインタラクション体験を向上させます。例えば、Apple Pay のトランザクションの確認を強調するために、システムは視覚と聴覚のフィードバックに加えて、ハプティクスを再生します。また、ハプティクスは、ピッカーのスクロールやスイッチの切り替えなどのタッチジェスチャーやインタラクションを強化することもできます。開発者向けガイダンスについては、アニメーションとハプティクスをご覧ください。

サポートされている iPhone モデルでは、いくつかの方法でアプリにハプティクスを追加することができます。

  • スイッチ、スライダ、ピッカーなどの標準的な UI 要素を使用し、Apple が設計したシステムハプティクスをデフォルトで再生します。
  • 意味がある場合は、フィードバックジェネレータを使用して、通知、衝撃、選択のカテゴリでいくつかの事前定義された触覚パターンのいずれかを再生します(開発者向けガイダンスは、UIFeedbackGenerator を参照)。
  • もっとコントロールしたい場合は、独自のハプティック・パターンを作成して再生します。詳しくは、「カスタム触覚パターンの作成」を参照してください。

システムが提供するコントロールとハプティックを使用する場合、iOS はフィードバックの強さと動作を管理します。例えば、スイッチは自動的に微妙なタップ音を再生し、「成功」通知のフィードバックジェネレータは以下に示すパターンを再生します。システムで定義された触覚は人が認識するものなので、文書化された意味に従って使用することが重要です。

通知

通知用のハプティクスは、小切手の預け入れや車両のロック解除など、タスクやアクションの結果に関するフィードバックを提供します。

成功 タスクやアクションが完了したことを示す。

警告 タスクやアクションが何らかの警告を発したことを示す。

失敗 タスクやアクションが失敗したことを示す。

インパクト

インパクトハプティクスは、視覚的な体験を補完するために使用できる物理的なメタファーです。例えば、人は景色がカチッと収まったときに「タップ」と感じたり、2 つの重い物体が衝突したときに「ドスン」と感じたりします。

軽量 小型・軽量の UI オブジェクト同士の衝突を示す。

中型 中型または中重量の UI オブジェクトの衝突を示します。

重い 大型または重量のある UI オブジェクトの衝突を示します。

硬い 硬い、または柔軟性のない UI オブジェクト同士の衝突を示します。

柔らかい 柔らかい、または柔軟な UI オブジェクト同士の衝突を示します。

選択

選択ハプティクスは、UI 要素の値が変化している間、フィードバックを提供します。

選択 UI 要素の値が変化していることを示す。

システムが提供するハプティクスを使用する場合でも、独自のハプティクスを作成する場合でも、人々の目的から気をそらすことなく、ユーザー・エクスペリエンスを豊かにする方法でハプティクスを使用することが重要です。

ハプティクスを用いたデザイン

人々の触覚を刺激するインターフェースをデザインすることで、人々の物理的な世界への親近感をアプリに取り入れることができます。アプリ内のハプティックをどのように制作するかに関わらず、以下のガイドラインは、人々にまとまりのある魅力的な体験を提供するのに役立ちます。

各ハプティックとそのトリガーの間に、明確な因果関係を構築する 理想的なのは、アプリがなぜハプティックパターンを再生するのか、人々が常に知っていることです。ハプティックが因果関係を強化していないと、混乱を招き、無償のものと思われてしまいます。

アプリ内の他のフィードバックを補完する方法で、触覚を使用してください アプリの視覚、聴覚、触覚のフィードバックが調和していると、物理的な世界と同じように、ユーザー体験がより一貫したものになり、より自然に感じられます。

ハプティクスは慎重に使用してください 例えば、ハプティクスは長期的な価値を提供する場合に使用し、目新しさを加えるために使用すると、アプリがギミックに満ちたものになってしまいます。また、少数の重要かつ結果的なインタラクションにハプティクスを追加することをお勧めします。多数の些細なインタラクションにハプティクスを使用すると、人々を圧倒してしまいます。

一貫してハプティクスを使用する ハプティックフィードバックに一貫性があると、人々は特定のハプティックパターンと特定の経験との間に触覚的な関連性を築くことができます。例えば、ゲームのキャラクターがミッションを完了できなかったときに、アプリが特定の触覚パターンを再生すると、人々はそのパターンを否定的な結果と関連付けることを学びます。レベルクリアのようなポジティブな結果に同じ触覚パターンを使用すると、人々は混乱します。

ハプティックの使いすぎに注意してください ハプティックは、たまに体験するとちょうどいいと感じることがありますが、頻繁に体験すると飽きてしまいます。一般的には、触覚のフィードバックが長く続いたり、繰り返されたりするような体験のデザインは避けてください。多くの場合、最高のハプティック体験とは、人々が意識していなくても、それがオフになったときに見逃すようなものです。

アプリの中の触覚を必ずテストしてください 人によって、ハプティクスに対する好みや感度のレベルが異なるため、できるだけ多くの人でハプティクスをテストする必要があります。

ハプティクスをオプションにする 希望する人にはハプティクスをオフにしたりミュートにしたりしてもらい、ハプティクスがなくてもアプリを楽しめるようにします。

ゲームでは、プレイヤーの体験を向上させるためにカスタムハプティクスを使用する方法を検討します プレイヤーがアイテムやコントロールを操作するときにハプティクスを再生するだけでなく、ゲーム内のイベントを伝えるためにハプティクスを再生するのもよいでしょう。例えば、衝突やヒットのような実質的な体験や、足音の接近や迫り来る危険のような微妙な体験を、ハプティクスによって強化することができます。

ハプティクスを使用すると、他のユーザー体験に影響を与える可能性があることを意識してください ハプティクスは、デバイスが振動するのを感じられる程度の物理的な力を生み出すように設計されています。カメラ、ジャイロスコープ、マイクを使ったユーザー体験をハプティクスが妨げないようにしてください。

カスタム・ハプティック・パターンの作成

カスタムの触覚パターンは、パチンコの発射やランブル・ストリップの上を走ることなどを表現できます。また、カスタムパターンは、ユーザーの入力や状況に応じて動的に変化させることもできます。例えば、ゲームキャラクターが木から飛び降りるときの衝撃は、その場で飛び降りるときよりも強くすることができます。

iOS 13 以降では、Core Haptics は、カスタムの触覚パターンを生成する 2 つの基本的なビルディングブロックを提供します。

  • 一過性のイベント:ホーム画面の「懐中電灯」ボタンをタップしたときのような、タップやインパルスのように感じられる短時間のコンパクトな体験である。
  • 連続的なイベント:持続的な振動のような感覚、例えば、メッセージのレーザー効果のような体験

カスタムハプティックを生成するために選択したビルディングブロックに関わらず、そのシャープネスと強度をコントロールすることもできます。

シャープネスとは、触覚体験を、それに対応する物理的な感覚を生み出す波形に抽象化する方法と考えることができます。シャープネスを指定することで、あなたの体験に対する意図をシステムに伝えることができます。例えば、ソフトで丸みを帯びた有機的な感覚を伝えるためにシャープネス値を使用したり、クリスプで精密な機械的な感覚を伝えるためにシャープネス値を使用したりすることができます。強度とは、言葉通り、触覚の強さを意味します。

一時的なイベントと連続的なイベントを組み合わせたり、鋭さや強さを変えたり、オプションのオーディオコンテンツを入れたりすることで、さまざまな種類の触覚体験を作り出すことができます。開発者向けのガイダンスは、「Core Haptics」を参照してください。


User interaction - Near field communication

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/near-field-communication/

近距離無線通信

NFC(Near Field Communication)は、数センチ以内にあるデバイス同士がワイヤレスで情報を交換できる機能です。 対応デバイス上で動作する iOS アプリケーションは、NFC スキャンを利用して、実世界の物体に取り付けられた電子タグからデータを読み取ることができます。例えば、ユーザーがおもちゃをスキャンしてビデオゲームに接続したり、買い物客が店内の看板をスキャンしてクーポンにアクセスしたり、小売店の従業員が商品をスキャンして在庫を把握したりすることができます。

開発者向けガイダンスについては、「Core NFC」をご覧ください。

アプリ内でのタグ読み取り

アプリは、アプリがアクティブなときに単一または複数のオブジェクトのスキャンを可能にし、 ユーザーが何かをスキャンすることが予想されるときは常にスキャンシートを表示します。

物理的な物体への接触を促さないようにしましょう タグをスキャンするには、iOS デバイスがタグの近くにいるだけで十分です。実際にタグに触れる必要はありません。対象物のスキャンを依頼する際は、「タップ&タッチ」ではなく、「スキャン&ホールドニア」などの用語を使用してください。

親しみやすい用語を使う 近距離無線通信は、人によっては馴染みがないかもしれません。親しみやすくするために、NFC、Core NFC、Near Field Communication、タグなどの開発者向けの技術的な用語を使わないようにします。代わりに、ほとんどの人が理解できるような親しみやすい会話用語を使用します。

使用する 使用しない
[オブジェクト名]をスキャンします。 NFC タグをスキャンします。
iPhone を[オブジェクト名]に近づけると、そのオブジェクトについて詳しく知ることができます。 NFC スキャンを使用するには、[オブジェクト]に iPhone をタップします。

スキャンシートに簡潔な説明文を入れる 完結した文章を、文語体で、最後に句読点を入れて提供する。スキャンする対象物を特定し、次のスキャンのためにテキストを適切に修正する。文章は切り捨てられないように短くする。

最初のスキャン 後半のスキャン
[物体名]に iPhone を近づけると、その物体の詳細がわかります。 今度は別の[オブジェクト名]に iPhone を近づけてみてください。

バックグラウンド・タグ・リーディング

バックグラウンドタグリーディングは、いつでも素早くタグを読み取ることができる機能です。バックグラウンドタグリーディングに対応したデバイスでは、画面が点灯するたびに、システムが自動的に近くの対応タグを探します。タグが検出され、アプリと一致すると、通知が表示され、ユーザーがタップすると、タグのデータがアプリに送信され、処理されます。なお、NFC スキャンシートが表示されているとき、Wallet や Apple Pay を使用しているとき、カメラを使用しているとき、機内モードになっているとき、再起動後にデバイスがロックされているときは、バックグラウンドでの読み取りができません。

バックグラウンドでのタグ読み取りとアプリ内でのタグ読み取りの両方をサポートします バックグラウンドでのタグ読み取りをサポートしていないデバイスをお使いの方のために、アプリ内でタグをスキャンする方法を提供する必要があります。


User Interaction - Pointers

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/pointers/

ポインター(iPadOS)

iPadOS 13.4 では、iPad でポインティングデバイスを使用する際の体験を向上させるダイナミックなポインタの効果と動作を導入しています。人々がポインティングデバイスを使用すると、iPadOS は自動的にポインターを現在の状況に適応させ、豊かな視覚的フィードバックと、生産性の向上と一般的なタスクの簡素化に必要な適切なレベルの精度を提供します。

iPadOS のポインティングシステムは、アプリケーションやコンテンツを操作するための新たな方法を提供するものであり、タッチ操作に取って代わるものではありません。タッチ操作だけを使い続ける人もいれば、ポインターやその両方を使いたい人もいるでしょう。アプリとのインタラクション方法を選択してもらい、インターフェイスを凝縮したり、ポインターを使用しなければならないような変更を加えたりすることは避けてください。

開発者向けのガイダンスとしては、「ポインターインタインタラクション」を参照してください。

ポインターインタインタラクションの有効化

タッチ、ポインティングデバイス、キーボードのいずれを使用している場合でも、一貫したエクスペリエンスを提供することを目指します ユーザーは、タッチ操作と接続された入力デバイスの間を流動的に行き来する傾向があり、各モードや使用するアプリごとに異なるインタラクションを学ぶことはありません。

接続されたデバイスで使い慣れたジェスチャーを使ったときに、アプリ内のすべてのリージョンが正しく反応するようにします たとえば、画面上で指をスワイプすることでコンテンツを操作できる場合、トラックパッド上で 2 本の指を使ったり、ポインターでクリックしたりドラッグしたり、マウスホイールを動かしたりして、同じ動作をさせることに意味があるかどうかを検討します。開発者向けのガイダンスについては、UIApplicationSupportsIndirectInputEvents を参照してください。

アプリ内のオブジェクトを操作するときに修飾キーを押したままにすると、一貫したエクスペリエンスが得られます たとえば、Option キーを押しながらオブジェクトをドラッグすると、そのオブジェクトが複製される場合、タッチでドラッグしてもポインターでドラッグしても結果は同じになります。

ポインターと指の入力を区別するのは、それが価値をもたらす場合のみです 例えば、スクラバーを使えば、ポインターを使っている人がビデオの中の特定の場所を狙うための追加の方法を提供できます。このシナリオでは、ポインターでもタッチでもプレイヘッドをドラッグできますが、ポインターではホバーして正確なシーク先をクリックすることができます。

自動的に最小化やフェードアウトするコントロールを、ホバーで表示したり隠したりすることができます 例えば、最小化された Safari のツールバーにポインタを合わせると、ツールバーが表示されます(ポインタを離すとツールバーは再び最小化されます)。また、フルスクリーンのビデオを見ているときにポインタを合わせると、再生コントロールの表示/非表示を切り替えることができます。

ポインターの形状とコンテンツの効果

iPadOS は、ポインターとその上に置かれた要素の両方の外観と動作を統合し、人々が狙っているアイテムに焦点を当てます。システムが提供するポインターの効果をサポートすることも、アプリに合わせて変更することもできます。

デフォルトでは、ポインターの形状は円ですが、特定の要素や領域にカーソルを合わせたときに、システムで定義された形状やカスタム形状を表示することができます。例えば、テキスト入力エリアにカーソルを置くと、ポインターは自動的に見慣れた I ビームの形状を使用します。

コンテンツ効果では、ポインターの下にある UI 要素や領域も、ポインターがその上に乗ったときに外観を変えることができます。コンテンツエフェクトの種類に応じて、ポインターは現在の形状を維持するか、要素の新しい外観と一体化した形状に変形します。

iPadOS では、アプリ内のさまざまなタイプのインタラクティブ要素にフォーカスを当てるために、ハイライト、リフト、ホバーという 3 つのコンテンツエフェクトが定義されています。

ハイライト効果では、ポインターが半透明の丸みを帯びた長方形に変わり、コントロールの背景として機能し、緩やかな視差が生じます。繊細なハイライトと動きは、人々の作業を妨げることなく、コントロールに焦点を当てます。iPadOS のデフォルトでは、バーボタン、タブバー、セグメント化されたコントロール、およびエディットメニューにハイライト効果が適用されます。

リフト効果は、微妙な視差と高さのある外観を組み合わせて、要素が画面上に浮かんでいるように見せるものです。ポインターが要素の下でフェードアウトすると、iPadOS は要素を拡大しながら、要素の下にシャドウを、上にソフトなスペキュラハイライトを追加することで、浮き上がるような錯覚をもたらします。デフォルトでは、iPadOS はアプリケーションのアイコンとコントロールセンターのボタンにリフト効果を適用します。

ホバーは一般的なエフェクトで、ポインターがホバーする際に、カスタムのスケール、色合い、シャドウの値を要素に適用することができます。ホバー効果は、カスタム値を組み合わせてアイテムにフォーカスを当てるものですが、デフォルトのポインター形状は変形しません。

ポインターの磁力

iPadOS では、ポインターの変形やコンテンツの効果によって要素に焦点を合わせるだけでなく、要素がポインターを引き寄せるように見せることで、人々が要素を狙うのを助けることができます。ポインターを要素に近づけたり、要素に向かってポインターをフリックしたりすることで、この磁気効果を体験できます。

ポインターを要素に近づけると、ポインターが要素のヒット領域に到達した時点で、システムはポインターの形状を変化させ始めます。ヒット領域は通常、要素の可視範囲を超えているため、ポインターが要素に触れる前に変形が始まり、あたかも要素がポインターを引っ張っているような錯覚に陥ります。

人がポインターをある要素に向けてフリックすると、iPadOS はポインターの軌跡を調べて、ターゲットになりそうな要素を見つけ出します。ポインターの軌跡の中に要素があると、システムは磁力を使ってポインターを要素の中心に引き寄せます。

iPadOS のデフォルトでは、リフト効果(アプリアイコンなど)とハイライト効果(バーボタンなど)を使う要素には磁力が適用されますが、ホバーを使う要素には適用されません。ホバーを使用する要素では、デフォルトのポインターの形状が変化しないため、磁気を追加すると違和感があり、ポインターをコントロールできなくなったように感じられる可能性があります。

このシステムでは、テキスト入力エリアにも磁気を適用しています。テキストを選択しているときに意図しない垂直方向の動きをしても、別の行に飛ばされるのを防ぐことができます。

標準的なポインターとエフェクトのサポート

可能な限り、システムが提供するコンテンツの効果を有効にしてください 人々は、システム全体で目にするコンテンツ効果にすぐに慣れ、一般的にはその経験が自分の使用するアプリケーションにも適用されると考えます。一貫したユーザーエクスペリエンスを提供するために、各エフェクトの設計意図に従ってください。具体的には

  • 背景が透明な小さな要素にはハイライトを使用する。
  • 背景が不透明な小さな要素にはリフトを使用する。
  • 大きな要素には hover を使用し、必要に応じて scale、tint、shadow 属性をカスタマイズします(詳細は、「ポインタの形状と効果をカスタマイズする」を参照してください)。

標準的なボタンやテキスト入力エリアでは、システムが提供するポインターの外観を優先します ポインターが期待通りの動作をすることで、ユーザーが安心してアプリを使用できるようになります。

インタラクティブ要素の周囲にパディングを追加して、快適なヒット領域を作成します 要素のヒット領域の適切なサイズを決定するために、実験が必要な場合があります。ヒットリージョンが小さすぎると、要素を操作するときに、より正確に操作しなければならないと感じてしまいます。一方、要素のヒットエリアが大きすぎると、ポインタを要素から離すのに大変な労力を要するように感じられます。一般的には、ベゼルを含む要素の周りに約 12 ポイントのパディングを追加すると効果的です。ベゼルのない要素の場合は、要素の可視エッジの周りに約 24 ポイントのパディングを追加すると効果的です。

カスタムバーのボタンに連続したヒット領域を作成する バーの隣り合うボタンのヒット領域の間にスペースがあると、ボタンの間を移動するときにポインタが一時的にデフォルトの形に戻るときに、気になる動きをすることがあります。

リフト効果を受ける非標準要素のコーナー半径を指定する システムが提供するリフト効果では、ポインターがフェードアウトする際に、要素の形状に合わせて変形します。デフォルトでは、ポインターはシステムで定義されたコーナー半径を使用して、丸みを帯びた長方形に変形します。ポインターが要素の形状に合わせてシームレスにアニメーションするために、要素が円などの異なる形状の場合は、半径を指定する必要があります。開発者向けのガイダンスとして、UIPointerShape.roundedRect(_:radius:)を参照してください。

ポインターの形状と効果のカスタマイズ

標準的な要素と同様に動作するカスタム要素では、システムが提供するポインタ効果を優先します カスタム要素が標準要素と同じように動作する場合、人々は一般的に、慣れ親しんだポインタの相互作用を使ってその要素を操作することを期待します。例えば、カスタムナビゲーションバーのボタンに標準のハイライト効果が使われていないと、壊れていると思われてしまいます。

アプリ全体で一貫した方法でポインタ効果を使用します たとえば、絵を描くためのアプリであれば、アプリ内のすべての描画領域で同様のポインタ体験を可能にし、ある領域で得た知識を他の領域にも適用できるようにします。

無償のポインターとコンテンツの効果を作らないようにします 人は、ポインターやその下にある UI 要素の外観が変化すると気付き、その変化が有益なものであることを期待します。純粋に装飾的なポインター効果を作成すると、実用的な価値を提供することなく、人々の注意をそらしたり、苛立たせたりすることがあります。

カスタムポインターの形状はシンプルにしましょう ポインターの形状は、人々が現在の状況で取ることのできるアクションを示すものであり、それ自体にはあまり注意を払わないのが理想的です。例えば、Keynote では、ポインターを 2 本の矢印に変えて、選択ハンドルをドラッグできる方向を示しています。カスタムポインターの形をすぐに理解できなければ、その形が何を意味しているのかを知るために時間を費やすことになるでしょう。

有用な情報を提供するカスタムアノテーションを表示することで、ポインターの操作性を高めることができます たとえば、アプリ内のグラフ表示部分にポインターが重なったときに、X と Y の値を表示することができます。Keynote では、アノテーションを使って、サイズ変更可能な画像の現在の幅と高さを表示しています。

ポインターで説明文を表示するのは避けましょう ポインターに説明文が表示されていると、アプリが複雑で使いにくいものに見えてしまいます。ポインターを使っても、スクリーンに触れても、アプリの使い方をすぐに理解できるように、説明文を表示するのではなく、インターフェイスのわかりやすさとシンプルさを優先しましょう。

カスタムホバーエフェクトを定義する際は、シャドウ、スケール、要素の間隔の相互作用を考慮してください 一般的に、スケーリングは、近くの要素を圧迫することなくサイズを拡大できる要素に使用します。例えば、テーブルの行は、隣の行と重ならないように拡大することができないため、スケーリングはうまく機能しません。周りにほとんどスペースがない要素には、スケールとシャドウではなく、色合いを含むホバー効果の使用を検討してください。また、スケールを含まないシャドウを使用すると、スケールのない要素は、そのシャドウによって要素が画面よりも高くなったように見えても、視聴者に近づいているようには見えないため、うまく機能しません。


User Interaction - Spatial Interactions

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/spatial-interactions/

Spatial Interactions(スペース・インタラクション)

空間インタラクションは、デバイス上で、近くの環境にいる人や物の存在を統合した体験を可能にします。優れた空間インタラクションは、人が本来持っている空間認識能力をベースにしているため、直感的で自然に感じることができます。例えば、iPhone で音楽を聴いている人が、HomePod mini を近づけるだけで、その音楽を聴き続けることができます。

Nearby Interaction フレームワークでは、近くにあるデバイスからの情報を取り入れた空間的なインタラクションセッションを作ることができます。このような体験に参加する前に、人々はアプリを使用している間に自分のデバイスが相互作用することを許可します。Nearby Interaction フレームワークでは、ランダムに生成されるデバイスの識別子を利用して人々のプライバシーを守ることができます。この識別子は、アプリケーションが開始するインタラクションセッションの期間中のみ有効です。

近隣型インタラクションは、iOS 14 および watchOS 8 から利用可能で、iPhone 11 以降のモデルなど、U1 チップを搭載したデバイスが必要です。watchOS では、近距離インタラクションに参加するすべてのアプリケーションがフォアグラウンドである必要があります。開発者向けガイダンスについては、「近傍インタラクション」をご覧ください。

優れた空間インタラクションのデザイン

アプリの空間インタラクションをデザインする際には、以下のガイドラインを考慮してください。

タスクを実行する唯一の方法として空間的インタラクションを使用することは避けてください すべての人が空間的インタラクションを体験できるとは限らないので、アプリで物事を成し遂げるための別の方法を提供することが重要です。

空間的なインタラクションのヒントを得るために、物理的な世界の視点からタスクを考えてみましょう 例えば、iPhone から HomePod mini に曲を転送するには、画面上の UI を利用するのが簡単ですが、デバイスに近づくことでターゲットを絞ることができれば、直感的にタスクを実行することができます。タスクのコンセプトを伝える物理的な動作を発見することで、タスクの実行を簡単かつ自然に感じさせる魅力的な体験を生み出すことができます。

明確で信頼性の高いフィードバックを提供することで、人々が空間的相互作用を理解できるようにします 優れた空間的相互作用は、物理的な体験の自然な延長線上にあるように感じられ、人々が理解するために説明を必要としないはずです。人の動きとインタラクションのフィードバックを明確かつ一貫して結びつけることで、人はその仕組みをすぐに理解することができます。

インタラクションの情報は、距離、方向、文脈から得られます アプリはさまざまな情報源から情報を得ることができますが、近くにあって文脈的に関連性のある情報を優先することで、有機的に感じられる体験を提供することができます。例えば、混雑した部屋で友人とコンテンツを共有したい場合、iOS の共有シートは、ユーザーが最も頻繁に連絡を取る相手や最近連絡を取った相手に関するデバイス上の情報を使用して、受信者の可能性を提案します。この知識と、U1 チップを搭載した近くのデバイスからの情報を組み合わせることで、ユーザーが直面している最も近い連絡先を提案することができ、共有シートの使い勝手が向上します。

物理的な距離の変化がどのように空間的な相互作用を導くかを考えてみましょう 物理的な世界では、人は一般的に、対象物に近づけば近づくほど、その対象物に対する知覚が鋭くなると考えます。空間的なインタラクションは、対象物の近さに応じて変化するフィードバックを提供することで、この経験を反映することができます。例えば、iPhone を使って AirTag を探すとき、ディスプレイには方向を示す矢印が表示され、近づくと円が脈打つように表示されるようになります。

継続的なフィードバックを提供する 継続的なフィードバックは、物理的な世界のダイナミズムを反映し、空間的なインタラクションと人々が行っているタスクとの関連性を強める。人の動きに反応して途切れないフィードバックを提供することで、人を惹きつけることができます。

総合的な体験を生み出すために、複数の種類のフィードバックを使用することを検討してください 視覚、聴覚、触覚のフィードバックを流動的に切り替えることで、空間的なインタラクションのタスクをより魅力的でリアルに感じることができます。また、複数の種類のフィードバックを使用することで、タスクとユーザーのコンテキストの両方に合わせて体験を変化させることができます。例えば、ユーザーがデバイスの画面を操作しているときは視覚的なフィードバックを、環境を操作しているときは聴覚や触覚のフィードバックを、ユーザーの集中力の変化を補うことができます。

近くの人とのインタラクションを成功させるために

以下のガイドラインは、あなたのアプリで人々が素晴らしいインタラクティブ体験をするために役立ちます。

デバイスを縦向きに持つようにしてください デバイスを横向きに持つと、他のデバイスとの距離や相対的な方向に関する情報の精度や可用性が低下します。空間インタラクション機能の実行中に縦向きのみをサポートすると、最適な体験をするためのデバイスの持ち方に関する視覚的なフィードバックがアプリに表示されます。一般的には、このような暗黙的な視覚的フィードバックが好まれます。可能であれば、デバイスを縦に持つように明示的に指示することは避けてください。

デバイスの方向性を考慮したデザイン 近くにいる人とのインタラクションは、iPhone 11 のウルトラワイドカメラのような特定の視野を持つハードウェアセンサーに依存しています。参加しているデバイスがこの視野の外にある場合、アプリはその距離に関する情報を受け取るかもしれませんが、その相対的な方向はわかりません。

邪魔なものがアプリの近くでのインタラクション体験にどのような影響を与えるか、人々が理解できるようにします 2 台の参加デバイスの間に他の人、動物、または十分に大きな物体が入ってくると、距離と方向の情報の精度または可用性が低下する場合があります。このような状況を避けるためのアドバイスを、オンボーディングやチュートリアルのコンテンツに追加することを検討してください。


User Interaction - Undo and Redo

https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/undo-and-redo/

アンドゥとリドゥ

多くのアプリケーションでは、デバイスを振ることで、入力や削除などの操作を元に戻したり、やり直したりすることができます。このような操作を行うと、元に戻すか、やり直すかの確認を促すアラートが表示されます。

元に戻す、またはやり直す操作を簡潔かつ正確に記述します 取り消しとやり直しのアラートのタイトルには、自動的に「元に戻す」または「やり直す」という接頭語が含まれます(最後のスペースを含む)。この接頭辞の後に、元に戻す、またはやり直すことを説明する追加の単語を 1 つまたは 2 つ入れる必要があります。例えば、“Undo Name”(名前の取り消し)や “Redo Address Change”(住所変更の取り消し)などのアラートタイトルを作成することができます。

シェイクジェスチャーを元に戻す、やり直すに使用する場合、他のアクションには使用しないでください プログラムでシェイクジェスチャーに複数の意味を持たせることはできますが、人々を混乱させ、アプリケーションを予測不可能なものにしてしまう危険性があります。

「元に戻す」「やり直す」ボタンは控えめに アプリが同じタスクを実行するために複数の方法を提供すると、混乱を招きます。専用の元に戻すボタンややり直しボタンが必要な場合は、システムが提供する標準的なアイコンを使用し、ナビゲーションバーなどの想定される場所に配置してください。

取り消しとやり直しの操作は、現在のコンテキストでのみ実行します 取り消しややり直しは、以前のコンテキストではなく、現在のコンテキストに明確かつ即座に影響を与えるべきです。

開発者向けのガイダンスとして、UndoManager を参照してください。