Skip to content

tsukumijima/Alpha-Import-Utility

Repository files navigation

α Import Utility

α Import Utility のメイン画面。Sony α のイメージカラーであるオレンジをアクセントにした黒基調の UI で、3つのインポートモードを表示している。

Tip

🌐 English version is available: Readme_English.md

Sony α カメラやその SD カードから、未取り込みの写真・動画を PC に安全に取り込むデスクトップアプリです。α6700 にて検証しています。

Important

このアプリは、カメラで撮った写真を1枚も余すことなく、丸ごとバックアップするためのソフトウェアです。
整理や編集は写真管理ソフトで行えばよいのです。このアプリは「カメラで撮ったデータを、ブレているものも含めて、とりあえず PC に確実に保存する」ことに特化しています。
意図せず取り込まれずに失われた写真が一切出ないようにする、それが最も重要な設計目標です。

Warning

このアプリは Sony 公式のものではなく、個人が開発した非公式のソフトウェアです。
非常に慎重に設計してはいますが、利用は自己の責任のもとでお願いします。

Warning

動作確認は Sony α6700 のみで行っています。
同世代の Sony α カメラ(XAVC S 形式の動画を記録する機種)であれば動作する可能性が高いですが、AVCHD 形式のみに対応した旧機種など、古いカメラでは正常に動作しない可能性があります。
もし他の機種で動作確認された方がいれば、Issue で報告いただけると助かります。

Background

私は長年 Canon EOS Kiss X7 を愛用してきました。
Canon には EOS Utility 2 という純正のデスクトップアプリがあり、ずいぶん前に更新が停止しているものの、私にとっては最適なソフトウェアでした。

EOS Utility 2 は写真や動画の取り込みだけでなくリモート撮影などの機能も備えていますが、私はもっぱら写真/動画の取り込み用途でのみ使っていました。
EOS カメラを USB ケーブルで接続するだけで、「まだ取り込んでいない写真・動画だけ」を自動で検出し、指定した設定通りのフォーマットのフォルダ名で、撮影日ごとにフォルダ分けして PC に取り込んでくれます。
さらに、ファイルの作成日時を撮影日時に復元した状態で保存してくれます。一度取り込んだファイルが重複して取り込まれることはありません。

2025年8月に8年使った EOS Kiss X7 から Sony α6700 に乗り換えたのですが、すぐに『Sony 製カメラには、EOS Utility 2 のような写真/動画取り込みに特化した PC 向けアプリが存在しない』ことに気づきました。

