tigris-image-optimization について
Tigris に画像を保存する開発者向けのスキルです。リサイズ、切り抜き、最適化に加え、アップロード時とリクエスト時の処理、フレームワーク別の方法、公開バケット経由の配信を説明します。
主な機能
- 01アップロード時のバリアント生成
- 02リクエスト時の画像処理
- 03アップロード前のリサイズ
- 04Tigris 公開バケット CDN 配信
- 05Next.js、Remix などのガイド
活用シーン
- 01アバター、サムネイル、カバーの定型サイズ生成
- 02複数サイズの画像配信
- 03公開バケットからの画像配信
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tigrisdata/ skills --skill tigris-image-optimizationインストール後、Claude Code で/tigris-image-optimizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonREADME.mdresources/django.mdexpress.mdlaravel.mdnextjs.mdrails.mdremix.md詳細
Tigris の画像最適化
Tigris に保存された画像のサイズ変更、トリミング、最適化を行います。アップロード時にサムネイルを生成し、レスポンシブ画像を配信して、Tigris のグローバル CDN を活用した高速な配信を実現します。
戦略の概要
| アプローチ | 使用する場面 | メリット | デメリット |
|---|---|---|---|
| アップロード時に処理 | サムネイル、固定サイズ | 配信が速く、予測しやすい | バリエーションごとにストレージコストがかかる |
| リクエスト時に処理 | 多数のサイズバリエーション | 柔軟性が高く、ストレージを節約できる | 初回リクエスト時のレイテンシー |
| クライアント側でサイズ変更 | アップロード前 | 帯域幅を節約でき、アップロードが速い | 品質の制御が難しい |
推奨: 既知のサイズ(アバター、サムネイル、カバー画像)はアップロード時に処理します。CDN で配信するにはパブリックバケットを使用します。Tigris はパブリックファイルを最寄りのグローバルエッジから自動的に配信します。
アップロード時の処理(一般的なパターン)
ファイルのアップロード時にバリエーションを生成し、それぞれを個別のオブジェクトとして保存します。
avatars/user-123.jpg # original
avatars/user-123-thumb.jpg # 100x100
avatars/user-123-medium.jpg # 400x400
avatars/user-123-large.jpg # 800x800
高速で CDN を利用した配信が必要な画像には、access: "public" を使用します。
フレームワークガイド
使用するフレームワークのリソースファイルを参照してください。
- Next.js — next/image の設定と Sharp による処理については
./resources/nextjs.mdを参照してください - Remix — アクション関数での Sharp の使用とレスポンシブな srcset については
./resources/remix.mdを参照してください - Express — Multer と連携する Sharp ミドルウェアについては
./resources/express.mdを参照してください - Rails — Active Storage のバリエーションについては
./resources/rails.mdを参照してください - Django — django-imagekit と Pillow による処理については
./resources/django.mdを参照してください - Laravel — Intervention Image については
./resources/laravel.mdを参照してください
CDN 配信
Tigris のパブリックバケットはファイルを最寄りのグローバルエッジから配信するため、別途 CDN を設定する必要はありません。
画像のキャッシュヘッダー:
await put("images/hero.jpg", buffer, {
access: "public",
contentType: "image/jpeg",
});
変更されないコンテンツハッシュ付きのファイル名(例:hero-abc123.jpg)には、長いキャッシュ期間を設定します。変更される可能性のあるパスには、短い TTL または ETag を使用します。
重要なルール
必ず行うこと: ユーザーに配信する画像には access: "public" を使用する(CDN が有効になります) | 既知のサイズのサムネイルはアップロード時に生成する | ファイルサイズを小さくするために WebP/AVIF を使用する | contentType を明示的に設定する
決して行わないこと: キャッシュせずにリクエストごとに画像を処理する | 常にサムネイルを配信するのにオリジナル画像だけを保存する | フルサイズの画像をダウンロードした後にブラウザーでサイズ変更する
関連スキル
- tigris-file-uploads — フレームワークごとのアップロードパターン全般
- tigris-egress-optimizer — 画像配信による帯域幅コストを削減
公式ドキュメント
- Tigris SDK: https://www.tigrisdata.com/docs/sdks/tigris/
- Sharp: https://sharp.pixelplumbing.com/