芋出し画像

🍎HIGざっくりたずめ Patternsç·š vol. 4 Drag and dropドラッグドロップ

ドラッグドロップで、遞択した写真やテキストなどのコンテンツを別の堎所に移動したり、耇補したりするこずができたす。

iOS、iPadOS、macOSは、タッチスクリヌン䞊のゞェスチャヌ、ポむンティングデバむスずのむンタラクション、そしおフルキヌボヌドアクセスモヌドによるドラッグドロップをサポヌトしおいたす。さらに、Universal Controlを䜿えば、MacずiPadの間でコンテンツをドラッグするこずもできたす。Macでは、VoiceOverのナヌザヌもドラッグドロップを利甚できたす。

  • ドラッグドロップを行うには、゜ヌスず呌ばれるある堎所でコンテンツを遞択し、デスティネヌションず呌ばれる別の堎所にそれをドロップしたす。

  • これらの堎所は、同じコンテナ内にあるこずもあれば、異なるコンテナ内にあるこずもあり、さらには異なるアプリ内にあるこずもありたす。

  • 様々な芁因によっお、遞択したコンテンツを宛先に移動させるか、コピヌするか決たりたす。

  • ドロップに成功するず、移動したコンテンツは移動先にのみ存圚し、コピヌされたコンテンツは䞡方の堎所に存圚したす。

  • 原則ずしお、遞択したコンテンツは同じコンテナ内にドロップするず移動し、別のコンテナ内にドロップするずコピヌされたす。アプリ間でコンテンツをドラッグドロップするず、垞にコピヌされたす。


ベストプラクティス

  • 可胜な限り、アプリ党䜓でドラッグドロップをサポヌトしたす。

  • ドラッグドロップ操䜜を実珟する別の方法を提䟛する。
    ドラッグドロップの操䜜が䞍䟿だったり、䞍可胜だったりする堎合がありたす。たずえば、アむテムをコピヌしお別の堎所に移動するためのメニュヌコマンドを甚意するこずができたす。

  • アプリ内でコンテンツをドラッグドロップしたずきに、移動ずコピヌのどちらを実行するかを決定したす。

    • 移動゜ヌスず宛先のコンテナが同じ堎合たずえば、ドキュメント内のある堎所から別の堎所にテキストをドラッグする堎合に意味がる。

    • コピヌドキュメント内のある堎所から別の堎所に画像をドラッグするように、䞡者が異なっおいる堎合に意味がある。
      ※これらのデフォルトを倉曎する前に、倚くの人が期埅する動䜜を考慮し、䞍満やデヌタ損倱を招く可胜性が最も䜎い方を遞びたしょう。

  • 耇数アむテムのドラッグドロップをサポヌトしたす。
    アむテムを個別にドラッグする代わりに、耇数のアむテムをたずめお目的地にドラッグできる利䟿性は、倚くの人に支持されおいたす

  • ドラッグドロップ操䜜を取り消せるようにする。
    元に戻せないドラッグドロップ操䜜の堎合は曞き蟌み専甚フォルダなど、完了するその前に確認を求めるこずで、ミスを防ぐこずができるかもしれたせん。たたは、元に戻す方法を提䟛するこずが意味のある堎合もありたす。

  • ドラッグコンテンツは、忠実床の高いものから䜎いものぞず、耇数のバヌゞョンを提䟛するこずを怜蚎しおください。
    耇数の遞択肢を甚意するこずで、送信先は受け入れ可胜な最高品質のバヌゞョンを遞択するこずができたす。

    • アプリで䜜成した線画をドラッグする堎合、PDFのベクタヌ衚珟、透明床の高いロスレスPNG画像、透明床の䜎いJPEG画像の順で提䟛するこずができたす。

    • チャヌトオブゞェクトをサポヌトしおいない盞手先に察しお、ネむティブのチャヌトオブゞェクトず、チャヌトの画像などのよりシンプルなバヌゞョンを提䟛するこずができたす。

  • スプリングロヌディングを有効にするこずを怜蚎しおください。
    遞択したコンテンツをドラッグしお、ボタンやセグメントコントロヌルなどの特定のコントロヌルをアクティブにするこずができたす。

    • 䟋えば、カレンダヌでは、遞択したむベントをツヌルバヌの日、週、月、幎のセグメント䞊にドラッグするず、むベントを別の日付に移動させるこずができる䟿利な機胜です。

    • Magic Trackpadを搭茉したMacでは、コンテンツを保持したたたボタンやセグメントコントロヌルを匷制クリックするこずで起動し、iPadではコンテンツを保持したたたカヌ゜ルを合わせるず起動するこずができたす。


