画像データについて
Q データが破損する可能性はありますか? 共通
A アルゴリズムの特性と画質のダブルチェックにより可能性は極めて低いです。
LightFileは、アルゴリズム自体が元画像との視覚的な差分(SSIM)を計算して、変化の少ない画像を採用します。逆に言うと、破損したデータがあるとそれ移行の処理を継続することがない仕組みになっています。
元のファイルに削減結果を上書きする直前にも最終の差分計算を行い、想定外の劣化が発生した場合には処理を中断します。従ってデータについて実質的なダブルチェックが行われています。
破損が発生する可能性があるとしたら、サイズを削減した作業用の一時ファイルから元のファイルに上書きコピー(FTPなどの外部接続の場合はアップロード処理)をするときの通信エラーによるものです。
Q PNGファイルも軽量化できますか? 共通
A バージョン4.0.0でPNGに対応しました。
PNGファイルは256色への減色処理により軽量化を行います。ただし画質評価を行い、損なわれる場合は減色を行いません。
Q ファイルサイズが逆に大きくなることはありますか? 共通
A ありません。
サイズの削減処理を試みた後、もしファイルサイズが元より大きくなってしまった場合はそのファイルの処理を中断します。ファイルは元の状態のままとなり、次回以降の実行時も処理対象から外されます。
Q 処理前ファイルに戻すことはできますか? 共通
A 自動的に保存されるバックアップから元に戻すことができます。
元のディレクトリ構造を保って処理前のファイルを自動バックアップします。
ディレクトリ全体から個別のファイルまで、容易に処理前のファイルを復元することができます。
当然ながら、バックアップ復元後にまたLightFileを実行すると再度ファイルサイズの削減処理が実行されます。
Q 同じファイルに繰り返し処理が実行されることはありますか? 共通
A ありません。
ファイルサイズの削減が繰り返し実行されると画質が劣化してしまうため、繰り返しての処理は行われないようになっています。
処理済みのファイルについてそのタイムスタンプやサイズが簡易データベースファイルに記録されます。繰り返しファイルサイズの削減が行われることはありません。
また、画像ファイル自体のヘッダ情報にも削減処理済みであることを記録します。簡易データベースファイルが破損・消失しても処理が繰り返されることはありません。
Q Jpegファイルであればすべて軽量化できますか? 共通
A 軽量化処理の対象外となるファイルや軽量化自体できないファイルもあります。
ファイルサイズが5MB以上の画像と、10KB未満の画像は処理の対象外となります。それぞれメモリ消費量が大きいこと、軽量化の効果が少ないことが理由です。
Jpeg画像についてはCMYKカラーモデルの画像は軽量化できません。
Q 品質を変更しても削減後のファイルサイズが同じでした。不具合でしょうか? 共通
A 不具合ではなく起こりえる事象です。
LightFileは、いくつかの圧縮率で実際に再圧縮を行った後、その候補の中から一定の画質をクリアする最も軽量な結果を採用します。
品質オプションquality
は、その基準となる画質を決定するパラメータですが、例えばlow
とmedium
の画質基準の間に候補がなければ両者の結果は同じになります。
Q 途中から品質オプションを変更することはできますか? 共通
A 可能ですが、新たに処理される画像のみが対象になります。
品質オプションquality
はいつでも変更できますが、それ以降に処理される画像ファイルのみが対象となります。すでに以前の品質で軽量化が行われた画像については再実行されません。
品質を変更してやり直す場合は、バックアップから復元するなどして再び処理の対象とする必要があります。
Q ファイルサイズはすぐに削減されますか? LightFileコマンド
A cronの設定による実行間隔によります。
LightFileはcronで定期的にコマンドを実行することで、特定のディレクトリ内のファイルをスキャンし、未処理のファイルのサイズを削減します。
アップロードされた直後の画像は、当然ながら次のプログラムの定期実行までの間、ファイルサイズの削減は行われません。
システムへの影響について
Q ミドルウェアやライブラリの追加は必要ですか? LightFileコマンド
A 必要ありません。
LightFileコマンドは単独で動作するバイナリプログラムファイルです。
ミドルウェアの追加インストールやバージョンアップは必要ありません。プログラムを実行環境にアップロードして、実行権限を付与するだけでインストールが完了します。
Q ディスク容量はどのくらい消費しますか? LightFileコマンド
A バックアップするファイルのサイズに依存します。
LightFileは実行したサーバー上に、元の画像ファイルのバックアップを保存します。
ファイルサイズの削減前の画像ファイルの容量と同じ領域が必要になります。
定期的に古いバックアップファイルを削除する処理をシステムに追加することで容量の肥大化を抑えることも考えられます(バックアップファイルの削除機能はLightFileに含まれません)。
Q 解約後の影響や必要な作業はありますか? LightFileコマンド
A 特にありません。
新たに追加されたファイルや変更されたファイルが処理されなくなるだけで、それ以外の影響はありません。
LightFileがファイルサイズを削減した後の画像ファイルも、あくまで通常の画像ファイルです。こちらも表示について依存するプログラムなどはありません。
もし元の状態に復元する場合は、バックアップファイルを使って復元できます(バックアップからの復元機能はありません)。
Q 外部のサーバーに通信が行われますか? LightFileコマンド
A はい。外部への通信が発生します。
次の目的で、外部のサーバに対しHTTPSで暗号化された通信が行われます。禁止されている場合は許可ください。
ひとつめはプログラムの利用について、シリアルコードの認証処理です。op.lightfile.net
ドメインに対するHTTPS(ポート443)通信が行われます。
もうひとつはサポートを目的としたログの収集です。AWSのFirehose
を使用しており、firehose.ap-northeast-1.amazonaws.com
ドメインに対するHTTPS(ポート443)通信が行われます。
固定IPではありませんのでご注意ください。
負荷について
Q CPUやメモリへの負荷はどのくらいですか? LightFileコマンド
A 一定の負荷が発生しますが調整も可能です。
各ファイルについて画像ファイルの読み込み、サイズの削減処理、画像ファイルの上書きの処理が発生します。
メモリについては、一定のサイズより大きなファイルは処理対象としないため、急激に消費することはありません。CPUとディスクに対し、継続した負荷がかかります。
初回は全ファイルに対して処理が行われるので、負荷が長く継続します。
次回以降は、前回実行時から新たに追加されたファイルと変更されたファイルのみ対象になります。一般的にはそれらの処理は短時間で終了します。
Q 負荷をどのように調整すればよいですか? LightFileコマンド
A 並列処理の数を変更したりやniceコマンドを併用してください。
デフォルトではそのマシンのCPUコア数分の並列処理を行います。コマンドラインオプション--concurrency
でその数を変更可能です。
もうひとつ、nice
コマンドと併用する方法があります。niceコマンドは任意のプログラムのリソース占有を制限できます。
負荷を低減すると、当然ながらトレードオフにより処理時間は伸長します。
Q 定期処理が長引いたとき多重起動が発生しませんか? LightFileコマンド
A 排他制御により多重起動は発生しません。
すでにLightFileコマンドを実行中に、新たにLightFileコマンドを実行しようとしても、その新しいプログラムはすぐにエラーとして終了します。すでに稼働中のプログラムに影響はありません。
意図的に多重起動を認める方法もあります。--pid
コマンドラインオプションに個別のPIDファイルパスを指定すると、複数のlightfileコマンドを起動できます。
Q 進捗ログの出力が行われないことがあるのはなぜですか? LightFileコマンド
A そのとき行われている処理によって進捗ログの出力が一時的に停止することがあります。
例えばFTP接続時に、大量のファイルや子ディレクトリが存在するディレクトリの読み取りを行っているとき、進捗ログがなかなか行われないことがあります。
不具合ではありませんのでしばらく経過を観察ください。