⚠️ これは 非公式の翻訳サイトです。ImageMagick Studio LLC とは無関係です。正確な情報は 原文(https://imagemagick.org/magick-cache/) を参照してください。

MagickCache(画像キャッシュ)

MagickCache は、画像・画像シーケンス・動画・音声・メタデータをローカルフォルダにキャッシュする安全な手法とツールを提供します。あらゆるコンテンツは効率的な取得のためメモリマップされます。画像の一部を取得することでさらなる効率化も可能です。コンテンツは永続化できますし、生存時間(TTL)を割り当てて TTL 超過時に自動的に期限切れにすることもできます。MagickCache は数十億の画像に及ぶ事実上無制限のコンテンツをサポートし、Web 画像サービスに適しています。

MagickCache は ImageMagick と連携して動作します。MagickCache をダウンロードしてインストールします。その後、キャッシュを作成し、画像・動画・関連メタデータを投入します。

MagickCache を作成する

コンテンツを格納・取得する場所が必要です。ローカルファイルシステムにキャッシュを作成しましょう:

$ magick-cache -passkey passkey.txt create /opt/magick-cache

ここで passkey.txt にはキャッシュのパスキーが含まれます。パスキーを失くさないでください。それなしでは、キャッシュ内のコンテンツを識別・期限切れ・削除できません。

MagickCache の作成は一度だけで構いません。ただし、異なるパスで複数の MagickCache を作成することもできます。

MagickCache を作成したら、画像・動画・音声・メタデータを含むコンテンツをキャッシュに投入します。

MagickCache にコンテンツを入れる

新しく作成したキャッシュに映画のキャスト画像を追加しましょう:

$ magick-cache put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg

なお、画像識別子は project /type /resource-path から成る IRI です。この例では project は movies、type は image、resource path は mission-impossible/cast/rebecca-ferguson です。このパスはキャッシュリソースを一意に識別します。2 つの異なる画像を同じ resource path で格納することはできません。代わりに mission-impossible/cast/20210508-rebecca-ferguson-1 や mission-impossible/cast/20210508-rebecca-ferguson-2 のようにします。

では、リソースパスキーと生存時間を 2 日に設定しましょう。2 日目以降のいつでも、画像は expire 機能で自動的に削除されます。画像を取得・期限切れ・削除するには、同じリソースパスキーを使う必要があります:

$ magick-cache -passkey passkey.txt -ttl "2 days" put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg

ここで passkey.txt にはリソースパスキーが含まれます。パスキーを失くさないでください。それなしでは、所有するリソースを取得・識別・期限切れ・削除できません。

リソースパスキーは、あなたとキャッシュ所有者だけが画像にアクセスできることを保証します。キャッシュ所有者がその内容を見られないようにするには、次で撹乱します:

$ magick-cache -passkey passkey.txt -passphrase passphrase.txt -ttl "2 days" put /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.jpg

なお、blob とメタデータはキャッシュに平文で格納されます。詮索を防ぐには、キャッシュに格納する前にコンテンツを撹乱してください。

MagickCache からコンテンツを取得する

いずれコンテンツを取得したくなります。元のキャスト画像をキャッシュから取得しましょう:

$ magick-cache -passkey passkey.txt get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

元画像は JPEG 形式でキャッシュに入れられた点に注目してください。ここでは画像を取り出す際に便利に PNG 形式へ変換しています。

-extract オプションは画像取得時に便利です。画像の一部を抽出するには、タイルの幅・高さ・オフセットを指定します:

$ magick-cache -passkey passkey.txt -extract 100x100+0+0 get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

代わりにリサイズするには、オフセットを指定しません:

$ magick-cache -passkey passkey.txt -extract 100x100 get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

画像が撹乱されている場合、復元するパスフレーズを提供します:

$ magick-cache -passkey passkey.txt -passphrase passphrase.txt get /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson rebecca-ferguson.png

MagickCache からコンテンツを削除する

コンテンツを明示的に削除できます:

$ magick-cache -passkey passkey.txt delete /opt/magick-cache movies/image/mission-impossible/cast/rebecca-ferguson

または、期限切れ(それぞれの生存時間を超過)したすべてのキャスト画像を削除するには、次のコマンドを試します:

$ magick-cache -passkey passkey.txt expire /opt/magick-cache movies/image/mission-impossible/cast

MagickCache のコンテンツを識別する

所有するすべてのコンテンツを識別したいかもしれません:

$ magick-cache -passkey passkey.txt identify /opt/magick-cache movies/image/mission-impossible/cast
movies/image/mission-impossible/cast/rebecca-ferguson[1368x912] 406B 1:0:0:0 2021-05-30T17:41:42Z
identified 1 resources

各エントリには、IRI、画像の場合は画像寸法、コンテンツのバイトサイズ、生存時間、リソースが期限切れかどうか(* で示される)、作成日が含まれます。

他者はあなたのコンテンツと並べてキャッシュにコンテンツを格納できます。ただし、彼らのコンテンツはあなたには利用できません。あなたの秘密パスキーで判定される、所有していないコンテンツを取得・識別・期限切れ・削除することはできません。

MagickCache 所有者は、たとえば次のコマンドで、あなたが所有するものを含むすべてのコンテンツを取得・識別・期限切れ・削除できます:

$ magick-cache -passkey passkey.txt identify /opt/magick-cache /

なお、期限切れのリソースはアスタリスクで注記されます。

MagickCache は画像専用ではない

image タイプに加えて、画像コンテンツを元の形式で、または動画・音声をコンテンツタイプ blob として、メタデータをコンテンツタイプ meta として格納できます:

$ magick-cache -passkey passkey.txt put /opt/magick-cache movies/blob/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.mp4

または

$ magick-cache -passkey passkey.txt put /opt/magick-cache movies/meta/mission-impossible/cast/rebecca-ferguson 20210508-rebecca-ferguson.txt

画像は ImageMagick が理解する形式でなければなりません。メタデータはテキストでなければなりません。blob は画像・動画・音声・バイナリファイルを含む任意のコンテンツで構いません。

MagickCache を削除する

MagickCache 所有者はキャッシュ内のすべてのコンテンツを完全に削除できます:

$ magick-cache -passkey passkey.txt delete /opt/magick-cache /

注意してください。このコマンドの後、キャッシュされたコンテンツは取り返しのつかない形で失われます。

セキュリティ

MagickCache のセキュリティは暗号学的に強固ではありません。代わりに各リソースに一意のハッシュを生成し、リソース ID が発見できないようにします。リソースは、それぞれのパスキーを提示できれば、キャッシュの利用者とキャッシュ所有者の両方からアクセスできます。MagickCache のディスクパスにアクセスする十分な権限を持つ者からもアクセスできます。