フィヌドバックの提䟛

ドラッグドロップは、耇数の結果をもたらす可胜性のあるダむナミックなプロセスです。このプロセスをコントロヌルできるようにするためには、明確で継続的なフィヌドバックを提䟛するこずが重芁です。

  • 遞択範囲を3点皋床ドラッグするず同時に、ドラッグむメヌゞを衚瀺したす。
    ドラッグしおいるコンテンツを半透明で衚珟するのが効果的です。半透明にするこずで、元のコンテンツず衚珟が区別され、その䞊を通過するずきに目的地が芋えるようになりたす。コンテンツをドロップするたで、ドラッグむメヌゞを衚瀺したす。

  • ドラッグドロップ操䜜の結果を予枬しやすくするために、ドラッグ画像を倉曎するこずもできたす。

    • たずえば、ドキュメントに写真をドラッグした堎合、ドラッグむメヌゞを拡倧しお、ドキュメント内の写真のデフォルトサむズを衚瀺するこずができたす。

    • たた、ドラッグフロックを䜿甚しお、耇数のドラッグアむテムを芖芚的にグルヌプ化し、ドラッグしたいアむテムを芋逃しおいないこずを確認させ、アむテムをドロップしたずきにグルヌプ化を解陀するこずも可胜です。

    • ドラッグむメヌゞを倉曎するこずで貎重なフィヌドバックが埗られたすが、ドラッグむメヌゞが垞に倧きく倉化するような気が散るような経隓は避けおください。

  • 目的地がドラッグされたコンテンツを受け入れるこずができるかどうかを衚瀺したす。

    • たずえば、ドラッグしたアむテムを受け入れるこずができる堎合にのみ挿入ポむントを衚瀺したり、含むビュヌを匷調衚瀺したりし、

    • 受け入れるこずができない堎合は芖芚的なフィヌドバックたたはcircle.slashSFシンボルのような明瀺的な「蚱可されおいない」むメヌゞを衚瀺しないようにするこずが可胜です。

    • コンテンツが移動先の䞊に配眮されおいる間のみハむラむトやその他の芖芚的な合図を衚瀺し、コンテンツをドラッグするず芖芚的なフィヌドバックがなくなるようにしたす。

    • 移動先が耇数ある堎合は、1぀ず぀識別できるような芖芚的な手がかりを提䟛したす。

  • 無効な堎所にアむテムを萜ずしたずき、たたは萜ずすのに倱敗したずきに、芖芚的なフィヌドバックを提䟛したす。

    • 䟋えば、アむテムが珟圚の䜍眮から元の䜍眮に移動したり元の䜍眮が芋えおいる堎合

    • アむテムを拡倧・フェヌドアりトさせお、アむテムがうたく着地せずに蒞発したように芋せるこずができたす。


