アセット管理の落とし穴|画像フォルダ設計で後悔しないための実践ガイド

C
クリオ
Web制作ディレクター / フロントエンジニア

こんにちは!
今日は「アセット管理の落とし穴|画像フォルダ設計で後悔しないための実践ガイド」について解説します。

これめっちゃ大事な話やと思うんですけど、意外と軽く見られてしまうんですよね。
画像の保存場所やフォルダ構成って、プロジェクト開始時は「あとで整理すればいいや」って感じで進むことがほとんどなんです。
でも中盤から後半にかけて、ほんまに後悔することになります。

僕が経験した、フォルダ設計の失敗談

正直に言います。
僕も20代の頃、画像フォルダをめちゃくちゃにしてしまったことがあります。

あるプロジェクトで、クライアントから急に「このキャンペーン画像、別バージョンも作ってくれ」という依頼が来たんですよ。
その時点で既に数百枚の画像がフォルダに入ってました。
どれが最新版で、どれが古いバージョンなのか、ファイル名からはさっぱり判別がつかない。
image01.jpg、image01_v2.jpg、image01_v2_final.jpg、image01_v2_final_fixed.jpg…こんな感じです。

結局、どの画像をどのページで使ってるのか追跡するのに半日かかりました。
そこから学んだのは「フォルダ設計は初期投資」ということです。
プロジェクト開始時に30分くらい時間をかけて、ちゃんと設計しておくだけで、後々の作業がめっちゃ楽になるんです。

プロジェクト規模に応じたフォルダ構造の3つのパターン

「正解のフォルダ構造」というものはないんですけど、プロジェクト規模に応じた「ベストプラクティス」はあります。
僕が実際の現場で使い分けてるパターンを紹介します。

パターン1:小規模サイト向け(5ページ以下のサイト)

小規模なサイトなら、シンプルでいいですよ。
複雑にしすぎると、むしろ探しづらくなります。

/assets/
  /images/
    /common/       (ロゴ、ナビゲーション、フッター用)
    /pages/        (ページ固有の画像)
    /icons/        (アイコン素材)
    /temp/         (テスト用、後で削除する予定の画像)

このくらいでいいんです。
ページ固有の画像が増えたら、/pages/の中をページ名で分けるといいですよ。
例えば /pages/top/、/pages/about/ みたいな感じで。

パターン2:中規模サイト向け(10ページ程度のサイト)

ここから「用途」で分ける視点が大事になってきます。
デザインと機能で分離するイメージですね。

/assets/
  /images/
    /common/
      /header/     (ヘッダー関連)
      /footer/     (フッター関連)
      /nav/        (ナビゲーション関連)
    /pages/
      /top/
      /about/
      /services/
      /contact/
    /components/   (再利用可能なコンポーネント画像)
    /ui/           (ボタン、バナーなど)
    /backgrounds/  (背景画像)
    /icons/
    /archive/      (古いバージョン、保留中の画像)

中規模になると、複数人で作業することが増えるじゃないですか。
そうするとチーム全体で「どこに何があるか」が一目瞭然になることがめっちゃ重要なんです。

パターン3:大規模案件向け(30ページ以上、複数チーム編成)

ここまで大きいと、さらに「デバイス別」や「言語別」も考える必要が出てきます。

/assets/
  /images/
    /common/
      /desktop/    (デスクトップ用)
      /mobile/     (モバイル用)
      /tablet/     (タブレット用)
    /pages/
      /top/
        /desktop/
        /mobile/
      /about/
        /desktop/
        /mobile/
    /components/
      /cards/
      /buttons/
      /modals/
    /content/
      /blog/       (ブログ画像)
      /gallery/    (ギャラリー)
    /branding/     (ロゴ、ブランドガイドライン関連)
    /temp/
      /review/     (クライアントレビュー待ちの画像)
      /deprecated/ (使用終了した画像)

大規模になると、単なるフォルダ分けだけじゃなくて、スプレッドシートで「どの画像をどのページで使ってるか」を管理するといいですよ。
ほんまに実務レベルの話ですけど、これやっとくだけで作業効率が段違いです。

後輩指導で見かける「あるある」な間違いと対策

実際に後輩たちを指導していて、何度も見かけるミスをまとめました。
あなたも知らず知らずのうちにやってるかもしれません。

間違い1:日付でフォルダを分ける

「20240115」とか「January」みたいに日付でフォルダを作る人、結構います。
これ、最初はいいんですけど、修正が入った時に大変やん。
修正版の画像を2月に作ったら、1月のフォルダから引っ張り出さなきゃいけなくて、非常に紛らわしくなります。

対策:用途や機能で分けることを優先してください。
バージョン管理がしたいなら、ファイル名に「_v1」「_v2」を付けるか、/archive/フォルダに古い画像を移すといいですよ。

間違い2:深すぎるフォルダ階層

フォルダ設計に凝りすぎて、/images/pages/top/sections/hero/backgrounds/desktop/みたいに、10階層くらい深くしてしまう人もいます。
ホントにやめてください。
ファイルパスが長くなって、コード内でもタイプミスが増えるし、ファイルシステム側のパフォーマンスにも影響します。

対策:最大で3〜4階層までにしましょう。
それ以上深くしたければ、ファイル名で情報を持たせるのがいいですよ。
例えば hero-bg-desktop-v2.jpg みたいな感じで。

間違い3:ファイル名の曖昧さ

これ、ほ