MacとiOSの写真アプリにおける非破壊編集の詳細

MacとiOSの写真アプリにおける非破壊編集の詳細

写真、そしてそれ以前のiPhotoの魔法とも言える機能の一つは、写真を編集する際に非破壊編集であることを保証してくれる点です。つまり、いつでも元の状態に戻すことができます。しかしながら、非破壊編集は、特にRAW画像を扱う人や写真の拡張機能を使って編集を行う人にとって、多少の混乱を招きます。

状況を明確にするために、まずは写真アプリにおける非破壊編集の仕組みを、写真アプリを例に挙げて説明します。次に、RAW画像ファイルや写真拡張機能など、写真アプリにおける非破壊編集の仕組みを詳しく説明します。また、問題点についてもいくつか指摘します。

背景をご説明いたしますと、私はApertureのリード開発者であり、その後Mac版Photosの編集エンジン開発チームを率いました。現在は独立し、PhotosとApertureの基盤となる同じRAWエンジンを搭載したRAW PowerというPhotos拡張機能を開発しています。この記事ではRAW Powerを例として挙げることが多いですが、他のPhotos拡張機能も同様に動作します。RAWに馴染みのない方は、RAWの利点とAppleの新しい画像フォーマットHEIFについて解説した別の記事をお読みください。

ほとんどのアプリケーションは、ドキュメントを直接変更します。例えば、Microsoft Wordで「保存」を選択すると、変更内容がドキュメントファイルに直接保存され、以前のバージョンのファイルが上書きされます。一部の画像編集アプリケーション、特にAdobe PhotoshopやAppleのPreviewなどは、画像ファイルを直接変更します。

対照的に、ほとんどの写真編集アプリケーションは非破壊的に動作し、元の写真を変更することはありません。アプリケーションは、メモリ内の元の写真のコピーに編集を適用し、調整後の画像をリアルタイムでプレビューします。

非破壊編集の基本的な例。
アプリケーションは編集指示を自動的に保存するか、「完了」ボタンをクリックするか「保存」ボタンをクリックするまで待機します。ユーザーから見ると、画像は変更されたように見えますが、元のファイルはそのまま残ります。この非破壊モデルは非常に便利ですが、他のアプリケーションで期待される効果と相反するため、ユーザーを混乱させる可能性があります。

写真アプリは、編集内容を元のファイルとは別の場所に保存し、編集結果を含むフルサイズの JPEG ファイル(および小さなサムネイル画像)を生成します。(写真アプリは、RAW ファイルや Apple の新しい HEIC ファイルを含むすべてのファイル形式を JPEG で作成します。Mac 版の写真アプリの情報パネルには常に元のファイル形式が表示されるため、編集中のファイル形式を確認することはできません。)編集が完了すると、ディスクには次の内容が保存されます。

非破壊編集で保存されるもの。

フルサイズのJPEGはディスク上で独立したファイルとして保存されます。小さなサムネイルは、複数のサムネイルを一度に保持する「コンテナ」ファイルに保存されます。編集指示は、画像に関するその他の情報とともに、フォトライブラリのデータベースに保存されます。

後日、画像の編集を続ける場合は、元の画像と編集指示の両方が再読み込みされ、それらを組み合わせて調整された画像が表示されます。

編集モード以外では、写真アプリはオリジナルの写真を非表示にし、代わりにアプリケーションのあらゆる場所でフルサイズのJPEGまたは小さなサムネイルを表示します。これは明らかに正しいのですが、オリジナルを非表示にすることで、オリジナルが修正されたという印象が強まります。これが人々を混乱させる主な要因です。多くのユーザーから、編集前に画像をコピーまたは複製する方法を尋ねられます。彼らは写真アプリの巧妙な操作に騙され、調整を加える前にオリジナルを保存しておく必要があると考えています。(グリッドに調整前の画像と調整後の画像の両方を表示したいために画像を複製する人もいますが、これはあまり一般的ではありません。)

皮肉なことに、非破壊編集が存在する理由の一つは、RAWファイルをその場で編集できないからです。RAWセンサーデータに任意の編集を加え、その編集結果からRAWセンサーデータを作成することはできません(線形化されたDNGファイルを作成することは可能ですが、線形化されたDNGファイルはRAW画像ではありません)。Photosは元のRAW画像を変更することはありません。

