SSD Nodes Learn Hosting plans →
ガイド Matt Connor著者 Matt Connor

ImmichのRAW写真とRAW+JPEGペア:二重表示の原因とスタックでの直し方

ImmichはARW、CR3、NEF、RAF、ORF、RW2を取り込めますが、RAW+JPEGで撮ると同じカットが2枚並びます。自動スタックはまだありません。v3.3.5で今使える手動スタックとimmich-goの手順、サムネイルの色の違い、容量の考え方を解説します。

結論:ImmichはRAWを読めるが、RAW+JPEGのペアは自動でまとめない

ImmichはRAW写真を取り込めます。ソニーのARW、キヤノンのCR3、ニコンのNEF、富士フイルムのRAF、OM SystemのORF、パナソニックのRW2は、どれも画像として認識されます。ただしRAW+JPEGで撮ると、Immichは2つのファイルを別々の写真として扱います。そのため、タイムラインに同じカットが2枚並びます。

2026年10月29日時点の最新版はImmich v3.3.5(2026年10月21日公開)です。このバージョンには、RAWとJPEGのペアを自動でまとめる機能はありません。今日きちんと動く直し方は2つです。Webの画面で2枚を手で「スタック」する方法と、immich-goというコマンドラインツールでスタックしながらアップロードする方法です。コミュニティ製の自動スタッカーも存在しますが、後で説明する理由で、v3.3.5ではそのままでは使えません。

この記事は、Immichをすでに動かしている人向けです。まだサーバーがない場合は、先にVPSにImmichを立ててGoogleフォトの代わりにする手順を読んでください。

ImmichはどのRAW形式に対応しているか

公式ドキュメントの対応フォーマットのページ(docs.immich.app/features/supported-formats)を見ると、RAWの行は2つしかありません。.raw と .rw2 です。そしてページには「For the full list, refer to the Immich source code.」と書かれています。つまり、完全な一覧はソースコードを見るしかありません。

そこで、v3.3.5のサーバーのソースコード server/src/utils/mime-types.ts を確認しました。RAW用の拡張子の一覧には、次のものが入っています。

  • .arw:ソニー
  • .cr2 と .cr3:キヤノン
  • .nef:ニコン
  • .raf:富士フイルム
  • .orf:オリンパス、OM System
  • .rw2 と .raw:パナソニック
  • .dng:Adobeの共通形式(一部のカメラやスマートフォンが使う)
  • .pef(ペンタックス)と .srw(サムスン)

自分で確かめたい場合は、次のコマンドでソースの該当行を表示できます。

curl -s https://raw.githubusercontent.com/immich-app/immich/v3.3.5/server/src/utils/mime-types.ts \
  | grep -E "'\.(arw|cr3|nef|raf|orf|rw2|dng)'"

'.arw': ['image/arw', 'image/x-sony-arw'], のような行が拡張子ごとに出れば、そのバージョンのImmichはその拡張子を知っています。URLの v3.3.5 を自分のバージョンに変えれば、自分の環境に合わせて調べられます。

ソースでは、これらの拡張子は「ブラウザが直接表示できない画像」のグループに入っています。ブラウザはARWやNEFをそのまま表示できません。そのためImmichは、RAWから表示用のプレビュー画像を作って画面に出します。

