Message Album
← すべてのガイド

Mac で iMessage の会話をまるごと書き出す方法

「メッセージ」に書き出しコマンドがない理由、それでも使える無料の方法、Mac に同期されなかった履歴を得る方法、そして何年後でも開けるアルバムにする方法。

· 1 min read

macOS の「メッセージ」に書き出しコマンドはありません。これまで一度もありませんでした。この疑問を検索すると、上位に出てくるのは Apple サポートのスレッドと Reddit の投稿です。標準機能がこの問題をどれだけ解決してきたかが、それでよく分かります。

以下が実際に使える方法です。

会話はどこにあるか

Mac では、「メッセージ」はすべてを ~/Library/Messages/chat.db の SQLite データベースに保存し、添付ファイルは ~/Library/Messages/Attachments/ に置きます。どちらも macOS が保護しており、「システム設定」でフルディスクアクセスを与えられていないアプリは読めません。フォルダも標準では Finder から隠されています。

ここから 2 つのことが導かれ、この話題をめぐる混乱のほとんどはこれで説明できます。

  1. メッセージを書き出すツールにはフルディスクアクセスが必要です。 それ自体は危険信号ではなく、macOS が許す唯一の方法です。重要なのは、ファイルを読んだあとにそのツールが何をするかです。
  2. このデータベースは Apple の非公開の内部仕様です。 構造は macOS のバージョン間で予告なく変わります。書き出しツールに更新が必要なのはそのためで、書き出したアルバムを Apple の形式にすべきでないのも同じ理由です。

方法 1: PDF に印刷する(無料・標準機能・制限あり)

  1. 「メッセージ」を開き、会話を選びます。
  2. Command + 上矢印 を押し続けてスレッドのいちばん上まで移動し、古いメッセージの読み込みが止まるまで続けます。
  3. 「ファイル › プリント」、そして「PDF › PDF として保存」。

これで動きますし、短い会話ならこれが正解です。現実的な制限が 2 つあります。スクロールでスレッド全体を読み込む必要があり、何年分もあると苦行であること。そして PDF は再生できるビデオや音声を持てないことです。

方法 2: 自分でデータベースを問い合わせる(無料・技術的)

chat.db は標準的な SQLite ファイルなので、直接問い合わせられます。まずターミナルにフルディスクアクセスを与えてから:

sqlite3 ~/Library/Messages/chat.db

手作業でやる人がはまりがちな落とし穴が 3 つあります。

  • タイムスタンプは Unix 時間ではありません。 「メッセージ」は 2001-01-01 からのナノ秒を保存しているので、datetime(message.date/1000000000 + 978307200, 'unixepoch') が必要です。
  • text はしばしば NULL です。 最近のメッセージは本文を、単純な text 列ではなく attributedBody(Apple のシリアライズされた typedstream)に保存しています。これを正しくデコードすることが、この問題全体でいちばん難しい部分です。バイナリを安直に UTF-16 として扱うと、ほとんど正しく見える文字化けが生まれます。
  • 読み取り専用で開いてください。 file:...?mode=ro を使えば、うっかりしたクエリが稼働中のメッセージデータベースに書き込むことはありません。

この方法を手作業ではなくきちんとやりたいなら、imessage-exporter が無料・オープンソースで、typedstream のデコードを正しく行います。

方法 3: アルバムとして書き出す(多くの人が本当に求めているもの)

多くの人が求めている結果は、手元に置いておけるフォルダです。会話全体が、特別なソフトなしで読め、写真とビデオもそのまま入っているもの。

つまり、次を満たす書き出しです。

  • 双方のすべてのメッセージが、順番どおりに、タイムスタンプ付きで。
  • すべての添付ファイルが元の品質のままコピーされていること。文書の中に縮小して埋め込まれていないこと。
  • 作ったツールに依存しない形式であること。素の HTML・JSON・Markdown はどれも該当します。独自形式のデータベースは該当しません。

この分類には imessage-exporter、iMazing、Decipher TextMessage、そしてこのサイトを作った Message Album があります。Message Album がとくに重視しているのは最後の点です。書き出しはフレームワークも CDN も外部フォントもサーバーも使わない自己完結型のオフラインサイトで、SHA-256 チェックサムのマニフェストが付きます。保管しているものが、依存先が消えたせいで動かなくなるべきではない、という考えに基づいています。

Mac に同期されなかった履歴を手に入れる

ここは多くの手引きが飛ばす手順で、書き出しが不完全になる理由になりがちです。

Mac にあるのは、その Mac に同期されたメッセージだけです。その Mac を持つ前に始まった会話や、「iCloud のメッセージ」が古い添付ファイルを退避している場合、Mac 自身のライブラリから書き出すと黙って取りこぼします。

対処法は、iPhone のバックアップから書き出すことです。

  1. iPhone か iPad を接続し、Finder を開きます。
  2. サイドバーでデバイスを選びます。
  3. 「今すぐバックアップ」を選びます。暗号化してもしなくてもメッセージは含まれます。ヘルスケアなど保護されたデータも欲しい場合は「ローカルバックアップを暗号化」にチェックを入れてください。
  4. 書き出しツールを、Mac のライブラリではなくそのバックアップに向けます。

バックアップには iPhone の中身が入っており、それはたいてい Mac に届いた分より多いのです。

書き出しが完全かどうかの見分け方

使うツールに 1 つだけ問いかけてください。何かが欠けていたとき、そのツールはどうするのか?

ローカルにダウンロードされたことのない添付ファイルも、デコードできない Apple 独自のメッセージ内容も、どちらも珍しいことではありません。それらを明示的な警告として報告するツールなら、自分が何を持っているか分かります。黙って落とすツールは、完全に見えて実はそうでないアルバムを残し、特定の写真を探しに行った日まで気づけません。

件数も確認してください。読み取り元から何件読み、出力に何件書いたかをツールが示すなら、その 2 つの数は一致するか、差が説明されているべきです。

書き出したあとにすること

1 か所にしかないアルバムは、保管されているのではなく置かれているだけです。別の場所にもコピーしてください。外付けディスク、別のマシン、好みのクラウドストレージ。良い書き出しは普通のファイルが入った普通のフォルダなので、これはフォルダをコピーするだけの話です。

書き出しにチェックサムが含まれているなら、マニフェストも一緒に保管してください。5 年後に、目の前のコピーが無傷だと確認できる唯一のものです。