なぜこんなに面倒なことをするのでしょうか?非破壊エディターには3つの重要な機能があるからです。

  1. 元の画像を即座に表示してA/B比較を可能にします
  2. 画像の編集とサムネイルをすべて破棄し、元の画像を表示します
  3. 品質を損なうことなく、個々の編集を修正または削除します

写真アプリは、編集指示を常にライブラリのデータベースに保存します。他のアプリケーションでは、データベースを使用したり、別の「サイドカーファイル」に保存したりする場合があります。サイドカーファイルは通常、同じ名前で異なる拡張子を使用します。例えば、IMG_0005.JPG という画像の場合、アプリケーションは同じディレクトリに IMG_0005.xmp または IMG_0005.dat というサイドカーファイルを保存することがあります。サンドボックス化されたアプリケーションでは、サイドカーファイルが別の場所に保存されることがあります。

サイドカーは汎用ファイルであるため、サムネイルやレーティングなどの様々なメタデータも保存できます。ほとんどの画像フォーマットは、ピクセルを変更したり、他のアプリケーションが元のピクセルデータを読み取る能力を損なうことなく様々なデータを保存できるため、アプリケーションはサイドカー情報を元のファイル内に保存することがあります。これにより、編集情報は元のファイルデータに保持されますが、アプリケーションが元のファイルにデータを正しく挿入できなかった場合、破損やデータ損失につながる可能性があります。また、すべてのアプリケーションが、他のアプリケーションからのサイドカーデータを元のファイルに書き込む際に、正しく保持するとは限りません。これらの理由から、多くの写真家はサイドカーを元のファイルとは別に保存することを好みます。

写真拡張機能

非破壊編集というと、写真アプリのネイティブ編集ツールを思い浮かべることが多いですが、それだけではありません。開発者は「写真拡張機能」と呼ばれるプラグインを作成し、写真アプリに追加の編集機能を提供することができます。写真拡張機能にアクセスするには、写真の編集を開始し、ウィンドウ上部の拡張機能(···)ボタンをクリックします。

写真拡張機能へのアクセス

写真拡張機能は、写真編集インターフェースに追加のスライダーを追加するものではありません。その代わりに、標準の写真ツールを完全に置き換えます。

デフォルトのコントロールを置き換える写真拡張機能

写真アプリの通常の編集と同様に、写真アプリの拡張機能では一度に1枚の画像しか編集できません。つまり、10枚の画像をまとめてホワイトバランスを調整することはできません。写真アプリの拡張機能を選択すると、写真アプリは拡張機能を開き、元のファイルを送信します。

フォトが拡張機能に画像を送信する方法

フォト拡張機能のインターフェースで [変更を保存] ボタンをクリックすると、次に示すように、フォト拡張機能によって編集手順とフルサイズの JPEG がフォトに返されます。

拡張機能はJPEGと指示をフォトに返します

その結果、フォト拡張機能は、フォト自身の画像エディタで使用されているのと同じ非破壊システムを採用しています。フォトはJPEGと拡張機能の編集指示をライブラリに保存し、フルサイズのJPEGからサムネイルを作成し、オリジナル画像を非表示にします。

同じPhotos拡張機能で画像を再度編集する場合、Photosは拡張機能に元の画像と編集指示を渡します。これは、Photos自身の編集システムの場合と同じです。

編集した画像を編集時と同じ拡張子で編集する

写真拡張機能は、元の画像を表示できるだけでなく、その写真拡張機能で以前に行った編集内容を削除または調整できます。さらに、写真拡張機能の調整データはiCloudフォトを介して同期されるため、別のデバイスでもその写真拡張機能を使って編集を続けることができます。つまり、MacでRAW Power拡張機能を使って編集した後、別のMacでRAW Power拡張機能を使って編集したり、iOSでRAW Powerアプリを使って非破壊的に編集を続けることができるのです。

iOSでも同様のシステム動作をしますが、重要な制限が1つあります。iOS 12の写真拡張機能にはRAW画像が渡されることはなく、常にレンダリングされたJPEGが渡されます。そのため、iOS 12の写真拡張機能でRAW画像を編集するのはやめましょう。この点については以前バグ報告をしましたが、AppleがiOS 13で修正してくれることを期待しています。

玉にきず

