0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

なぜ「画像アップロード機能」はしんどいのか

Posted at

概要

画像アップロード機能ってそれだけ聞くと1つの機能なのですが、実は終わりが見えづらい機能ですよね。どこまでもリッチに機能追加できるし、セキュリティ対策も山ほどありますし、見積もりが難しい。
(もちろん仕様がカッチリきまっていればそれでOKです)

なぜなのか

1. 画像をどこに置くんだ問題

ローカル環境なら全然問題ないですよ。本番環境だと複数台構成前提でしょうからS3やGCSなどに置く前提になりますよね。そうなると、

  • 「APIキー発行して」
  • 「あっ権限なかった..○○さんにSlackで連絡っと...」
  • 「次に本番用とステージング用とフォルダ構成を考えて...」
  • 「あ〜〜!(むしゃくしゃ) >< (Yahooニュースみよう!)」

2. 良さげなライブラリを探すの面倒問題

  • 「このライブラリいいね評価も高い。あ、でもメンテナンスもうされてないか...」
  • 「おっと、こっちのはドキュメントがすごくわかりやすい」
  • 「やっぱり前使ってたあれにするか〜」
  • 「あ〜〜!(むしゃくしゃ) >< (ホッテントリみよう!)」

すみません。先人の方たちのライブラリには大変お世話になっております。
皆様のおかげで日々飯が食べれております。本当に感謝です。

3. UI・UXをどうするんだ問題

  • ドラッグ&ドロップあり?
  • 複数枚同時?
  • キャンセル処理は?
  • プレビュー機能は?
  • アップロード中の見せ方どうする?

無限にあります。おそらくここが一番大変。イケてるサイトを参考にするしかない。

4. エラーハンドリングはどこまで頑張るんだ問題

  • JPEG、PNG、HEIC/HEIF、WebP...
  • ファイルサイズ
  • ファイル選択直後のJS側によるバリデーションどうする

無限にあります。バリデーションはある程度こっちで実装しちゃいましょう。

5. 画像のリサイズ等を対応するのか問題

  • アップロード時に自動(バックエンド側)で自動圧縮する?
  • リサイズする?
  • アップロード前にユーザ側のクロッピング(切り取り)機能搭載する?

う〜んヒットしたら搭載しましょう...

6. NGな画像をアップロードされたらどうする問題

  • 運営側の承認後に掲載されるルールにする?

いや運用でカバーしよう...

7. Chrome以外のブラウザでちゃんと動くのか問題

これは特に 3 の UI/UX の部分の事。

総括

リストアップしてみると、まだまだありそうですが、とりあえず7つ。
「当たり前にやりなさい」という内容なのだが、やっぱり(仕様が決まっていないと)大変。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?