画像品質ガバナンスポリシー:フォーマット/Q/解像度/差分検証/例外申請の標準化
個々の開発者判断で画像品質が決まると 容量膨張・主観差異・回帰未検知 が発生します。ガバナンスポリシーは 合意された基準と例外手順 を明文化し再現性を担保します。
スコープ
- 形式/品質/解像度の標準値
- 例外申請と承認ログ
- CI逸脱検知と監査
1. なぜ必要か
“高速改善” フェーズで暗黙知が肥大すると後から是正が困難になります。初期から軽量ポリシーを導入し段階的拡張が最適です。
2. 原則
- 再現性: 同条件で同結果
- 計測性: CI/ログで追跡可能
- 例外透明性: 理由と期限の明示
3. ポリシー文書雛形
# policy/image-quality.md (抜粋)
## 形式選定フロー
写真: AVIF→WebP→JPEG fallback
UI/テキスト: WebP (4:4:4) or PNG (ロスレス)
透過+縮小多: WebP Lossless
## Q帯基準 (起点)
写真: AVIF cq-level 40 / WebP 70
UI: WebP 80 (必要なら 4:4:4)
サムネ: WebP 65 (幅 ≤ 480)
## 解像度上限
OGP: 1200x630 固定
カード: 640px max-width
Hero: viewport幅 * 1.1 (上限 1600)
## 回帰検証
PSNR -0.25 / SSIM -0.004 / bytes +6% で失敗
4. 例外/監査ワークフロー
// scripts/request-exception.js (簡易例)
import fs from 'node:fs';
import { v4 as uuid } from 'uuid';
const req = { id: uuid(), type: 'resolution', reason: '文字可読性確保', target: 'hero.png', requested: '2000w', created: Date.now() };
fs.appendFileSync('exceptions.log', JSON.stringify(req)+'
');
// scripts/audit-images.js (抜粋)
for (const img of images){
if (img.width > policy.maxWidth(img.category)) {
report.push({ file: img.path, issue: 'WIDTH_EXCEED', width: img.width });
}
}
5. CI統合
CIパイプライン と組み合わせ、逸脱時は例外申請テンプレへのリンクをPR自動コメントします。
6. FAQ
- 頻繁な閾値変更? → 履歴表と理由を併記し“無根拠変更”を防止
- 初期導入負荷? → まずはラダー5枚と例外ログ1ファイルだけで開始
7. まとめ
ガバナンスは“締め付け”ではなく再現性の土台です。標準値→計測→例外分析→更新のループで継続的に最適化してください。