写真をよく扱う開発者にとって、RAW フォーマットの変換は避けられない作業だ。Adobe の DNG Converter は業界標準だが、クローズドソースで容量が大きく、Linux 上での使い勝手はあまり良くない。

今日はオープンソースの代替品「dnglab」を紹介する。

プロジェクト概要

dnglab は Rust で書かれたコマンドラインツールで、様々なカメラの RAW フォーマットを DNG 標準フォーマットに変換する。588 stars と人気はまだないが、コード品質は高く、更新も比較的活発だ。

# インストール
cargo install dnglab

# 基本的な使い方
dnglab convert IMG_0001.CR3 output.dng

主な機能

広範なカメラ対応

Canon、Nikon、Sony、Fujifilm、Olympus など主要メーカーの 100 機種以上に対応しており、最新のミラーレス機も含まれる。完全な対応リストはプロジェクトドキュメントで確認できる。

Rust のパフォーマンス優位性

Python や C++ ベースの類似ツールと比べて、変換速度に明確な優位性がある。50MB 以上の RAW ファイルを扱う上で重要なポイントだ。

メタデータの埋め込み

変換時に EXIF、XMP などのメタデータを完全に保持し、現像ソフトがカメラ設定や GPS 情報を正しく読み取れるようにする。

ロスレス変換

DNG 標準フォーマットで出力し、元データを圧縮しないため画質は無損失だ。

実用的な使用シーン

  1. バッチ処理ワークフローfindfd と組み合わせてディレクトリ全体の RAW ファイルを一括変換
  2. 自動アーカイブ:スクリプトの一部として、新しくインポートした写真を自動的に DNG に変換して保管
  3. クロスプラットフォーム要件:Linux サーバーや CI 環境で RAW ファイルを処理
# バッチ変換例
find ./photos -name "*.CR3" -exec dnglab convert {} ./dng/ \;

プロジェクトの状況

dnglab は現在も活発に開発されている。Rust のメモリ安全性により、大容量ファイルの処理時にも高い信頼性を持つ。ドキュメントは比較的充実しており、RAW フォーマットの構造を深く知りたい人にとって、コード自体も良い学習材料となる。

軽量でクロスプラットフォームな RAW 変換ソリューションを探しているなら、dnglab は試す価値がある。


プロジェクト:https://github.com/dnglab/dnglab