Photoshopはどのようにしてデバイスのメモリを超えるサイズのファイルを編集可能にしているのか?

Adobeが開発する画像編集ソフトウェアのPhotoshopは、イラストやポスター、漫画などを作成・編集するために世界中で広く使われています。そんなPhotoshopでは編集しているファイルのサイズが非常に大きくなり、時にはPCやタブレットが使用できるメモリ(RAM)の容量を超えてしまうこともあるとのこと。「Photoshopはどのようにしてデバイスのメモリを超えるサイズのファイル編集を可能にしているのか?」という疑問について、Adobeの主任研究者であるナビール・アルシャマー氏らが説明しています。
How Photoshop solved working with files larger than can fit into memory - Chrome Developers
https://developer.chrome.com/blog/how-photoshop-solved-working-with-files-larger-than-can-fit-into-memory/

Photoshopで単にPSDファイルを開くだけの場合と比較して、Photoshopでファイルを編集するにははるかに多くのメモリが必要となります。また、PSDファイルは可逆圧縮でデータを保存しており、ファイルが読み取られるとすべての画像データが解凍されるため、必要なメモリの量はファイルをHDDやクラウドストレージで保存する際の数倍になる可能性があるとのこと。
さらにPhotoshopのメモリ管理を難しくしているのが、編集中のファイルには膨大な量の「元に戻す」履歴が存在するという点です。Photoshopで「ブラシで塗りつぶす」「必要ない下書きの線を消す」などの操作を実行すると、元のピクセルデータと同じ大きさの新たなピクセルデータが生成され、編集セッションが長くなるほど履歴データは蓄積されていきます。これにより、ファイルの編集履歴が数百MB~数GBに達することもあるとアルシャマー氏は指摘しています。

PCやスマートフォンなどのデバイスでは使用できるメモリの容量がそれぞれ異なっており、ブラウザやアプリなどのプラットフォームが作業に使用するメモリの量を管理しています。理想的にはアプリが必要なだけのメモリを自由に使えることが好ましく、これによりユーザーは最高のエクスペリエンスを得られるものの、Photoshopのように膨大なメモリを使う場合は簡単にファイル容量がメモリの上限を超えてしまうとのこと。プラットフォームの多くはハードディスクの一部をメモリのように使う仮想メモリをサポートしており、物理的に使用可能なメモリの上限を超えることができますが、それでも限界があります。
そこでPhotoshopはメモリ容量の上限に対処するため、「virtual memory system(VM:バーチャルメモリシステム)」というソフトウェアを実装しています。VMはすべての「元に戻す」の履歴と状態、現在の作業用ストレージを管理しているほか、ブラシの説明文のように大きなデータブロックをキャッシュする場合にも使われるそうです。
また、VMによるデータ管理の1つに画像データをミップマップで格納するというものがあります。ミップマップはメインとなるテクスチャーの画像を補完するよう事前計算され、最適化されたさまざまな大きさの画像群のことであり、低解像度から高解像度の画像データを提供します。Photoshopでは編集中の画像を拡大・縮小する際に、元となる画像をいちいち処理するのではなく、事前に用意されたミップマップを使用することで素早く表示しているとのこと。

Photoshopはアプリケーションの初期化中に使用可能なメモリの量を決定し、VMに格納されるデータの分も確保します。VMのメモリは「ページ」と呼ばれる単位に分割され、単一レイヤーのピクセルの正方形領域を「タイル」として参照しているとのこと。
PhotoshopはVMページをディスクベースでマッピングするために、多数のVMページを含んだ1つ以上のスクラッチファイルを作成しています。VMでより多くのマッピングが必要になると追加のスクラッチファイルを作成し、ページが解放されるとスクラッチファイル内のスペースを新たなページに再利用できるとアルシャマー氏は説明しています。
画像データを処理する場合、Photoshopはタイルを反復処理してピクセル計算を実行します。この際、VMは反復処理のためのソースタイルとターゲットタイルがメモリ内にあることを確認し、必要に応じてスクラッチファイルから読み込むほか、スクラッチファイルのページを出力してメモリに空きを作っているとのこと。
アルシャマー氏は、「VMの具体的な実装の詳細はこの記事の範囲をはるかに超えてしまいますが、ソリューションの概要を説明することで、Photoshopが大容量ファイルを扱う方法を理解できるようにしたつもりです」と述べました。
・関連記事
無料のウェブ版PhotoshopのテストをAdobeが開始 - GIGAZINE
数時間かかる「画像内に物体を追加する作業」を一瞬で実行できるPhotoshopの「ジェネレーティブ塗りつぶし」使用レビュー - GIGAZINE
ついにPhotoshopへ驚異的AI機能「ジェネレーティブ塗りつぶし」追加へ、「画像の続きを生成する機能」「被写体を生成して画像内に追加」などができベータ版で利用OK - GIGAZINE
「画像の続き」をAIで描画できるPhotoshopの「ジェネレーティブ塗りつぶし」を試してみた - GIGAZINE
名盤のジャケットをPhotoshopの「ジェネレーティブ塗りつぶし」で補完したら「そう来るか」な光景が広がりまくって面白い - GIGAZINE
英語では「Photoshopする」という動詞が用いられている、どのような経緯でPhotoshopは動詞になったのか? - GIGAZINE
・関連コンテンツ
in ソフトウェア, Posted by log1h_ik
You can read the machine translated English article How does Photoshop allow you to edit fil….