この方法は、1つのアプリケーションまたはPhotos拡張機能で画像を編集する限りは問題なく機能します。しかし、2つのエディタが混在すると、問題が発生します。Photosは、特定の画像に対して1つのエディタの調整情報しか保存できないためです。2つ目のエディタによる変更が保存されると、1つ目のエディタによる編集指示は破棄され、復元できなくなります。画像データは保存されますが、1つ目のエディタで変更を加えるオプションは失われます。これは、お客様にとってもう一つの大きな混乱の原因となります。

この問題を説明するために、ユーザーがRAW画像にPhotosの自動補正機能を使用し、その後RAW Power拡張機能を使って切り抜きとビネットを適用する場合を考えてみましょう。Photosには優れた自動補正機能が搭載されており、Photosのビネットツールとは異なり、RAW Powerビネットではビネットの中心を選択できます。

ステップ1:ユーザーは「自動補正」ボタンをクリックし、「完了」をクリックします。前述の通り、フォトアプリはフルサイズのJPEGと調整パラメータをライブラリに保存します(元のファイルは存在しますが、非表示になっています)。

フォトで画像を変更する方法

ステップ 2:ユーザーは、写真機能拡張メニューから [RAW Power] を選択します。ここで、前の例との最初の違いに遭遇します。写真は、フルサイズの JPEG (オリジナルの RAW 画像ではない) を写真機能拡張に送信します。ユーザーは写真機能拡張で、調整されていないオリジナルの画像ではなく、自動補正された画像が表示されることを期待しているため、写真はオリジナルではなく JPEG を送信します。Apple は調整用の内部フォーマットを公開しておらず、調整用のコードへのアクセスも提供していないため、写真機能拡張では写真で行われた自動補正を適用する方法はありません。これは逆の場合も同様で、ユーザーが写真機能拡張で画像を編集し、さらに写真で編集すると、レンダリングされた JPEG を使用して写真で作業することになります。つまり、他社の拡張機能によって行われた編集をオリジナルのファイルに適用する方法はありません。

ステップ3: RAW Powerでクロップとビネットを適用し、「変更を保存」をクリックします。写真ライブラリに保存されるのは次のようになります。

フォトの編集データが失われる

写真アプリが独自の調整データを破棄したことに注目してください。見た目は問題ないように見えますが、写真アプリの編集情報は失われており、ユーザーにはこのことが通知されません。ユーザーは写真アプリの拡張機能に戻って切り抜きや周辺光量調整(または拡張機能内のその他の調整)を行うことはできますが、写真アプリのスライダーを微調整する手順を1つ前に戻すことはできません。さらに、写真アプリの拡張機能を呼び出す前の手順を取り消すこともできません。Appleの調整データが残っていないため、元に戻すためのオプションは「オリジナルに戻す」のみとなります。

また、ライブラリには JPEG が 2 つ保存されていることにも注意してください。1 つは写真から、もう 1 つは写真拡張機能から保存されています。これは、非破壊編集の外観を維持するために必要です。最初の JPEG は、自動補正ステップの結果として写真によって作成され、写真拡張機能に渡されたものです。ユーザーが同じエディターで画像を再編集するには、エディターは「開始画像」と編集指示を受け取る必要があることに注意してください。この場合、「開始画像」は自動補正を適用した後に作成された JPEG です。JPEG は 2 つありますが、ユーザーインターフェイスに表示されるのは最終的な JPEG だけです。自動補正された JPEG は非表示で、写真拡張機能で再編集できるようにするためにのみライブラリに保存されます。

「でも、写真アプリで編集してから、写真アプリの拡張機能を使って、写真アプリに戻って編集を続ければいいじゃないか」と思うかもしれません。確かにその通りですが、写真アプリの拡張機能から送り返されたJPEG画像を調整しているのであって、写真アプリでRAWファイルに施したオリジナルの調整ではありません。編集した画像を白黒にするとどうなるか想像してみてください。保存されるのは以下のようなものです。

フォト拡張機能で編集データが失われる

つまり、RAW パワー調整の上に写真調整を重ねていることになります (その過程で RAW パワー調整データが失われます)。

また、調整データが失われるのは、まず写真アプリの拡張機能で編集してから写真アプリで編集した場合、または写真アプリで編集せず、すべての編集を2つの写真アプリの拡張機能で行った場合です。順序は関係ありません。同じ画像に2つ以上の拡張機能を使用した場合のみです。

