Tasuke HubLearn · Solve · Grow
#Image Optimization

画像ワークフロー実践【2025年版】:アップロード署名・Moderation・CDN署名URLまで

Cloudinary/Cloudflare Images/Imgix等を想定し、フロント安全アップロード(署名付き)、Moderationレビュー、変換プリセット、署名URL配信の実装パターンをNext.jsで解説。権限/コスト/監視も網羅。

時計のアイコン13 September, 2025
TH

Tasuke Hub管理人

東証プライム市場上場企業エンジニア

情報系修士卒業後、大手IT企業にてフルスタックエンジニアとして活躍。 Webアプリケーション開発からクラウドインフラ構築まで幅広い技術に精通し、 複数のプロジェクトでリードエンジニアを担当。 技術ブログやオープンソースへの貢献を通じて、日本のIT技術コミュニティに積極的に関わっている。

🎓情報系修士🏢東証プライム上場企業💻フルスタックエンジニア📝技術ブログ執筆者

全体像

  1. サーバーでアップロード用「短命署名」を発行 → 2) クライアントが直送 → 3) Moderation(自動/人手) → 4) 公開は変換プリセット+署名URL。

ベストマッチ

最短で課題解決する一冊

この記事の内容と高い親和性が確認できたベストマッチです。早めにチェックしておきましょう。

アップロード署名の発行

// app/api/upload/sign/route.ts
import crypto from 'crypto';
export async function POST() {
  const expire = Math.floor(Date.now()/1000) + 60; // 60秒
  const policy = JSON.stringify({ exp: expire, maxBytes: 5_000_000 });
  const signature = crypto.createHmac('sha256', process.env.UPLOAD_SECRET!).update(policy).digest('hex');
  return Response.json({ policy, signature });
}

さらに理解を深める参考書

関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。

クライアントから直送

// app/uploader.tsx(概念)
export default function Uploader() {
  async function onChange(e: React.ChangeEvent<HTMLInputElement>) {
    const file = e.target.files?.[0];
    const { policy, signature } = await fetch('/api/upload/sign', { method: 'POST' }).then(r=>r.json());
    const form = new FormData();
    form.append('file', file!);
    form.append('policy', policy);
    form.append('signature', signature);
    await fetch('https://upload.example.com', { method: 'POST', body: form });
  }
  return <input type="file" accept="image/*" onChange={onChange} />
}

さらに理解を深める参考書

関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。

Moderationと公開

  • 自動Moderation結果で保留/承認/差し戻し。承認時に変換プリセットを確定(例:w=1280,h=720,fit=crop,f=auto,q=auto)。
  • 公開URLは署名付きで期限を設定し、ホットリンク対策を実施。
// 署名URL生成(擬似)
function signedUrl(path: string, ttl = 600) {
  const exp = Math.floor(Date.now()/1000) + ttl;
  const sig = createHmac('sha256', process.env.DELIVERY_SECRET!).update(`${path}${exp}`).digest('hex');
  return `https://cdn.example.com${path}?exp=${exp}&sig=${sig}`;
}

さらに理解を深める参考書

関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。

コスト/監視

  • 変換回数と帯域のダッシュボード化。プリセットを絞り、多様なサイズはsrcset/sizesで吸収。
  • エラー率、アップロード失敗率、Moderation差し戻し率を監視して改善。

さらに理解を深める参考書

関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。

まとめ

署名→直送→審査→署名配信の流れを確立すると、安全でスケーラブルな画像運用が実現します。

さらに理解を深める参考書

関連記事と相性の良い実践ガイドです。手元に置いて反復しながら進めてみてください。

この記事をシェア

続けて読みたい記事

編集部がピックアップした関連記事で学びを広げましょう。

#Git

Git/GitHub超入門【2025年版】:最小のワークフローで始める

2025/9/13
#Edge Functions

Edge Functionsエラーハンドリング実践【2025年版】:フォールトインジェクションで堅牢化する

2025/9/13
#Edge Functions

Edge Functionsログ・トレース運用ガイド【2025年版】:観測性を組み込む実践チェックリスト

2025/9/13
#Security

Secrets/環境変数の実践ガイド【2025年版】:Next.js/Node/CI/CDの安全な管理

2025/9/13
#開発プロセス

【2025年版】AIペアプロ文化の育て方

2025/11/23
#Web Performance

画像CDN実践比較【2025年版】:Cloudinary / Imgix / Cloudflare Imagesの選び方

2025/9/13