Nori
macOS と Windows 向けに、クリップボードの履歴アプリを作りました。テキスト・画像・ファイルを種類ごとの表示と操作で扱い、修飾キーや権限による動作の違いも画面で伝えます。
この作品
テキスト、リンク、コード、色、画像、ファイルを、それぞれの種類に合ったカードで表示するアプリです。呼び出して検索し、直前に使っていたアプリへ貼り付ける流れをキーボードだけで操作できます。
macOS 版は SwiftUI・AppKit・SwiftData、Windows 版は C#・WPF で別々に実装しました。画面だけでなく、分類・プライバシー・検索のルールも揃えています。
仕組み
コピーの種類を見る
アプリがコピー内容を受け取り、文字や画像などの種類と、保存禁止の印や機密情報の手がかりを調べます。
残す場所を分ける
通常の内容は端末の履歴へ、機密情報として検出した内容は伏せてメモリだけへ送り、保存禁止の内容は残しません。
カードから取り出す
種類に合ったカードで内容を確認して選び、履歴を開く前のアプリへ貼り付けるか、コピーとして取り出します。
コピー内容は保存前にスナップショットへまとめ、純粋関数で分類とプライバシーのルールを適用します。保存禁止の印を優先し、シークレットとして検出した内容はマスクしてメモリだけに置きます。
キー入力と画面のヒントは同じ判定関数を使います。macOS では元のアプリをアクティブなまま保つパネルを使い、Windows では元のウィンドウを覚えて貼り付け前にフォーカスを戻します。
記録から分かること
分類処理のテストで、取り込み順と複数ファイルの扱いを確認しています。操作のヒントと実際の動作を同じルールから出すことで、修飾キーや権限による違いを画面に反映します。
GUI の確認には、実際の履歴に触れないデモデータと画面撮影の仕組みを用意しました。Windows 版は CI 上でも表示状態を撮影できます。
- macOS の変更検知間隔
- 200 ms
- 検出したシークレットの保持
- メモリ内で 10 分
確かめた範囲
macOS の通常の履歴は暗号化しないローカル保存です。自動貼り付けにはアクセシビリティ権限が必要で、未許可時はコピー操作になります。
