iMessagePrinter — iMessage/SMS会話を美しくPDF化するmacOSアプリ

Tool

概要

iMessagePrinterは、macOS上でiMessage(およびSMS/RCS)会話を閲覧し、メタデータ(タイムスタンプ、配信/既読情報、リアクション)や連絡先名、インライン画像を保持した見栄えのよいPDFにエクスポートするアプリです。ローカルに保存された会話履歴(Messagesデータベース)を読み取り、Contactsアプリと照合して番号やメールアドレスを名前に解決します。長年のやり取り(READMEでは2012年まで遡ると記載)を扱える点や、出力されるPDFのフォーマットにこだわっている点が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 4
  • フォーク数: 0
  • ウォッチャー数: 4
  • コミット数: 8
  • ファイル数: 9
  • メインの言語: Swift

主な特徴

  • フル会話履歴の抽出: 長期間にわたるメッセージ履歴を読み取って出力可能
  • 豊富なメタデータ保存: タイムスタンプ、配信/既読、リアクションを保持してPDF化
  • 連絡先名の解決: macOS Contactsと連携して番号やメールを人名に変換
  • インライン画像対応: 添付画像を会話の流れに沿ってPDFに埋め込む

技術的なポイント

iMessagePrinterはmacOSネイティブのSwiftで実装されたアプリケーションで、ローカルのMessagesデータ(通常は~/Library/Messages配下のSQLiteデータベースやAttachmentsフォルダ)を解析して会話と添付ファイルを復元します。連絡先名の解決にはContactsフレームワークを用いる想定で、電話番号やメールアドレスをContacts.appの情報と照合して表示ラベルを生成します。PDFの生成にはPDFKitやAppKit(NSPrintOperation / NSAttributedStringを介したレンダリング)を用いるパターンが一般的で、本リポジトリも同系のAPIを利用してテキスト、タイムスタンプ、吹き出しレイアウト、画像をレイアウトしてPDFに書き出していると推測されます。MessagesのDBは複雑なスキーマ(message、chat、handle、attachmentなど)を持つため、正確なメッセージ順序の再現や、反応(likes等)の紐付け、送信/受信フラグの解釈など実装の細かな工夫が必要です。また、ユーザのローカルファイルや連絡先へアクセスするため、アプリ実行時にフルディスクアクセスやプライバシー許可が必要になる場合があり、その取り扱い(権限付与の案内や安全な処理)も重要な設計ポイントです。ビルド周りはMakefileやSwift Package Managerの痕跡(Package.resolved)があり、簡単にビルド/デバッグできる構成がとられている可能性があります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir
  • .gitignore: file
  • LICENSE: file
  • Makefile: file
  • Package.resolved: file

他の主要要素(リポジトリ内の典型的な配置と想定される役割):

  • Resources: アプリのアイコンや静的アセット(READMEにアイコン参照あり)
  • Sources / iMessagePrinter: Swiftソースコード(UI・データ解析・PDF出力の実装)
  • README.md: 使い方や機能説明、スクリーンショット
  • その他設定ファイル: Xcodeプロジェクトやエントリポイント、ローカル実行用のスクリプト等

リポジトリ自体は軽量でファイル数が少ないため、コアとなる実装に集中した構成になっています。MakefileとPackage.resolvedが含まれているため、コマンドラインからのビルドや依存管理の痕跡がある一方、配布やコード署名、サンドボックス設定などはREADMEやプロジェクト設定で補足されている可能性があります。

まとめ

ローカルの会話履歴を丁寧にPDF化する実用的なmacOSツールです。

リポジトリ情報:

READMEの抜粋:

iMessagePrinter icon

iMessagePrinter

Export any iMessage, SMS, or RCS conversation to a beautifully formatted PDF — complete with timestamps, delivery/read receipts, reactions, contact names, and inline images.

What You Get

  • Full conversation history going back to 2012
  • Contact name resolution via your Contacts app
  • All metadata: timestamps, read/delivered re…