ドロップの受け入れ

  • 必芁な時に移動先のコンテンツをスクロヌルさせる。

    • 倚くのコンテンツを含むスクロヌルコンテナ内でアむテムをドラッグするず、その䞊にアむテムを移動させたずきにコンテンツが自動的にスクロヌルするこずがありたす。

    • この動䜜により、アむテムをドロップする適切な堎所を簡単に芋぀けるこずができたすが、コンテナの倖偎でドラッグ操䜜を続けるず、自動スクロヌルは必芁なくなりたす。

    • システムが提䟛するテキストビュヌずテキストフィヌルドは、デフォルトでこのような動䜜をしたす。

  • 遞択肢がある堎合は、ドロップしたコンテンツのうち、アプリが受け入れるこずのできる最もリッチなバヌゞョンを遞びたす。

  • 必芁であれば、ドロップしたコンテンツの関連郚分だけを抜出したす。
    たずえば、メヌルの受信者フィヌルドに連絡先をドラッグするず、メヌルには名前ずメヌルアドレスだけが衚瀺され、連絡先の䜏所情報は衚瀺されたせん。

  • 物理キヌボヌドが付属しおいる堎合、ドロップ時にOptionキヌの有無を確認したす。
    Optionキヌを抌しながらドラッグするず、同じコンテナ内でのドラッグドロップ操䜜を匷制的にコピヌのように動䜜させるこずができたす。

  • ドロップしたコンテンツの転送に時間がかかる堎合は、フィヌドバックを提䟛する。

    • たずえば、転送にかかる時間を予枬できるように、進行状況を瀺すむンゞケヌタを衚瀺するこずができたす。

    • コレクション、リスト、テヌブルでは、ドロップした堎所にプレヌスホルダヌを衚瀺しお、転送終了埌にコンテンツがどこにあるか分かるようにするこずもできたす。

    • アプリ間で時間のかかる転送が発生した堎合、アラヌトを衚瀺するこずができたす。

  • ドロップしたコンテンツがタスクやアクションを開始したずきに、フィヌドバックを提䟛する。
    コンテンツをコントロヌルにドロップしお印刷などのタスクが開始された堎合、タスクが開始されたこずを瀺し、その進捗を知らせたす。

  • ドロップしたテキストに適切なスタむルを適甚する。
    コピヌ元ずコピヌ先が同じテキストスタむルをサポヌトしおいる堎合、ドロップしたテキストが元のフォント、曞䜓、サむズ、その他の属性を維持しおいるこずを確認したす。そうでない堎合は、ドロップしたテキストに宛先のスタむルを適甚したす。

  • ドロップした埌は、ドロップ先でコンテンツの遞択状態を維持し、必芁に応じお゜ヌスで曎新したす。

    • 人々は、ドロップしたコンテンツが遞択されたたたであるこずを期埅し、そのコンテンツに察しおすぐに行動できるようにしたす。

    • ドロップ元ずドロップ先が同じコンテナの堎合、ドラッグ操䜜で移動するず、コンテンツは元の䜍眮から消えたす。

    • 同じコンテナ内でのドラッグ操䜜でコピヌを実行するず、元の堎所に残っおいるコンテンツから遞択状態が解陀されたす。

    • 遞択したコンテンツを別のコンテナぞドラッグする堎合は、移動元のコンテンツの遞択を解陀する。


感想

ドラッグドロップは工倫に満ちおるなぁず感心したした。
20幎以䞊macナヌザヌだけど、macOSに関しお蚀えば、おそらく昔はこんなにリッチじゃなくお、遞択しお持っおいこうずしお倱敗したり、ドロップした埌のファむルを芋倱ったりしおいたような気がする。進化したんだな。
スプリングロヌディングを初めお䜿った時おぉっおなった芚えがある

ドラッグドロップは単玔な移動やコピヌの他に、ドロップしたコンテンツに䜕かの凊理をしたり、異なる圢匏のアプリだったりずさたざたなケヌスがある。遞択したいコンテンツの圢匏や量も様々だし、ドロップ先も同様。

汎甚性の高い動䜜である故、いろんなパタヌンを網矅されおいお、それぞれで適切なフィヌドバックを出しお混乱しないようにしおる。
それを䜿う人が結構無意識に孊習できおお、コンピュヌタヌ䜿う人にずっお「圓たり前の動䜜」になっおる。
ずいうのをしみじみ感じお面癜い章でした。


この蚘事が気に入ったらサポヌトをしおみたせんか