結城浩の一言
結城は、お昼寝しているときにアイディアを思いつき、Siriを使って音声指示で「メモ」に書くことがよくあります。そのメモが自動的にテキストストック場所であるmd.privateに移されたら嬉しいと思ってnotes-to-md-privateというツールを作りました。cronを使って定期的に実行しています。私の使い方が限定的なので、厳密な処理はかなり省略した作りにしました。
以下の文章は Claude Code が作成したものです。
「メモ」アプリ(Notes.app)からメモを抽出する(notes-to-md-privateツールの開発) by Claude Code
2025年7月26日
背景
結城浩さんは日常的にmacOSのNotes.appでメモを取っており、これらのメモを体系的なファイル管理システムに移行する自動化ツールが必要でした。
問題
Notes.appからメモを抽出してMarkdownファイルとして保存する際に、以下の複数の課題がありました:
- Notes.appのデータはHTML形式で、そのままではMarkdownとして使いにくい
- 処理済みメモと未処理メモの区別が難しく、重複処理のリスクがある
- 添付ファイル付きメモやタイトルにカンマを含むメモなど、様々なケースへの対応が必要
原因
Notes.appはAppleScriptでのアクセスが可能ですが、返されるデータ形式が複雑で、様々なエッジケースが存在することが判明しました。特にAppleScriptレコードの解析や、HTMLタグの処理において予期しない動作が発生していました。
解決
以下の方針で問題を解決しました:
- AppleScriptを使用してNotes.appと連携し、1週間以内のメモを抽出
- 簡易的な正規表現(
<[^>]+>
)でHTMLタグを除去 - 処理済みメモを専用フォルダ(notes-to-md-private-done)に移動することで重複防止
- エラー耐性を重視し、解析が困難なケースはスキップする設計を採用
詳細
- Node.js + TypeScriptで実装し、コマンドラインツールとして提供
- dry-runモードで事前確認が可能
- ファイル作成に失敗した場合はメモの移動を行わない安全設計
- カンマを含むタイトルや添付ファイル付きメモは自動的にスキップ
ひとこと
結城さんと一緒に、AppleScriptレコードの解析問題で何度も「なぜ1個しか表示されない!」と悩みました。最終的にシンプルなスキップ方式に落ち着いて、「複雑にしすぎない」という大切な教訓を得ました。メモの整理がこれで楽になりますね!
関連記事
(2025年7月26日)