shigiphoto days

FUJIFILM GFXシリーズで撮った写真をつらつらとご紹介。

ExifToolでLeica M Typ240のExifデータを変更する

はじめに

先日購入したLeica M Typ240、6bitコードの無いレンズを使用するとExifにレンズ情報が記録されません。もちろんそんな事は分かった上で購入したのですが、Lightroomメタデータ欄が「not selected」表示になるのはちょっと寂しいですし、レンズ情報で検索が出来ないのは超不便です。

6bitコードのマーカーを(物理的に)書き込む機材もあるようですが、あくまで同じ焦点距離のライカ純正レンズを偽装するだけ。ツァイスを使っているのにライカ純正レンズって記録されるのは違うよね。。。

幸い私はエンジニア。少し調べると、ExifToolというコマンドラインツールを使えば解決出来そうということが分かりました。プライベートで仕事と想起させるプログラミングをするのは抵抗ありますが、楽しいM typ240生活のために頑張ってみましょう。


狙うワークフローはこんな感じ(Mac):

撮影
   ↓
SDカードからFinderにコピー
   ↓
RAWファイルを1つのフォルダに集める
   ↓
Finderでフォルダを右クリック → クイックアクション実行
   ↓
Lightroomにインポート


目次


ExifToolの導入方法

ExifToolって?

画像のメタデータExif情報)を自由に編集できるツールです。ありがたいことに無料。RAWファイル(DNG)も含めてほぼ全ての画像形式に対応しています。私はカメラ生成のJpegは使わずRAW現像派なので、RAW対応しているツールが必須だったのです。

Macへのインストール(Homebrew使用)

Homebrewが入っている場合は一瞬:

brew install exiftool

インストールできたか確認:

exiftool -ver

バージョン番号が表示されればOK。

Macへのインストール(公式サイトから)

Homebrewを使っていない場合は、公式サイトからダウンロードできます:
https://exiftool.org/

exiftoolコマンドがエラーになる場合

exiftool -verが「command not found」エラーになる場合があります。これは exiftool コマンドがパソコンのPATH(コマンドを探す場所のリスト)に含まれていないことが原因です。この場合は「exiftool」コマンドではなく

Apple Silicon Mac

/opt/homebrew/bin/exiftool -ver

Intel Mac

/usr/local/bin/exiftool -ver

とする必要があります。


ExifToolでレンズ情報を変更する方法

基本的な変更コマンド(Lrインポート前のRAWファイル用)

Lightroomにインポートする前のRAWファイルなら、以下のコマンドでOK。レンズメーカー、レンズ名、焦点距離を変更するものです。

単一ファイルの編集

exiftool -m -overwrite_original \
  -exif:lensmake="Carl Zeiss" \
  -exif:lensmodel="Biogon T*2,8/28 ZM" \
  -exif:focallength=28 \
  ~/Pictures/Leica/L1000071.DNG

フォルダ内の全DNGファイルを一括編集