注意点が1つあります。拡張子が一覧にあることは、すべての機種のファイルが正しく処理されることを意味しません。たとえばGitHubには「Certain DNG files cannot be processed」という未解決のissue(#13029)があります。新しい機種のRAWを使う場合は、数枚だけ先に取り込んで、プレビューが出るかを確認してください。

なぜRAW+JPEGで撮ると写真が二重に並ぶのか

原因は単純です。DSC01234.ARW と DSC01234.JPG は、Immichから見ると2つの独立した画像ファイルです。JPEGは普通の画像として、ARWはRAW画像として、それぞれ1つのアセット(Immichが管理する写真1枚分の単位)になります。撮影日時はほぼ同じなので、タイムラインでは2つが隣に並びます。

写真を開いて情報パネルを見ると、ファイル名が DSC01234.JPG と DSC01234.ARW のように違うことが分かります。これが二重表示の正体です。データが壊れたわけでも、同じファイルが2回アップロードされたわけでもありません。

Immichには重複を見つける機能(duplicates utility)もありますが、これはRAW+JPEGの解決策にはなりません。公式ドキュメントによると、この機能は機械学習で見た目が似た画像を探すものです。ファイル名でペアを探す機能ではありません。

自動スタックはもう使えるのか

まだ使えません。Immichの公式ロードマップ(immich.app/roadmap)には、2026年10月29日時点で「Automatically stack burst photos.」という項目が「Soon™」のまま載っています。しかもこの項目は連写(バースト)写真の話です。RAW+JPEGのペアについては書かれていません。

v3.3.0(2026年10月7日)のリリースノートには自動スタックの話が1つあります。しかしこれは、スマートフォンアプリで編集した写真を元の写真の上にスタックする機能です。RAWファイルやRAW+JPEGのペアには触れていません。v3.3.5のリリースノートも、主に証明書関連の修正と依存パッケージの更新です。

つまり今は、ペアをまとめる作業を自分でする必要があります。方法は次の3つです。

方法1:Webの画面で手動スタックする

スタックとは、複数の写真を1つにまとめて、タイムラインには代表の1枚だけを出す機能です。手動スタックはv1.83.0(2023年10月)から使えます。v3.3.5のWeb画面のソースにも「スタック」の操作が入っています。

手順は次のとおりです。

  1. タイムラインで、同じカットのJPEGとRAWの2枚を選択します。
  2. 選択中に表示される操作から「スタック」(英語のUIでは Stack)を選びます。メニューに見当たらない場合は、「…」の中も確認してください。
  3. 「2枚スタックしました」と表示されれば成功です。タイムラインには1枚だけが残ります。
  4. 代表にしたい方を変えたいときは、スタックを開いて、その写真で「メインの写真として設定」を選びます。
  5. 元に戻したいときは「スタックを解除」を選びます。

ソースを見ると、「スタック」は自分が所有する写真を2枚以上選んだときにだけ出ます。共有アルバムで他人の写真を選んでも出ないのは、このためです。

この方法の費用はゼロです。追加のツールもAPIキーもいりません。問題は手間です。1ペアずつ操作するので、旅行1回分の数百カットならまだしも、数年分のライブラリには向きません。

方法2:immich-goの--manage-raw-jpegでスタックしながらアップロードする

immich-goは、Immichに写真をまとめてアップロードするための、コミュニティ製のコマンドラインツールです。この記事では、2026年10月29日時点の最新リリースv0.32.0(2026年6月25日公開)を使います。Debianにも immich-go 0.32.0-1 としてパッケージがあります。

immich-goをインストールする

写真が入っているパソコンやNASのLinux上で実行します。バージョンを固定するため、latest ではなくタグ付きのリリースを直接ダウンロードします。

cd /tmp
curl -LO https://github.com/simulot/immich-go/releases/download/v0.32.0/immich-go_Linux_x86_64.tar.gz
tar -xzf immich-go_Linux_x86_64.tar.gz
sudo mv immich-go /usr/local/bin/
immich-go --help

ARM機(Raspberry Piなど)では、ファイル名を immich-go_Linux_arm64.tar.gz に変えてください。最後のコマンドでサブコマンドの一覧が出れば、インストールは完了です。

APIキーを用意する

immich-goは、サーバーのアドレスとAPIキーでImmichに接続します。どのアップロード系サブコマンドも --server と --api-key の両方が必要です。APIキーは、Immichの画面右上のユーザーアイコンから「アカウント設定」を開き、「APIキー」の欄で作ります。

immich-goのドキュメントは「必要な権限だけを与える」ことを勧めています。必要な権限の一覧は、インストールのドキュメント(docs/installation.md)の「API permissions」の節にあります。asset.read、asset.statistics、asset.update、asset.upload、asset.copy、asset.delete、asset.download、album.create、album.read、albumAsset.create、server.about、stack.create、tag.asset、tag.create、user.read の15個です。管理者アカウントに紐づくキーの場合は、これに job.create と job.read を加えます。この作業専用のキーを1本作り、一覧の権限だけを与えてください。作業が終わったら、同じ画面でそのキーを消せることを自分の環境で確認しておきます。

キーをコマンドラインに直接書くと、シェルの履歴に残ります。次のように、入力を画面に出さずに変数へ読み込むと安全です。

read -rs IMMICH_KEY
export IMMICH_KEY

--manage-raw-jpegの5つの値

immich-go upload from-folder には --manage-raw-jpeg というオプションがあります。説明は「Manage coupled RAW and JPEG files」です。値は5つあり、初期値は NoStack です。つまり、このオプションを付けないと何もスタックされません。

  • NoStack:ファイルを別々のままにする(初期値)
  • StackCoverRaw:ペアをスタックし、RAWを表紙にする
  • StackCoverJPG:ペアをスタックし、JPEGを表紙にする
  • KeepRaw:RAWだけを残し、JPEGは残さない
  • KeepJPG:JPEGだけを残し、RAWは残さない

immich-goのベストプラクティスのページは、使い分けを次のように説明しています。RAWを現像するのが主で、JPEGは確認用なら StackCoverRaw。普段はJPEGを使い、RAWは保険として残すなら StackCoverJPG。富士フイルムのフィルムシミュレーションのように、カメラ内で作ったJPEGをそのまま使う人には StackCoverJPG が合います。KeepRaw と KeepJPG は「容量が限られていて、どちらか一方を選ぶ」ための値です。片方の写真を手放すことになるので、迷ったら選ばないでください。

ペアと判定される条件

immich-goの技術文書によると、RAWとJPEGがペアと判定されるのは、次の条件を満たしたときです。

  • ファイル名が同じで、拡張子だけが違う
  • 同じフォルダに入っている
  • 撮影時刻が近い
  • RAWのほうがJPEGよりかなり大きい

2番目の条件は見落としやすいので注意してください。デュアルスロットのカメラで「スロット1にRAW、スロット2にJPEG」と振り分けて記録し、カードごとに別のフォルダへコピーすると、ペアになりません。アップロードの前に、RAWとJPEGを同じフォルダにまとめてください。取り込みソフトでファイル名を変える場合も、RAWとJPEGで同じ名前になる設定にします。

まずdry-runで試す

immich-go v0.32.0はImmich v3.3.xより前に公開されました。immich-goのREADMEは、Immich V2とV3の両方に対応していると書いています。v3.3.5はV3系のリリースです。ただし同じREADMEには、まだ初期のバージョンで、十分にテストされていないという注意書きもあります。そのため、最初は必ず --dry-run(実際には何も送らず、動作だけを試す)を付けて実行します。

immich-go upload from-folder \
  --server=https://photos.example.com \
  --api-key="$IMMICH_KEY" \
  --manage-raw-jpeg=StackCoverJPG \
  --dry-run \
  ~/Pictures/2026-10-kyoto

--server には、ブラウザでImmichを開くときのアドレスを書きます。リバースプロキシを使わずポートで直接開いているなら、http://サーバーのIP:2283 の形です。結果を見て、ペアとして扱われるファイル数が想定と合っていれば、--dry-run を外して本番を実行します。最初は1日分くらいの小さなフォルダで試し、Web画面でスタックができているかを確認してから、残りを流してください。

なお、immich-goは初期設定でアップロード中にImmichのバックグラウンドジョブを一時停止します(--pause-immich-jobs の初期値が true)。アップロードが終わると、サムネイル作成などのジョブがまとめて動き出します。

アップロード済みのライブラリをimmich-go stackでまとめる

すでにImmichへ取り込んでしまった写真は、もう一度アップロードする必要はありません。immich-goには stack というサブコマンドがあり、サーバー上にある写真を、アップロードなしでスタックします。オプションは同じ --manage-raw-jpeg で、初期値も NoStack です。

immich-go stack \
  --server=https://photos.example.com \
  --api-key="$IMMICH_KEY" \
  --manage-raw-jpeg=StackCoverJPG \
  --dry-run

このコマンドで KeepRaw や KeepJPG を使うのは避けてください。stackコマンドのドキュメントは、この2つを「Delete JPEG, keep RAW only」「Delete RAW, keep JPEG only」と説明しています。対象はサーバーにすでにある写真なので、片方が消える操作になります。スタックだけが目的なら StackCoverRaw か StackCoverJPG を使います。

この方法の費用は、ツールを1つ入れる手間と、APIキーを管理する手間です。そのかわり、数千ペアでも1回のコマンドで片付きます。

方法3:コミュニティ製の自動スタッカーは今使えるか

よく紹介されるのが tenekev/immich-auto-stack です。READMEには「By default, it stacks together only JPG + RAW files, taken on digital cameras.」とあります。拡張子を除いたファイル名と撮影日時でペアを探し、Docker Composeに追加すると、cronの式に従って定期的に動きます。目的だけを見ると理想的なツールです。

しかし、2026年10月29日時点で、v3.3.5に対してそのまま使うことは勧めません。理由は次のとおりです。

  • スタックの作り方が古い。 スクリプトは PUT /api/assets に stackParentId というフィールドを送ってスタックを作ります。v3.3.5のサーバーでは、このリクエストの定義(AssetBulkUpdateDto)に stackParentId がありません。v3.3.5でスタックを作るAPIは POST /api/stacks です。そのため、このスクリプトはv3.3.5ではスタックを作れません。
  • バージョンを固定できない。 GitHubのタグもリリースも0件です。公開されているコンテナイメージのタグは latest だけで、公開は「about 2 years ago」と表示されています。固定するには、イメージのダイジェスト(sha256: で始まる識別子)を指定するしかありません。
  • 更新が止まっている。 最後のコミットは2024年9月9日です。
  • 初期のAPIアドレスが今の構成と合わない。 API_URL の初期値は http://immich_server:3001/api です。v3.3.5の公式 docker-compose.yml では、サーバーは 2283 番ポートで待ち受けます。

別の自動スタッカーを探す場合は、次の点を確認してください。POST /api/stacks を使っているか。タグ付きのリリースがあるか。dry-runのモードがあるか。最近のImmichで動いたという記録があるか。どれも確認できない場合は、方法2の immich-go stack を、新しい写真を取り込んだ後に手で実行するほうが確実です。

RAWのサムネイルがカメラのJPEGと違って見えるのはなぜか

スタックの表紙をRAWにすると、サムネイルの色や明るさが、カメラが作ったJPEGと違って見えることがあります。これには管理画面の設定が関係しています。

Immichの管理者設定の画像の項目に「埋め込みプレビューを優先」(英語のUIでは Prefer embedded preview)という設定があります。公式ドキュメントの説明は「Use embedded previews in RAW photos as the input to image processing when available.」です。RAWファイルの中には、カメラが作った小さなプレビュー画像が入っていることが多くあります。この設定をオンにすると、ImmichはそのプレビューをもとにサムネイルとWeb表示用の画像を作ります。

この設定の初期値はオフです(v3.3.5の設定ファイルで extractEmbedded: false)。つまり初期状態のImmichは、カメラの埋め込みプレビューではなく、RAWのデータそのものからサムネイルを作ります。カメラ内で決めた色づくり(フィルムシミュレーションやピクチャースタイルなど)はJPEGに焼き込まれていますが、Immichが同じ処理をRAWに再現する保証はありません。だから初期状態では、RAWのサムネイルとカメラのJPEGの見た目がずれることがあります。

この設定は、2024年4月にマージされたプルリクエスト #8773 で追加されました。作者はiPhone XSで試したとき、埋め込みプレビューが小さく、ギザギザが目立ったため、初期値をオフにしています。設定画面の説明にも、カメラによっては色がより正確になる一方で、圧縮のノイズが出ることがあると書かれています。自分のカメラのRAWで、オンとオフの両方を数枚ずつ比べてから決めてください。

RAW+JPEGで撮っている場合、いちばん簡単な対策は、スタックの表紙をJPEGにすることです(StackCoverJPG)。タイムラインにはカメラが作った見た目がそのまま出て、RAWはスタックの中に残ります。

RAWとJPEGを両方残すとディスクはどれだけ増えるか

スタックは表示をまとめるだけです。ファイルは両方ともサーバーに残ります。スタックを解除すれば2枚に戻ることからも分かるとおり、容量は減りません。RAWとJPEGを両方残す限り、ライブラリはJPEGだけの場合よりかなり大きくなります。RAWはJPEGよりずっと大きいファイルだからです。

どれだけ増えるかは、カメラの画素数や圧縮の設定によって大きく変わります。必要なディスク量の考え方はImmichのRAMとストレージ要件の目安にまとめています。自分の容量を見積もるときは、手元のフォルダで du -sh を実行し、RAWとJPEGの合計を実際に測るのが確実です。

容量を節約したい場合の選択肢は2つです。1つは、新しく取り込む写真だけ KeepRaw か KeepJPG でアップロードし、どちらか一方だけを残すことです。もう1つは、サーバーのディスクを増やすことです。immich-goのドキュメントも、NoStack は「容量に余裕がある」場合、KeepRaw と KeepJPG は「容量が限られている」場合の選択肢として整理しています。

RAWを残すと、バックアップの容量も同じだけ増えます。写真の実体がサーバーのどこに置かれるかは、ImmichのDockerが写真を保存する場所で確認してください。バックアップの対象とディスクの増設先は、その場所を基準に決めます。RAWの扱いそのものを他の写真管理ソフトと比べたい場合は、PhotoPrismとImmichの違いも参考になります。

FAQ

ImmichはソニーのARWやキヤノンのCR3を表示できますか?

できます。Immich v3.3.5のサーバーのソースコードには、.arw(ソニー)、.cr3(キヤノン)、.nef(ニコン)、.raf(富士フイルム)、.orf(OM System)、.rw2(パナソニック)、.dng が画像として登録されています。ブラウザはRAWを直接表示できないので、Immichが表示用のプレビューを作ります。公式の対応フォーマットのページには .raw と .rw2 しか載っていませんが、ページ自身が完全な一覧はソースコードを見るように書いています。

RAW+JPEGで撮った写真がImmichで2枚ずつ表示されるのはなぜですか?

Immichは DSC01234.ARW と DSC01234.JPG を別々の写真として登録するからです。撮影日時がほぼ同じなので、タイムラインで隣に並びます。2枚を1つにまとめるには、Web画面で両方を選んで「スタック」を選ぶか、immich-goの --manage-raw-jpeg=StackCoverJPG などでスタックします。すでにアップロード済みなら immich-go stack が使えます。

Immichに自動スタック機能はありますか?

2026年10月29日時点の最新版v3.3.5にはありません。公式ロードマップには連写写真の自動スタックが「Soon™」として載っていますが、RAW+JPEGのペアについては書かれていません。v3.3.0で入った自動スタックは、スマートフォンアプリで編集した写真を元の写真に重ねる機能だけです。

スタックすればディスク容量は減りますか?

減りません。スタックはタイムラインの表示を1枚にまとめるだけで、RAWとJPEGのファイルは両方ともサーバーに残ります。容量を減らすには、immich-goの KeepRaw か KeepJPG でどちらか一方だけを残す必要があります。ただし、片方の写真を手放すことになるので、必要な容量を見積もってから決めてください。

この記事は役に立ちましたか?

#immich#raw-photos#photo-management#self-hosting#immich-go