RAWファイルに関する注意点:まず写真アプリでRAW画像を編集し、その後RAW PowerやDxO OpticsProなどのRAW対応写真拡張機能に送信すると、写真拡張機能で12ビットまたは14ビットのRAWではなく8ビットJPEG画像で作業するだけでなく、RAW PowerやDxOが提供するRAW処理機能も利用できなくなります。写真アプリで行った編集、例えば単純な回転や反転でさえ、このような深刻な画質劣化が発生します。

この問題は、RAW対応の写真拡張機能を2つ使用する場合にも厄介な問題となります。このような状況では、どちらの写真拡張機能を最初に使用すべきでしょうか?RAW Powerは、写真と同じエンジンをベースにした強力なRAW編集コントロールを備えています。DxOは高品質なレンズ補正機能を備えています。RAW PowerでRAW専用の編集スライダーにアクセスし、その後DxO OpticsProを使用するのが最適だと思います。DxOのレンズ補正機能はRAWとJPEGの両方で機能するからです。

画質が低下したり、調整データが失われたりするたびに、Photosがユーザーに警告してくれると良いのですが、Photos拡張機能はPhotosと通信する方法上、この問題をユーザーに警告できません。RAW形式のオリジナル画像が存在することすら認識できないからです。これはPhotosだけが提供できる警告です。もしこの問題が発生した場合(そしてすぐに気づいた場合)、以下の対応を行ってください。

  1. フォト拡張機能で編集をキャンセルする
  2. 写真を元の状態に戻す
  3. 内線番号を再入力してください

何から TIFF をエクスポートしましたか?

編集したRAWファイルを後世に残す場合、写真家は16ビットTIFFを好みます。これは、編集したRAWファイルの豊かな情報を普遍的な画像形式で保存できるためです。最良の結果を得るには、エクスポート先のファイル形式と同等かそれ以上の画質の画像形式からエクスポートを開始する必要があります。RAWはTIFFよりも、TIFFはJPEGよりも画質が優れています。したがって、写真アプリでRAWファイルを編集し、その後TIFFファイルとしてエクスポートすると、写真アプリがRAWファイルを再読み込みし、編集内容を適用してからTIFFファイルを生成するため、優れた結果が得られます。

これは写真拡張機能には当てはまりません。先ほども述べたように、拡張機能はTIFFではなくJPEGを写真アプリに送り返す必要があります。拡張機能で編集した画像を写真アプリからエクスポートする場合、写真アプリはそのJPEGをソースとして使用します。繰り返しますが、16ビットTIFFは8ビットレンダリングされたJPEGから作成されるものであり、写真アプリ自身のツールで編集した画像のように元の画像に調整を適用して作成されるものではありません。写真アプリは出力先よりも低品質のソースを使用します。つまり、エクスポートされた画像は基本的にJPEGをTIFFに解凍したものになります。

これには、納得のいくものではないものの、正当な理由があります。フォトアプリは拡張機能にレンダリング済みのフルサイズのTIFFファイルを要求できません。拡張機能がアンインストールされているか、画像が拡張機能がインストールされていないデバイスに同期されている可能性があるためです。これもフォトアプリがユーザーに警告すべきケースです。16ビットTIFFファイルが8ビットJPEGファイルから作成されていることをユーザーが理解していると想定するのは無理があります。

賢明な方へのアドバイス:拡張機能を使って画像を編集した場合、PhotosからTIFF形式でエクスポートしても意味がありません。RAW Power拡張機能にTIFF形式でエクスポートするためのボタンを追加する必要がありました。これは少々面倒ですが、必要なことです。

拡張機能がTIFFを写真アプリに返す機能、そして写真アプリがTIFFを拡張機能に送信できる機能があれば、複数のエディタのサポートとTIFFエクスポートは大幅に改善されます。これは、拡張機能と最高画質を求めるユーザーにとって、オプトイン機能として提供できる可能性があります。

「編集」で編集しないでください

フォトにはサードパーティのエディタを使用する別の方法がありますが、残念ながら、イメージメニューの目立つ場所に配置されており、ほとんどの場合、結果が劣ってしまいます。

「編集」メニュー。

