ここではimessage-exporterを使ってiMessageのメッセージ履歴をまるっと書き出す方法を記す。
https://github.com/ReagentX/imessage-exporter
わたしはiMessageのメッセージ保存期間を“無期限”にしていたため、iPhoneやiCloud容量を逼迫していた。そこでimessage-exporterを使ってメッセージ履歴をローカルにまるっと保存。iMessageの保存期間は“1年間”へ変更することで過去のデータを削除、iCloudの空き容量を増やすことに成功した。
環境
- macOS 13.6 Ventura
- iOS 17.0
目次
インストール
公式ドキュメンテーションはこちら(https://github.com/ReagentX/imessage-exporter/blob/develop/imessage-exporter/README.md)。imessage-exporterはRustで出来ているためCargoを使ってインストールする方法、Homebrewを使う方法、プリビルドされたバイナリを使う方法がある。今回わたしはHomebrewでインストールした。
brew install imessage-exporter
ちなみにCargoならこう。
cargo install imessage-exporter
macOSのデータベースから抽出する方法
念のため先にiMessage(メッセージアプリ)を立ち上げ、設定画面から“今すぐ同期”をクリックして、データベースを最新の状態へ。
macOSの場合~/Library/Messages/chat.dbにメッセージデータベースがある模様。imessage-exporterはデフォルトでここを見に行ってくれるので保存形式とアタッチメント(画像や動画といった添付メディア)を保存するか否かを教えるだけで簡単にバックアップを取ってくれた。
imessage-exporter -f html -c efficient -o ~/Desktop/imessage_backup
上のコマンドを走らせるとデスクトップにimessage_backupフォルダがつくられ、その中にHTML形式でメッセージ履歴が保存された。
ステッカーの貼り付け位置は失われていたものの、ステッカー1枚1枚は画像データとして保存されており、ほぼすべてのアタッチメントが保存できていることを確認。中には見つからないものもあったが、リンク切れのものだったり。ほか、リアクションや返信、既読時間まできちんと出力されていて、感動。
iPhoneのバックアップから抽出する方法
iPhoneでしかiMessage使ってないよ、という方はこちら。
まずはFinderをつかってMacにiPhoneのバックアップを取る(図中1)。この時バックアップを暗号化しないよう注意。バックアップが完了したら“バックアップを管理”をクリック(図中2)。
先程取れたバックアップを右クリックして“Finderで表示”をクリック。
Finderでバックアップフォルダが表示されるのでそのパス名をコピーする。フォルダを選択して⌥+⌘+Cか、あるいは右クリックメニューを表示してからオプションキー⌥を押し、[“フォルダ名”のパス名をコピー]を選択。
次のコマンドを使うとiPhoneのバックアップデータからiMessageのメッセージ履歴を抽出してくれる。
imessage-exporter -f html -c efficient -a iOS -p "バックアップフォルダのパス名" -o ~/Desktop/imessage_export
macOSのときと同様、きちんとHTML形式で保存される。
オプション一覧
-f フォーマット
txt、またはhtmlから選べる。
-c コピーオプション
アタッチメント(画像や動画などの添付メディア)のコピー方法を選択。efficientは元データそのまま、compatibleはHEICをすべてJPEGへ変換。省略時のデフォルトはdisabledでコピーしない。
-a プラットフォーム
抽出元がmacOSかiOSを明示するオプション。特にiOSのバックアップから抽出する場合は“iOS”と指定する。
-o 出力先
デフォルトは~/imessage_export。保存先となるフォルダ名を指定する。
-d データベース検証
データベースの検証のみを行って、その結果を表示するモード。メッセージの保存はしない。
-s YYYY-MM-DD 開始日
指定した日付を含め、それ以降のメッセージのみ抽出する。フォーマットはYYYY-MM-DD(2023年9月29日ならば2023-09-29)。
-e YYYY-MM-DD 終了日
指定した日付以前のメッセージのみ抽出する。フォーマットはYYYY-MM-DD(2023年9月29日ならば2023-09-29)。
-l タグ出力オプション
小文字のエル(L)。HTML出力時、imgタグにloading="lazy"を付与しない。ブラウザでの表示時間は遅くなるがPDFへの書き出しに最適。
-m CustomName 名前変更
メッセージ中の自分の名前を任意の文字列に置き換えて出力する。デフォルトはMe。