Sony はスマホアプリ (Creators' App) での写真転送に注力しているようで、かつて存在した PlayMemories Home は 2020 年以降メンテナンスが停止しています。
macOS 版はすでに配布終了してしまっていますし、Windows 版も最新機種では動画の取り込みに対応していないという状況です。
また、細かいところではフォルダ名が YYYY-mm-dd しか選べず、YYYY_mm_dd のようなスネークケースにすることができなかったような記憶があります。

私は『カメラの SD カードはあくまで一時的な保存場所』『撮影したデータは全て PC の HDD に取り込み、さらに NAS にバックアップし、写真は Amazon Photos にもバックアップする』運用で、撮りためた写真・動画を管理しています。
昨今はスマホだけで完結する利用が多いようですが、私のユースケースでは、必ず PC に撮影した写真/動画を取り込む必要がありました。

Motivation

このアプリは、Sony α カメラにおいて、EOS Utility 2 での写真/動画取り込みと同等以上の体験を実現するために開発したものです。
以下のような、私自身のユースケースを完璧に満たすことを最優先に設計しています。

やりたかったこと

  • 未取り込みの写真・動画だけを確実に取り込みます。
    一度写真・動画が取り込まれていれば、重複してファイルコピーが発生することはありません。逆に取り込んだはずが取り込まれていない場合には、フェイルセーフとして自動的に再取り込みが行われます。
  • 撮影日ごとにフォルダ分けするのがデフォルトです。
    2025_12_01 のようなスネークケースと 2025-12-01 のようなハイフンケースを選べます。
  • ファイルの作成日時だけでなく、更新日時も撮影日時に復元できます。
    バックアップからの取り込みなどですでにファイルの作成日時・更新日時が狂っている場合でも、EXIF に含まれる撮影日時データから、正しい日時がファイルの作成・更新日時としてセットされます。
  • Windows でも macOS でも動作します。
    『メインの取り込み先は Windows PC だが、旅行先に持っていく MacBook からも取り込みたい』というユースケースにも対応します。

複数 PC からの取り込み

私は自宅の Windows PC に写真を保存していますが、旅行先に持っていくのはいつも MacBook で、MacBook からも取り込みたいことがたまにあります。
そして旅行先で万が一カメラを落としたり SD カードが壊れてしまうリスクもゼロではないですから、写真・動画はなるべくこまめに取り込んでおきたいところです。

事前に自宅の Windows PC と MacBook に Tailscale をセットアップしておけば、Windows PC 側のネットワークドライブや、Synology NAS のフォルダを MacBook にマウントできます。
こうしておけば、旅行先からその日撮った写真を、自宅 PC の HDD に(ポート開放せず安全に)直接保存することが可能になります。

このとき、もし Windows PC と MacBook で取り込み済み情報が共有されていないと、帰宅後に Windows PC から取り込んだときに二重取り込みが発生してしまいます。
これだと帯域の無駄な上、最悪の場合上書きなどファイルの破損を引き起こす可能性があり、なるべく避けたいところでした。

この α Import Utility では、取り込み済み情報を SD カード側に保存します。そのため、どの PC から取り込んでも取り込み済みかどうかを正しく判定できます。
PC を買い替えた場合や、別の PC で取り込んだ場合でも、SD カードさえあれば取り込み済み情報は引き継がれます。
保存先フォルダにすでに取り込み済みの写真・動画は自動的にスキップされますし、逆に取り込んだはずなのに存在しない写真・動画は再取り込みされます。

SD カードのバックアップからの取り込み

旅行先で容量が足りなくなったなどで、SD カードの中身を丸ごと外付け SSD や USB メモリにバックアップしておくこともありえます。
このバックアップから取り込む場合でも、すでに PC に取り込み済みのファイルと重複している部分は適切にスキップされます。
これも、二重取り込みを防止するために重要な機能です。

Design Philosophy

α Import Utility では、「なるべく安全側に倒す」ことを最優先に設計しています。
10 年以上個人的に撮り溜めてきた大切な写真(数万枚・数 TB 規模)を扱うソフトウェアとして、以下の原則を徹底しています。

絶対に守るルール

  • 取り込み元のファイルは絶対に削除しない。
    SD カードのファイルに手を加えることはありません。
  • 取り込み先のファイルは絶対に上書きしない。
    同名ファイルが存在する場合は DSC00001 (1).ARW のように別名で保存します。
  • ユーザーに不可逆な判断を求めない。
    「上書きしますか?」のようなダイアログは出しません。両方のデータを保存します。
  • 放っておけば全てがいい感じに取り込まれる。
    複雑な設定は不要。デバイスを接続してワンクリックするだけ。

異常ケースへの対応

  • PC 側でファイルを誤削除した場合
    SD カードに「取り込み済み」と記録されていても、PC 側にファイルが存在しなければ再取り込みします。
  • SD カードのメタデータが消失した場合
    時間はかかりますが、ハッシュを比較してメタデータを再構築します。すでに取り込み済みのファイルは重複取り込みされません。
  • コピー中に電源が落ちた場合
    不完全なファイルは自動削除され、壊れたデータが保存先に残ることを防ぎます。
  • PC 側のファイルが破損した場合
    軽量シグネチャで破損を検出し、別名で再取り込みした上でユーザーに警告を表示します。

Features

🛡️ データ安全性を最優先

  • 取り込み元の SD カードのファイル、また一度取り込まれた取り込み先フォルダのファイルには一切手を加えず、ファイルを絶対に上書き・削除しません。
  • 同名ファイルが存在する場合、 DSC00001 (1).ARW のように自動で別名で保存し、取り込み結果表示時に警告を表示します。
  • 万が一コピーが途中で失敗した場合は不完全なファイルを自動削除し、壊れたファイルが保存先に残ることを防ぎます。

📷 確実な取り込み管理

  • SD カード側に取り込み済み情報を記録するため、複数の PC から取り込んでも二重取り込みを防止できます。
  • 保存先からファイルが消えてしまった場合は自動で再取り込みするため、誤削除やストレージ障害からの復旧も容易です。
  • 保存先ファイルの破損を軽量シグネチャで検出し、必要に応じて自動的に再取り込みします。
  • Windows でも MacBook でも動作します。また、Windows と macOS の両方でネットワークドライブ経由の同一フォルダに取り込む利用も想定しています。

⚡ ワンクリックで取り込み開始

  • カメラや SD カードを接続すると自動認識し、ワンクリックで即座に取り込みを開始できます。
  • 取り込み中のファイル名と全体の進捗をリアルタイム表示できます。

🎨 Sony α に最適化

  • Sony α の SD カード構造を自動検証し、静止画・動画・XML メタデータを漏れなくスキャンします。
  • EXIF から撮影日時を読み取り、コピー後のファイルの作成日時・更新日時を必要に応じて正確に復元します。

Supported Environments

OS アーキテクチャ
Windows 10 / 11 x64
macOS 12+ Apple Silicon (arm64) / Intel (x64)

Supported File Formats

静止画

形式 拡張子 格納場所
JPEG .JPG, .JPEG DCIM/(100~999までの数字)MSDCF/
HEIF .HIF, .HEIF DCIM/(100~999までの数字)MSDCF/
Sony RAW .ARW DCIM/(100~999までの数字)MSDCF/

動画

形式 拡張子 格納場所
本編動画 .MP4 PRIVATE/M4ROOT/CLIP/
動画メタデータ .XML PRIVATE/M4ROOT/CLIP/
プロキシー動画 .MP4 PRIVATE/M4ROOT/SUB/

Note

動画メタデータ(XML)とプロキシー動画の取り込みは、設定でオン/オフを切り替えられます。

Installation

GitHub Release からダウンロード(推奨)

  1. Releases ページ にアクセスします。
  2. 最新リリースから、お使いの OS に対応した zip ファイルをダウンロードします。
    • Windows: Alpha-Import-Utility-vX.X.X-windows.zip
    • macOS: Alpha-Import-Utility-vX.X.X-macos.zip
  3. ダウンロードした zip ファイルを展開します。

Windows での起動

Windows でのフォルダ構成。α Import Utility.exe が表示されている。

  1. 展開したフォルダを任意のフォルダに移動します。C:\Applications\α Import Utility など、Program Files 以外のフォルダへの展開を推奨します。
  2. α Import Utility.exe をダブルクリックして起動します。

macOS での起動

macOS でのフォルダ構成。

  1. 展開して表示された α Import Utility.appApplications フォルダにドラッグ&ドロップします。
  2. 初回起動時は以下の手順で、Gatekeeper のセキュリティ警告を回避する必要があります。

Warning

macOS 14 Sequoia 以降では、未署名アプリに対するセキュリティが強化されています。
初回起動時に「開発元が検証できないため開けません」「悪質なソフトウェアであるかどうかを Apple では確認できないため、このソフトウェアは開けません」と表示される場合があります。

α Import Utility は安全なソフトウェアですので、信頼していただけるようでしたら、以下の手順で起動を進めてください。

  1. 一度「キャンセル」or「OK」or「完了」をクリックしてポップアップを閉じます。
  2. 「システム環境設定」→「セキュリティとプライバシー」→「このまま開く」をクリックします。
    • 「ダウンロードしたアプリケーションの実行許可」は「AppStoreと確認済みの開発元からのアプリケーションを許可」または「すべてのアプリを許可」に設定されている必要があります。

macOS 15 Sequoia での詳しい手順は こちら (外部リンク) の記事をご覧ください。

Usage

1. 初期設定

初回起動時は保存先フォルダを設定する必要があります。
右上の歯車アイコンをクリックして設定画面を開きます。

基本設定


設定項目 説明
言語 アプリの表示言語(日本語 / English)
保存先フォルダ 取り込んだ写真・動画を保存するフォルダ
サブフォルダ設定 撮影日ごとのフォルダ階層構造(日付のみ / 年/日付 / 年/月/日付)
日付フォーマット フォルダ名の日付表記形式(4桁年 / 2桁年、区切り文字)
取り込み前プレビュー スキャン完了後に取り込み対象一覧を表示するかどうか

取り込みオプション


設定項目 説明 デフォルト
EXIF から日時を復元 コピー後のファイルの作成日時・更新日時を撮影日時に合わせる オン
カメラタイムゾーン EXIF にタイムゾーン情報がない場合のフォールバックとして用いるタイムゾーン 東京
動画メタデータ (XML) を取り込む NonRealTimeMeta 形式の XML ファイルも取り込む オン
プロキシー動画を取り込む 低解像度のプロキシー動画も取り込む オン

2. デバイスの接続

SD カードが検出され、メイン画面にデバイスカードとして表示されている様子。デバイス名、容量情報が表示されている。

カメラを USB ケーブルで接続するか、SD カードをカードリーダーに挿入すると、自動的に検出されてメイン画面に表示されます。

3. 取り込みの開始


検出されたデバイスのカードをクリックすると、取り込み対象のスキャンが開始されます。

Note

なるべく高速にスキャンできるよう実装していますが、確実に取り込むためにフルスキャンしている関係で、スキャンにはどうしても時間がかかります。
特に、初回取り込み時はメタデータファイルをゼロから構築するため、スキャンに数十分〜数時間程度かかることがあります。



「取り込み前プレビュー」がオンのときは、取り込み前に取り込み対象の一覧を表示します。



スキャンが完了すると、DCIM (写真) → PRIVATE/M4ROOT/CLIP (動画) → PRIVATE/M4ROOT/SUB (プロキシー動画) の順に取り込みが実行されます。

Tip

取り込み中はいつでも「キャンセル」ボタンで中断できます。
中断時は現在コピー中のファイルが完了してから停止するため、不完全なファイルが残ることはありません。

Note

本当は EOS Utility のように取り込み中写真のプレビューも実装したかったのですが、プレビューを実装するとファイル I/O の関係上取り込み速度が遅くなることが判明したため諦めました・・・。

4. 取り込み完了


取り込みが完了すると、結果のサマリーが表示されます。
「保存先を開く」ボタンをクリックすると、保存先フォルダを直接開けます。

Import Methods

カメラから取り込み

USB ケーブルでカメラを PC に接続し、USB マスストレージ (MSC) モードで認識させます。
カメラが検出されると「カメラから取り込み」セクションに表示されます。

Warning

MTP (Media Transfer Protocol) モードでの接続には対応していません。
必ず USB マスストレージ (MSC) モードで接続してください。

SD カードから取り込み

SD カードをカードリーダー経由で PC に接続します。
SD カードが検出されると「SD カードから取り込み」セクションに表示されます。

フォルダから取り込み

「フォルダを選択...」をクリックして、SD カードの構造を維持したままのバックアップフォルダを直接指定できます。
もちろん、内蔵ストレージだけでなく、USB SSD や USB メモリ上のフォルダにも対応しています。
過去の SD カードのバックアップからの再取り込みに便利です。

Warning

Sony α の SD カード構造として認識できないフォルダは取り込みできません。
必ず DCIM/PRIVATE/M4ROOT/CLIP/ が存在する SD カードのルートフォルダを指定してください。

Technical Security

取り込み済み管理

取り込み済みファイルの情報は SD カード内の PRIVATE/AIU/METADATA.JSON に記録されます。
この情報は SD カード側に保存されるため、異なる PC から取り込んでも二重取り込みを防止できます。

SD_CARD_ROOT/
├── DCIM/
│   ├── 100MSDCF/       # 静止画(JPEG, ARW, HEIF)
│   ├── 101MSDCF/       # フォルダ内のファイル数が9999枚を超えたら次のフォルダに移動
│   └── 102MSDCF/       # 同上
└── PRIVATE/
    ├── M4ROOT/
    │   ├── CLIP/       # 本編動画(MP4, XML)
    │   └── SUB/        # プロキシー動画
    └── AIU/            # このアプリのメタデータ
        └── METADATA.JSON

取り込み判定の優先順位

  1. メタデータに記録あり + 保存先にファイルあり → スキップ
  2. メタデータに記録あり + 保存先にファイルなし → 再取り込み(誤削除対応)
  3. メタデータに記録なし + 保存先に同名ファイルあり
    • ハッシュ一致 → スキップ
    • ハッシュ不一致 → 別名で保存
  4. メタデータに記録なし + 保存先にファイルなし → 新規取り込み

ファイル整合性の検証

  • 高速かつ信頼性の高い xxHash64 アルゴリズムでハッシュを計算します。
  • ファイルサイズ + 先頭/中間/末尾のハッシュによる軽量シグネチャで同一性を検証します。
  • 更新日時が現在から 30 秒以内のファイルは書き込み中とみなしてスキップします。

ファイルの作成日時・更新日時の復元

取り込んだファイルの作成日時・更新日時を、EXIF に記録された撮影日時に合わせて設定します。
取り込み元ファイルの作成日時・更新日時と EXIF 側の撮影日時が近い場合には元ファイルの作成日時・更新日時をそのまま保持し、大きく異なる場合には EXIF の撮影日時を採用します。
タイムゾーンについては、EXIF にタイムゾーン情報が記録されていればその情報を採用し、記録されていない場合は設定で指定したカメラタイムゾーンを利用します。

Tip

α6700 v2.0 では EXIF v2.3.2 仕様に基づき、カメラで設定したタイムゾーン情報が適切に EXIF に記録されていることを確認しています。
おそらく同世代のカメラでも同様ではないでしょうか。
古いカメラの場合は EXIF 仕様上、タイムゾーンが記録されていない可能性がありますのでご注意ください。

fail-fast なエラーハンドリング

以下の致命的エラーが発生した場合は即座に取り込みを中断し、ダイアログに中断理由を表示します。

  • メタデータの保存に失敗した場合
  • SD カードへの書き込みができない場合
  • 保存先の容量が不足している場合
  • ファイル I/O エラーが発生した場合

Build Instructions

開発者向けのビルド手順です。

開発環境

  • Flutter 3.x (stable channel)
  • Dart 3.10+
  • Windows: Visual Studio 2022
  • macOS: Xcode 16+

ビルドコマンド

# 依存関係のインストール
flutter pub get

# コード生成(.g.dart ファイル)
dart run build_runner build --delete-conflicting-outputs

# ビルド
flutter build windows --release  # Windows
flutter build macos --release    # macOS

リンター・フォーマッター・テスト実行

# リンター実行
flutter analyze

# フォーマッター実行
dart format .

# ユニットテスト実行
flutter test

# 統合テスト実行(実機環境のみ)
flutter test integration_test

License

MIT License

About

α Import Utility: For importing photos/videos taken with Sony α series cameras (tested with α6700)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published