この機能は、PhotoshopやPreviewなど、ファイルを直接変更するアプリケーションで、Photoshopの拡張機能を持たないユーザーが編集できるようにするためのものです。しかし、画像編集が可能なアプリケーションはすべて表示され、この文脈ではあまり意味をなさないものも含まれています。紛らわしいことに、リストにはPhotos拡張機能を提供するアプリも含まれる可能性があります。これらのアプリがPhotos以外でも画像を編集できる場合(RAW Powerのように)、リストには含まれてしまう可能性があります。このコマンドが目立つため、ユーザーはRAW Power拡張機能ではなく「RAW Powerで編集」を選択しがちです。拡張機能は、後でわかるように、Photosとの連携がはるかに優れています。(簡単な修正方法として、Photosは「編集」リストからPhotos拡張機能を持つアプリを除外することができます。)

Apple は「編集」機能を破壊的なエディタでの使用を想定しているため、写真アプリケーションはオリジナルファイルを保護します。オリジナルファイルを送信する代わりに、写真アプリケーションはライブラリ内にコピーを作成し、そのコピーを外部エディタに送信します。エディタはコピーを編集しますが、非破壊的な動作は維持されます。ある意味、です。外部エディタが破壊的な編集を行っているため、写真アプリケーションができることといえば、「オリジナルに戻す」機能を維持することだけです。編集情報は写真アプリケーションライブラリに保存されません(編集情報がないため)。また、ユーザーが後から写真アプリケーションや外部エディタで編集内容を修正することもできません。(技術的にはより非破壊的なワークフローを実現することは可能ですが、そのためには編集内容を別途保存し、自分で管理する必要があります。細心の注意が必要で、エラーが発生しやすくなります。)

フォトアプリはまずオリジナルのコピーを作成すると説明しましたが、これは必ずしも正確ではありません。オリジナルがRAWファイルの場合、フォトアプリはTIFFファイルで送信します。なぜでしょうか?破壊的エディタで変更できるファイルを提供する必要があるためです。先ほども述べたように、RAWファイルは編集や書き換えができません。さらに、すべてのエディタがRAWファイルに対応しているわけではありません。

したがって、「Edit With」はRAW編集には特に適していません。お客様から、「なぜRAW PowerでRAWを編集できないのか」という質問をよく受けます。多くの場合、RAW Power拡張機能ではなく「Edit With」を使用していることが原因です。外部アプリがフォトライブラリ内を検索してRAWファイルを見つける可能性はありますが、これは確実ではなく、推奨されません(サンドボックス化されたアプリではそもそもこれができません)。

結論:非破壊編集はほとんどの場合素晴らしい

非破壊編集は、瞬時の復元、A/B比較、編集プロセスのきめ細かな制御といった貴重な機能をユーザーに提供します。しかし、アプリケーションがユーザーに十分に伝えていない、大きく異なるインターフェースパラダイムを確立しています。この非破壊編集の錯覚により、多くの写真家は、単に隠されているだけなのに、オリジナルが修正されていると思い込んでしまいます。そして、これらの写真家は、不必要に画像を複製することでオリジナルを保護してしまいます。スマートなコピーはディスクコストを最小限に抑えることができますが、このような複製はグリッドに余分な画像が表示されるため、複雑さと視覚的なノイズにつながります。貴重な写真を編集する際の顧客の不安を軽減するためには、何らかの教育が必要です。

写真アプリは、独自の編集ツールに加え、iCloudを介した非破壊編集と同期を可能にする、すっきりとした拡張機能インターフェースを提供しています。複数のエディターのサポート、エクスポート、そして「Edit With(編集対象)」機能に関する問題など、いくつか欠点はありますが、いくつかの修正を加えることで、Appleは写真アプリの非破壊ワークフローを、品質と分かりやすさの両面で大幅に改善できるはずです。そのため、私はAppleにバグ報告と提案を提出しました。macOSとiOS向けの写真アプリの今後のリリースで、何らかの改善が期待できます。


かつてAppleのエンジニアリング担当シニアディレクターを務めたNik Bhatt氏は、ApertureとiPhotoのエンジニアリングチームを数年間率いていました。その後、Core ImageやAppleのRAWカメラライブラリを担当するチームを含む、Appleの写真アプリケーションの画像処理チームを率いました。現在は、MacとiOS向けの高度な写真編集アプリ「RAW Power」の開発に携わっています。

Idfte
Contributing writer at Idfte. Passionate about sharing knowledge and keeping readers informed.