機能比較表
旧LightFileとLightFile Shotの機能を詳細に比較
旧LightFile(v6.0.0未満)と新しいLightFile Shotの機能を詳細に比較します。
概要
| 項目 | 旧LightFile (< v6.0.0) | LightFile Shot (≥ v6.0.0) |
|---|---|---|
| 実行ファイル名 | lightfile | lightfile-shot |
| 実装言語 | Node.js | Go |
| 主な用途 | バッチ処理全般 | ワンタイム処理 |
| 対応環境 | ローカル, リモートFS | ローカルのみ |
| 処理履歴管理 | KVS | なし |
LightFile Shotはローカルファイルシステム専用のツールとして設計されています。リモートファイルシステムが必要な場合は、LightFile Batchを使用してください。
基本機能
画像最適化
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| JPEG最適化 | ✅ | ✅ | 変更なし |
| PNG最適化 | ✅ (v4+) | ✅ | 変更なし |
| GIF最適化 | ❌ | ❌ | 非対応 |
| WebP最適化 | ❌ | ❌ | 非対応 |
| 品質設定(3段階) | ✅ | ✅ | low/medium/high |
| JPEG個別品質設定 | ✅ --jpeg-quality | ✅ --jpeg-quality | 変更なし |
| PNG個別品質設定 | ✅ --png-quality | ✅ --png-quality | 変更なし |
| プログレッシブJPEG | ✅ | ✅ | 自動適用 |
| メタデータ最適化 | ✅ | ✅ | 自動適用 |
画像最適化のコア機能に変更はありません。品質設定や個別の画質調整も引き続き利用できます。
処理モード
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| 上書きモード | ✅ | ✅ | 元ファイルを最適化 |
| 複製モード | ❌ | ✅ 新機能 | 別ディレクトリに保存 |
| ドライランモード | ✅ --dry-run | ✅ --dry-run, -n | 短縮形追加 |
| 並列処理 | ✅ デフォルト | ✅ --concurrency N, -j N | 明示的に指定 |
| 順次処理 | ✅ --serial | ✅ デフォルト | デフォルト動作が変更 |
複製モードはLightFile Shotの新機能です。元ファイルを保持したまま、最適化済みファイルを別のディレクトリに出力できます。
複製モードの例:
# ディレクトリを別ディレクトリに出力
lightfile-shot /path/to/images /path/to/optimized
# 単一ファイルを別ファイルに出力
lightfile-shot image.jpg optimized.jpg対応ファイルシステム
| ファイルシステム | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| ローカルファイルシステム | ✅ | ✅ | 変更なし |
| FTP | ✅ | ❌ | 非対応 |
| FTPS(明示的TLS) | ✅ | ❌ | 非対応 |
| SFTP | ✅ | ❌ | 非対応 |
| WebDAV | ✅ | ❌ | 非対応 |
| S3(AWS) | ✅ | ❌ | 非対応 |
| S3互換ストレージ | ✅ | ❌ | 非対応 |
LightFile Shotはローカルファイルシステムのみに対応しています。リモートファイルシステムが必要な場合は、LightFile Batchへの移行を検討してください。
ファイルフィルタリング
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| ファイルサイズ(最小) | ✅ --file-size | ✅ --min-size | オプション名変更 |
| ファイルサイズ(最大) | ✅ --file-size | ✅ --max-size | オプション名変更 |
| 拡張子フィルタ | ✅ --ext | ✅ --ext | 変更なし |
| Glob(include) | ✅ --only | ✅ --include | オプション名変更 |
| Glob(exclude) | ✅ --exclude | ✅ --exclude | 変更なし |
| 更新日時(新しいファイル) | ✅ --recent | ❌ | 非対応 |
| 更新日時(古いファイル) | ❌ | ❌ | 非対応 |
| 処理件数制限 | ❌ | ❌ | 非対応 |
更新日時フィルタや処理件数制限が必要な場合は、findコマンドなどと組み合わせるか、LightFile Batchを使用してください。
処理済みファイルの管理
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| KVS(処理済み記録) | ✅ | ❌ | 非対応 |
| メモリディレクトリ | ✅ | ❌ | 非対応 |
| 処理済みスキップ | ✅ | ❌ | 毎回処理 |
| インデックスファイル | ✅ | ❌ | 非対応 |
LightFile Shotは処理済みファイルを記録しません。実行するたびにすべてのファイルを処理対象として評価します。
ただし、最適化の必要がないファイル(すでに最適化済み)は自動的にスキップされます。
バックアップ機能
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| 自動バックアップ(ローカル) | ✅ | ❌ | 非対応 |
| 自動バックアップ(S3) | ❌ | ❌ | 非対応 |
| バックアップディレクトリ指定 | ✅ | ❌ | 非対応 |
| バックアップ無効化 | ✅ | - | 機能なし |
LightFile Shotにはバックアップ機能がありません。元ファイルを保持したい場合は、複製モードを使用してください。
# 複製モードで元ファイルを保持
lightfile-shot /path/to/images /path/to/optimizedログ・進捗表示
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| ログレベル設定 | ✅ --logging | ✅ --log-level | オプション名変更 |
| デバッグログ | ✅ --logging debug | ✅ --log-level debug | 変更なし |
| 静音モード | ✅ --logging quiet | ✅ --quiet, -q | 短縮形追加 |
| 詳細ログ | ❌ | ✅ --verbose, -v | 新機能 |
| 進捗表示 | ✅ --progress | ✅ 自動 | 自動的に表示 |
| ジャーナル機能(NDJSON) | ❌ | ✅ --journal | 新機能 |
| ログファイル保存 | ✅ | ✅ | 標準出力をリダイレクト |
| ログローテーション | ✅ | ❌ | 廃止 |
ジャーナル機能(新機能)
処理結果をNDJSON(改行区切りJSON)形式で出力できます。
lightfile-shot /path/to/images --journal results.ndjson出力例:
{"path":"image.jpg","status":"optimized","beforeSize":102400,"afterSize":51200}
{"path":"photo.png","status":"skipped","reason":"already optimized"}詳細はジャーナルファイルを参照してください。
通知機能
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| Email通知(SMTP) | ✅ | ❌ | 非対応 |
| Slack通知 | ✅ | ❌ | 非対応 |
LightFile Shotには通知機能がありません。処理結果の通知が必要な場合は、ジャーナル機能と外部スクリプトを組み合わせるか、LightFile Batchを使用してください。
設定管理
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| コマンドラインオプション | ✅ | ✅ | 変更なし |
| YAML設定ファイル | ❌ | ❌ | 非対応 |
| 環境変数(トークン) | ❌ | ✅ LF_TOKEN | 新方式 |
| 環境変数(ログレベル) | ✅ | ✅ LOG_LEVEL | 変更なし |
| 環境変数(言語) | ❌ | ✅ LANG | 新機能 |
複雑な設定管理が必要な場合は、YAML設定ファイルに対応したLightFile Batchを使用してください。
ライセンス管理
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| シリアルコード認証 | ✅ --serial | ❌ | 廃止 |
| トークン認証 | ❌ | ✅ --license-token | 新方式 |
| トークンファイル | ❌ | ✅ ~/.lightfile-next/token | 新方式 |
| ライセンス検証タイミング | 起動時 | 起動時 | 変更なし |
ライセンストークンの指定方法
優先順位:
- コマンドラインオプション:
--license-token <token> - 環境変数:
LF_TOKEN - ファイル:
~/.lightfile-next/token
詳細はライセンス認証を参照してください。
システムディレクトリ
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| システムディレクトリ | ✅ ~/.lightfile/ | ✅ ~/.lightfile-next/shot/ | パス変更 |
| プロジェクトディレクトリ | ✅ --project-dir | ❌ | 非対応 |
| バックアップディレクトリ | ✅ --backup-dir | ❌ | 非対応 |
エラーハンドリング
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| 自動リトライ | ✅ 3回 | ❌ | 非対応 |
| リトライ回数設定 | ✅ --file-error-retry | ❌ | 非対応 |
LightFile Shotはエラー発生時に自動リトライを行いません。エラーが発生したファイルは終了コードとログで確認できます。
高度な機能
| 機能 | 旧LightFile | LightFile Shot | 備考 |
|---|---|---|---|
| プロキシ設定 | ✅ --proxy | ✅ 環境変数 | HTTP_PROXY/HTTPS_PROXY |
| 排他制御 | ✅ --pid | ❌ | 不要(ワンタイム処理) |
| 分析モード | ✅ --analyze | ❌ | 廃止 |
性能
| 項目 | 旧LightFile | LightFile Shot | 改善度 |
|---|---|---|---|
| 起動速度 | 遅い(Node.js) | 高速(Go) | ⚡ 大幅改善 |
| メモリ使用量 | 高い(Node.js) | 低い(Go) | ⚡ 大幅改善 |
| 処理速度 | 普通 | 高速 | ⚡ 改善 |
| 依存関係 | Node.js必須 | なし | ⚡ 完全なバイナリ |
Go言語で実装されたLightFile Shotは、Node.js版と比較して起動が高速で、メモリ使用量も大幅に削減されています。
主な改善点
✅ 新機能
-
複製モード - 元ファイルを保持しつつ最適化版を別保存
lightfile-shot /source /destination -
ジャーナル機能 - 処理結果をNDJSON形式で記録
lightfile-shot /images --journal results.ndjson -
完全なバイナリプログラム化
- Node.js不要
- 高速起動と省メモリ
- 依存関係なし
-
多言語サポート
LANG=ja lightfile-shot /images # 日本語ログ LANG=en lightfile-shot /images # 英語ログ
❌ 廃止機能
- リモートファイルシステム - ローカル専用に特化
- 処理済みファイルのスキップ - 毎回評価(最適化済みは自動スキップ)
- バックアップ機能 - 複製モードで代替
- 通知機能 - ジャーナル機能で代替
- YAML設定ファイル - シンプルなコマンドライン操作に特化
LightFile Shotへの移行を推奨するケース
以下のケースでは、LightFile Shotへの移行を推奨します:
- ✅ ワンタイム処理が中心 - 定期的なバッチ処理ではなく、必要なときに実行
- ✅ ローカルファイルシステムのみを使用 - リモートファイルシステムは不要
- ✅ シンプルな設定で動作させたい - 複雑な設定ファイルは不要
- ✅ 軽量で高速なツールを求めている - Node.jsの依存関係を避けたい
- ✅ 複製モードを使いたい - 元ファイルを保持しつつ最適化版を作成
LightFile Batchへの移行を検討すべきケース
以下のケースでは、代わりにLightFile Batchへの移行を検討してください:
- ⚠️ 定期的なバッチ処理を行っている - 処理済みファイルのスキップが必要
- ⚠️ リモートファイルシステムを使用している - FTP/SFTP/WebDAV/S3など
- ⚠️ バックアップや通知機能が必要 - 自動バックアップ、Email/Slack通知
- ⚠️ YAML設定ファイルで管理したい - 複雑な設定を一元管理
詳細はLightFile Batchへの移行を参照してください。
次のステップ
- 旧LightFileからの移行 - 移行手順の詳細
- コマンドの変更点 - コマンドラインオプションの対応表
- クイックスタート - LightFile Shotの基本的な使い方