新バージョンリリース
imagejob v4 PHP Edition は、画像変換と Google Drive 同期を自動化するための運用ツールです。
従来のShell版からPHP版へメジャーアップし、設定管理、ログ出力、ロック制御、Google Drive API連携、差分同期処理をPHPベースで再構築しました。
画像を work ディレクトリに配置すると、元画像コピー、透かし入り画像、複数サイズのリサイズ画像、カバー画像を自動生成し、成功した元画像は backup へ、失敗した画像は failed へ振り分けます。変換成功後は、設定に応じて Google Drive への同期も自動実行されます。
Google Drive 同期では、ローカルファイルとDrive側ファイルを ファイル名 + サイズ で比較し、必要な UPLOAD / UPDATE / DELETE / SKIP を判定します。Drive側の同名ファイル重複検出、OAuth token の再取得、target単位リトライ、dry-run確認、調査用TSVレポート出力に対応しており、安全に同期状態を確認しながら運用できます。
v4では、cronログの日付別出力、古いsyncレポートの自動整理、convert後sync失敗時の検知、--config-dir の引き継ぎにも対応し、長期運用時のログ肥大化や一時ファイル増加にも配慮した構成になっています。
運用事故を防ぐ設計へ全面刷新。 透かし処理・バックアップ管理・入力検出を再設計したメジャーアップデート。
🔁 画像生成フローの再設計(透かし処理の明確化)
透かし付きメイン画像は「事前リサイズ → 透かしサイズ計算 → 透かし合成 →(任意)文字入れ」
という明確な工程に分離
透かしサイズは「透かし合成対象画像(透かし前)」の寸法を基準に計算
解像度差・縦横比差による透かし崩れを防止
🧩 派生画像の責務分離
resize1 / resize2 / cover は 完全に透かし無し
すべて 正規化済みの共通元画像から生成
用途別(SNS / サムネ / OGP)画像の再現性を向上
🧹 backup ディレクトリの無限肥大対策(推奨構成①②④)
以下を組み合わせた 多層防御 を実装:
保持日数制御
指定日数を超えたバックアップを自動削除
容量上限制御
合計容量が上限を超えた場合、古いファイルから削除
日付ディレクトリ分割
backup/YYYY-MM-DD/ 形式で整理し、管理性と削除効率を向上
→ cron 常駐でもディスク枯渇を防止
📥 入力ファイル検出の堅牢化
jpg / jpeg / png を コード側で最低限保証
大文字小文字を無視して常に検出
設定ファイルは**「追加拡張子を指定するためのプラスアルファ」**という役割に明確化
設定ミスによる「何も処理されない事故」を防止
🛡️ 運用安全性の強化
set -e 環境でも落ちない安全なカウンタ処理
find -print0 採用による安全なファイル列挙
壊れた画像・不正入力は即時隔離(failed + 理由ログ)
二重起動防止(ロック)と DRY-RUN モードの併用可能
📜 設計思想の明文化
conf ファイルに「コードが保証する範囲」
「設定が担う役割」をコメントとして明記
将来の運用者・引き継ぎ時にも意図が伝わる構成に
🧭 位置づけ
この v3.0.0 以降、imagejob-convert.sh は
「個人用スクリプト」ではなく「止めずに回し続ける業務用変換ジョブ」としての設計を正式に確立。