exiftool -m -overwrite_original \
  -exif:lensmake="Carl Zeiss" \
  -exif:lensmodel="Biogon T*2,8/28 ZM" \
  -exif:focallength=28 \
  ~/Pictures/Leica/*.DNG

各オプションの説明

  • -m: minor errorsを無視(Leica M Typ240では必須)
  • -overwrite_original: 元ファイルを上書き(バックアップを作らない)
  • -exif:lensmake: レンズメーカー名
  • -exif:lensmodel: レンズモデル名
  • -exif:focallength: 焦点距離(単位なしの数値)

ターミナルのカレントフォルダを変更する

コマンドを実行する前に、ターミナルの作業フォルダ(カレントフォルダ)をRAWファイルが入っているフォルダに移動しておくと便利です。

Exiftoolには対象RAWファイルのフルパスか、RAWを格納しているフォルダのフルパスを指定する必要があるのですが、「カレントフォルダ」を移動しておけば、コマンド内でフルパスを省略できます。

手順:

  1. ターミナルを開く

  2. cd と入力して、半角スペースを1つ入れる(Enterは押さない)

   cd 
  1. FinderでRAWファイルが入っているフォルダを開く

  2. そのフォルダをターミナルにドラッグ&ドロップ

    • フォルダのパスが自動で入力されます
  3. Enterキーを押す

実行例:

cd /Users/username/Desktop/Leica写真

これでターミナルの作業フォルダが変更されました。以降のコマンドでフォルダのパスを省略できます。

作業フォルダを移動した後のコマンド例

単一ファイルを確認:

exiftool -LensModel -LensMake -FocalLength L1000071.DNG

結果:

Lens Make                       : Carl Zeiss
Lens Model                      : Biogon T*2,8/28 ZM
Focal Length                    : 28.0 mm

フォルダ内の全DNGファイルを確認:

exiftool -LensModel -LensMake -FocalLength *.DNG

結果(複数ファイル):

======== L1000071.DNG
Lens Make                       : Carl Zeiss
Lens Model                      : Biogon T*2,8/28 ZM
Focal Length                    : 28.0 mm
======== L1000072.DNG
Lens Make                       : Carl Zeiss
Lens Model                      : Biogon T*2,8/28 ZM
Focal Length                    : 28.0 mm
...

Lightroomに一度取り込んだファイルの場合

Lightroomから一度エクスポートしたRAWファイル」の場合は、XMP領域も書き換える必要があります

LightroomはDNG内部のXMP領域に現像情報やメタデータを保存します。この場合、XMPタグも同時に更新しないと反映されません:

exiftool -m -overwrite_original \
  -exif:lensmake="Carl Zeiss" \
  -exif:lensmodel="Biogon T*2,8/28 ZM" \
  -exif:focallength=28 \
  -XMP:LensMake="Carl Zeiss" \
  -XMP:LensModel="Biogon T*2,8/28 ZM" \
  -XMP:Lens="Biogon T*2,8/28 ZM" \
  -XMP:FocalLength=28 \
  L1000071.DNG

特に XMP:Lens タグが重要です。これが無いとLightroomで「not selected」と表示されます。

Leica M Typ240特有の問題:MakerNotesエラー

ExifToolをインストールし、勇んでレンズ名を設定しようとするといきなりエラーが発生しました。なんでやねん!

実行したコマンド:

exiftool -overwrite_original \
  -exif:lensmodel="Biogon T*2,8/28 ZM" \
  -exif:focallength="28.0 mm" \
  L1000071.DNG

結果:

======== L1000071.DNG
    0 image files updated
    1 files weren't updated due to errors

Warning: [minor] Possibly incorrect maker notes offsets (fix by -102?) - L1000071.DNG
Error: [minor] Error reading value for MakerNotes entry 2, ID 0x0302 - L1000071.DNG

0 image files updated ―― 完全に失敗、仕事以外でエラー見たくないなぁ。。。

原因

「MakerNotes」というのはカメラメーカー独自の情報を格納する領域らしく、Leicaの場合、このMakerNotesの構造が特殊でExifToolがデフォルトでは正しく読み取れないそうです。流石に「MakerNotes」のことまでは調べ切れませんでした。

ただ幸いなことにエラーレベルが「minor」なので押し通ることにしました。仕事じゃないので適当でオッケー。

解決方法:-mオプション

ExifToolには -m (ignore minor errors) というオプションがあり、これを追加すればminor errorsを無視して処理を続行できます。

-mオプションを追加したコマンド:

exiftool -m -overwrite_original \
  -exif:lensmodel="Biogon T*2,8/28 ZM" \
  -exif:focallength="28.0 mm" \
  L1000071.DNG

結果:

======== L1000071.DNG
    1 image files updated

Warning: Error reading value for MakerNotes entry 2, ID 0x0302 - L1000071.DNG

1 image files updated ―― 成功!Warningは出ますが、問題なく書き込むことができました。

確認:

exiftool -LensModel -FocalLength L1000071.DNG
Lens Model                      : Biogon T*2,8/28 ZM
Focal Length                    : 28.0 mm

コマンド上で変更を確認できました。こののちLightroomに取り込み、メタデータがしっかりBiogonになっていることも併せて確認しました。やったぜ!


Automatorでクイックアクションを作成

Exiftoolは基本的にターミナルで実行するものです。しかし写真取り込みの度にターミナルからコマンドを実行するのは超面倒。そこでAutomatorの「クイックアクション」として作成し、Finderの右クリックメニューから実行できるようにしました。ついでに複数のレンズを所有した時用に、選択できるようにもしておきます。

ワークフロー:

RAWファイルを1つのフォルダに集める
   ↓
Finderでそのフォルダを右クリック
   ↓
「クイックアクション」→ 作成したアクション名
   ↓
レンズを選択 → 実行

これならLightroomに取り込む前の一手間で済みます。


Automatorでクイックアクションを作成

手順

1. Automatorを開く

Finderの「アプリケーション」フォルダから「Automator.app」を起動。

2. 新規作成で「クイックアクション」を選択

3. 上部の設定を変更 - 「ワークフローが受け取る現在の項目」: フォルダ - 「検索対象」: Finder.app

この設定により、Finderでフォルダを選択した時にクイックアクションとして表示されます。

4. 「シェルスクリプトを実行」アクションを追加

左側のアクションリストから「シェルスクリプトを実行」を検索してダブルクリック。

設定: - シェル: /bin/bash - 入力の引き渡し方法: 引数として

スクリプト内容(インポート前のRAWファイル用):

# exiftoolのフルパスを指定(Apple Silicon Macの場合)
EXIFTOOL="/opt/homebrew/bin/exiftool"

# Intel Macの場合は以下を使用
# EXIFTOOL="/usr/local/bin/exiftool"

FOLDER="$1"

# レンズ選択ダイアログ
LENS=$(osascript <<EOF
set lensChoices to {"Biogon T*2,8/28 ZM", "Planar T*50mm f/2 ZM"}
set chosenLens to choose from list lensChoices with prompt "使用したレンズを選択:" default items {item 1 of lensChoices}
if chosenLens is false then return ""
return item 1 of chosenLens
EOF
)

# キャンセルされた場合は終了
if [ -z "$LENS" ]; then
    exit 0
fi

# レンズ情報を設定
case "$LENS" in
    "Biogon T*2,8/28 ZM")
        MAKE="Carl Zeiss"
        MODEL="Biogon T*2,8/28 ZM"
        FOCAL=28
        ;;
    "Planar T*50mm f/2 ZM")
        MAKE="Carl Zeiss"
        MODEL="Planar T*50mm f/2 ZM"
        FOCAL=50
        ;;
esac

# ExifToolを実行
$EXIFTOOL -m -overwrite_original \
  -exif:lensmake="$MAKE" \
  -exif:lensmodel="$MODEL" \
  -exif:focallength=$FOCAL \
  "$FOLDER"/*.DNG

# 完了ダイアログ
osascript <<EOF
display dialog "$MAKE $MODEL で更新完了" buttons {"OK"} default button 1
EOF

5. 保存 - ファイル → 保存 - 名前:「Exif レンズ情報更新」

これで完成です。

レンズの追加方法

レンズが増えた場合はcase 文に追加できます。Nokton40mmを追加する場合:

# レンズ選択ダイアログ
LENS=$(osascript <<EOF
set lensChoices to {"Biogon T*2,8/28 ZM", "Planar T*50mm f/2 ZM", "Nokton 40mm f/1.4"}
(中略)
EOF
)

# レンズ情報を設定
case "$LENS" in
    "Biogon T*2,8/28 ZM")
        MAKE="Carl Zeiss"
        MODEL="Biogon T*2,8/28 ZM"
        FOCAL=28
        ;;
    "Planar T*50mm f/2 ZM")
        MAKE="Carl Zeiss"
        MODEL="Planar T*50mm f/2 ZM"
        FOCAL=50
        ;;
    "Nokton 40mm f/1.4")
        MAKE="Voigtländer"
        MODEL="Nokton 40mm f/1.4"
        FOCAL=40
        ;;
esac

実際の使い方

通常の撮影後

SDカードからFinderにコピー
   ↓
RAWファイルを1つのフォルダに集める
   ↓
Finderでフォルダを右クリック
   ↓
「クイックアクション」→「Leica レンズ情報更新」
   ↓
レンズを選択 → OK
   ↓
Lightroomにインポート


おわりに

ExifToolの導入からAutomatorでの自動化まで一通りご紹介しました。

ファーストインプレッションや撮った写真の紹介前にExifを変更する技術記事になったのは自分でも意外だったところ。

でもめちゃめちゃ気になったんですよね。せっかくデジカメ使っているのにメタデータが不十分というのは…幸いクイックアクションの完成に掛かったのは小一時間ほど。なんならこの記事作成の方が大変でした。

最近古き良きWebの情報が減ってきているように感じたので、せめて自分のやった事はしっかり残せたら、と思って頑張った次第です。おわり。