様々なシステムで目にする「ファイルアップローダー」。
UIデザイナーが設計する場面でも、開発者が実装をする場面でも考慮する事項が多く、最適なデザインに悩むことは多いのではないでしょうか。
本記事では、「ファイルアップローダー」に対する理解を深め、適切な設計をするための知見を提供します。
ローカルPCにあるファイル(.txtや.csv)を、サーバーにアップロードする目的を持つUIは様々な名称で呼ばれることがあります。
例えば、ShopifyのデザインシステムPolarisでは以下のような見た目で、「Drop Zone」という名前がついています。
そのほかにも、AmazonのCloud Spaceでは「File Upload」、SalesForceのLightning Design Systemでは「File Selector」と呼ばれていたりもします。
しかし、本記事ではこれらをまとめて「ファイルアップローダー」と定義し解説します。
ファイルアップローダーは一般的に以下の要素により構成されています。
ラベルを使用して、ファイルの種類や目的を説明します。
説明を使用して、フォームのコンテキストでアクションが何を実行するかを記述します。
サイズやファイルの種類など、ファイルが一致する必要があるすべての制約を含めます。
ファイルメタデータは、ユーザーが選択したファイルを検証および比較するのに役立ちます。使用事例に基づいて、表示する最も関連性の高いファイル メタデータを選択してください。以下のような内容が表示されることが多いです。
①「ファイルをアップロードする」という目的を達成する唯一のUIである
②以下のどちらか、あるいは両方でファイルの選択ができる
③メタデータの表示、画像ファイルであればそのプレビュー、アップロード中の進捗を示すプログレスバーなど、同時に必要とするコンポーネントも多い
特に②,③の点から、自身のプロダクトでどのようなデザインが最適かを検討する必要があるため、比較的複雑なUIと言えるのではないでしょうか。
ここからは、ファイルアップローダーを使用する際に考慮すべき注意点について解説します。
ファイルアップローダ―を設計する場合、サーバーの負荷やセキュリティ対策、UXの観点で特に以下の制限について検討する必要があります。
一般的に、2MB程度の上限が設けられることが多いです。
画像であれば.png, .jpg形式。テキストファイルの場合は.txt, .docxなど、目的に応じてどの拡張子を許可するのかを定義しましょう。
一度にアップロード可能なファイルの数は1つなのか、複数なのかを定義しましょう。
ファイルアップローダーには、ドラッグ&ドロップによりファイルをアップロードできるタイプのものがあります。
多くのデザインシステムではこうしたドラッグ&ドロップ機能を提供するファイルアップローダーを特別に「ドロップゾーン」と呼ぶこともあり、以下のような見た目となります。
ファイルアップローダーの設計をする際、「ドラッグ&ドロップ機能は必須なのか?」という議論が起こることがあります。
結論として、ドラッグ&ドロップ機能は必須ではありません。
代わりに、キーボード操作によるアップロードには必ず対応するようにしましょう。
なぜならこの機能は利便性を高める一方で、アクセシビリティの観点でいくつかの問題を抱えているためです。
例えば、ドラッグ中は常にマウスの左ボタンを押し続ける必要があったり、ドロップ時に特定の領域にカーソルを持っていくといった、比較的精密な操作がユーザーに求められ、誰にとっても簡単な操作というわけではありません。
他にも、タッチスクリーンを有するモバイルデバイスの場合はスクロールと操作が被ってしまい、そもそもドラッグ&ドロップによるアップロードができない問題もあるなど、必ずしもファイルアップロードにおける最適な解とは限りません。
とはいえ、ニールセンの原則「柔軟性と効率性」の観点から、複数の選択肢をユーザーに提供することは望ましく、プログレッシブエンハンスメントの観点からも、ドラッグ&ドロップ機能はユーザーにとって「あると便利」な機能として推奨されることもあります。
ファイルアップローダーにおけるユーザビリティを向上させる場合、以下のようなステータスのデザインを考慮する必要が出てくることがあります。
拡張子の指定や、ファイルサイズの指定といったクライアント側でのバリデーションによるメッセージや、サーバー側からのエラーメッセージなどと合わせてデザインを検討する必要があります。
一時的にファイルアップローダーを使えない状態を示す必要があります。
スピナーやプログレスバー等、アップロードの進捗を示すような表示があることが望ましいです。
ブラウザでのファイルの読み込みが終わったあと、画像のプレビューや、ファイル名、ファイルサイズの表示が必要なこともあります。ファイル数の上限によっては、追加のアップロードを制限するといった対応も必要になります。
ドロップ可能な領域に入った時に背景色を変えるなどのフィードバックをユーザーにしてあげるとより一層ユーザビリティが高まります。
ファイルアップローダーの設計を行う際には、デバイスの種類を考慮することが非常に重要です。特に、モバイルデバイスにおけるユーザーエクスペリエンスは、デスクトップとは異なる点が多く、これを無視するとユーザーにとって使いにくいものになってしまいます。
まず、モバイルデバイスではドラッグ&ドロップ操作が基本的にできない点に注意が必要です。タッチスクリーンでの操作は、ドラッグ&ドロップよりもタップやスクロールが主流となるため、これを前提に設計を行うことが求められます。
前述したとおり、モバイルユーザーに対しては、ドラッグ&ドロップよりも「ファイルを選択」ボタンを配置することが望ましいでしょう。シンプルなタップ操作でファイル選択ができるボタンは、直感的で誤操作のリスクも少なく、幅広いユーザー層にとって使いやすい設計です。また、ボタンを大きくし視認性を高めることで、さらに操作性が向上します。
ファイルアップローダーは必ずラベルと組み合わせます。
アップロードするファイルが画像なのかテキストファイルなのか、といったファイルタイプの指定を行います。
アップロード可能なファイルが1つだけなのか複数なのかを定義します。
ファイルをアップロードする目的や、アップロード後にどんなアクションが起こるのかを説明したり、ラベルだけでは表現できない情報(例えばファイルタイプやサイズの上限など)についての補足が必要です。
アップロード時に、ユーザーが選択したファイルが意図どおりのものなのかを確認するために、ファイル名やサイズ、アップロード日時、メタデータ、画像ファイルであればその画像のプレビューといった情報を表示することを検討します。
See the Pen Untitled by beakkwan-kim (@beakkwan-kim) on CodePen.
特にセキュリティの観点から、ファイルアップローダーに対して批判的見解を示されることもあるため、採用には慎重になる必要があります。
悪意を持ってシステム側が想定していない拡張子、ファイルサイズ、ファイル名やフォーマットのファイルをアップロードした場合、システムに悪影響を及ぼすことがあるため、そうしたリスクを最小限にすることが望まれます。
https://vibes.freee.co.jp/?path=/docs/lv2-fileuploader-filedroparea–docs
https://polaris.shopify.com/components/selection-and-input/drop-zone
https://developer.apple.com/jp/design/human-interface-guidelines/drag-and-drop
https://baseweb.design/components/file-uploader
https://carbondesignsystem.com/components/file-uploader/usage
https://www.lightningdesignsystem.com/components/file-selector
https://www.lightningdesignsystem.com/components/drop-zone
https://www.lightningdesignsystem.com/components/files