jsonscraper

PhotoCraft v0.7:PSD互換性の検証と高速エディターの構築

10月11日のリリースで、チームは比較用画像、CPU・GPUコンポジター、視覚的一致度の測定可能な基準について説明しています。

編集方針 誤りを報告する

PSDはエディターで開けても、表示が異なることがあります。マスク、テキスト、レイヤー効果、合成順序などに差が生じる可能性があります。結果を検証する方法の一つは、再構成した画像をPSD自体に埋め込まれた統合画像と比較することです。2026年10月11日に公開されたPhotoCraft v0.7.0を例に、Rustで書かれたオープンソースのグラフィックエディターにおける、このエンジニアリング手法を見ていきます。

記事:PhotoCraft v0.7:PSD互換性の検証と高速エディターの構築
概要:PhotoCraft v0.7が10月11日に公開されました。PSDに埋め込まれた統合画像を使って合成結果を検証し、CPUとGPUのレンダリングを比較する方法と、これらの手法がグラフィックツール開発者にもたらすものを解説します。
画像の役割:カバー — 中心となるアイデア
セクション:
ビジュアルの内容:レイヤー構造を持つPSDの参照画像と、CPUとGPUの合成結果のピクセル単位の差を表示するデスクトップのグラフィックエディターのキャンバス
© jsonscraper · AI生成イラスト

リリースでは、ブラシ、選択範囲、マスク、OpenRasterの読み込みなど、エディターのさまざまな部分の変更が列挙されています。開発者にとって特に興味深いのは、プロジェクトが公開しているドキュメントです。PSDの読み込みテスト、コンポジターの比較、再現可能な検証に使うファイルコーパスについて説明しています。

PSDには比較用の基準画像が含まれている

レイヤーを持つPSDには、レイヤー構造とドキュメントの統合画像が含まれています。PhotoCraftはレイヤーをレンダリングし、その結果をこの埋め込み済みの合成画像と照合します。このテストでは、テキスト、調整、効果、その他の形式機能を処理した際に、プログラムがドキュメントの見た目をどの程度正確に再現できるかを確認できます。

PhotoCraftのアーキテクチャ説明では、この手法を「コンポジターのオラクル」と呼んでいます。テストに関するドキュメントには、3種類のPSDコーパスが記載されています。チームがPhotoshopで作成した256ファイル、psd-toolsとag-psdのデータセットからの170ファイル、さらにpsd-toolsの309ファイルからなる別のセットです。コーパスは固定されたバージョンで取得され、チェックサムによって検証されます。

形式の開発では、テストを「何を検証するのか」に応じて分けると便利です。構造解析テストではドキュメントを読み込めたか、開いて保存するテストではデータが保持されたか、合成画像の比較では視覚的な結果をどの程度正確に再現できたかを確認します。PhotoCraftのドキュメントには、変更のないファイルのバイト単位の安定性テストと、PSDに埋め込まれた合成画像との比較テストの両方が記載されています。

CPUコンポジターを基準実装として使う

プロジェクトでは、CPUコンポジターをエクスポートとテスト用の基準経路として説明しています。wgpuを使ったGPUコンポジターは、キャンバス上で同じ処理計画を実行します。アーキテクチャのドキュメントによれば、8ビット出力では誤差を1/255以内に抑えて結果を比較し、ソフトウェアグラフィックスアダプターも含めてCIでCPUとGPUを検証しています。

インタラクティブなキャンバスにはGPUが必要ですが、ハードウェア経路が利用できるかどうかは、ドキュメントと実行環境に左右されます。ガイドによると、複数チャンネルのドキュメントやテクスチャ上限を超える領域はCPUコンポジターで処理されます。GPUデバイスが失われた場合にも、キャンバスはCPUに切り替わります。これは経路を切り替える具体的な条件であり、あらゆるデバイスで一律の速度が得られるという主張ではありません。

この一般的なパターンは、ほかの計算システムにも応用できます。最適化された経路と並行して検証可能な基準実装を用意し、同じ入力で両方を実行します。データベースなら最適化エンジンと単純なインタープリター、メディア処理ならハードウェアアクセラレーション経路とソフトウェア経路を比較できます。比較によって結果の不一致を見つけられます。同じ入力と許容誤差の基準を固定すれば、検証を再現可能にできます。

この方法を実用的なテストにする

  1. 小規模で多様なコーパスを用意する。マスク、テキスト、グループ、透明度、効果、カラーモードを含むファイルをそろえます。以後の実行で同じ入力を使えるよう、ファイルの由来とコーパスのバージョンを記録します。
  2. 基準画像と許容誤差を決める。PSDでは、結果を埋め込み済みの統合画像と比較できます。許容誤差を定め、アプリケーションにとって重要であれば、サイズ、カラープロファイル、アルファチャンネルも個別に検証します。
  3. 読み込み、保存、レンダリングを分ける。レイヤー構造の解析、保存後の再読み込み、基準画像との一致を、それぞれ別のテストで確認できます。これにより、どの段階でエラーが発生したかを特定しやすくなります。
  4. 同じケースを複数のバックエンドで実行する。タイル境界や効果を含むテストも使い、同じドキュメントでCPUとGPUの結果を比較します。回帰を再現できるよう、入力と視覚的な差を保存します。
  5. パフォーマンス測定の条件を記録する。ドキュメントのサイズ、レイヤー数、ハードウェア、キャッシュの状態を記載します。PhotoCraftのドキュメントには、個別のテストやコンポジター比較を実行するコマンドがあります。そこに記された測定値は、特定の構成とシナリオに基づくものです。

PhotoCraftの開発ガイドでは、PSDコーパス、視覚的な差、異なる合成経路の挙動を検証するコマンドを説明しています。エディターのテスト基盤を調べる際の具体的な出発点として活用できます。ドキュメントに記載されたパフォーマンスの数値は、そこに示されている入力とハードウェア構成とあわせて読む必要があります。

PhotoCraftの事例からわかること

PhotoCraft v0.7.0ではエディター自体に変更が加えられていますが、プロジェクトのドキュメントからは、PSDを使って合成を検証し、GPU経路をCPU実装と比較するという、別のエンジニアリング手法もわかります。エディター、コンバーター、複雑なファイルを扱うほかのツールを開発する人にとって、役立つ教訓は明快です。読み込み、保存、視覚的な結果を個別にテストし、固定した入力で高速化された実装を基準バージョンと比較することです。そうすれば、互換性とパフォーマンスを検証可能なプログラムの特性にできます。

People

No people listed for this article yet.

Keep readingCloudflare、音声・動画を構造化分析するClef-omniを発表
Read the next article

読んだ内容を実用的な連携へ

jsonscraperのソーシャルデータAPIを調べ、リクエストを試し、次のワークフローを構築しましょう。

APIを探す