← 作品一覧

Nori

macOS と Windows 向けに、クリップボードの履歴アプリを作りました。テキスト・画像・ファイルを種類ごとの表示と操作で扱い、修飾キーや権限による動作の違いも画面で伝えます。

  • Swift
  • SwiftUI
  • AppKit
  • SwiftData
  • C#
  • .NET
  • WPF
コード公開

この作品

テキスト、リンク、コード、色、画像、ファイルを、それぞれの種類に合ったカードで表示するアプリです。呼び出して検索し、直前に使っていたアプリへ貼り付ける流れをキーボードだけで操作できます。

macOS 版は SwiftUI・AppKit・SwiftData、Windows 版は C#・WPF で別々に実装しました。画面だけでなく、分類・プライバシー・検索のルールも揃えています。

仕組み

流れを見る図の動きやスクロールで、流れを追えます。動きはオフです。工程を選んで読めます。

コピーの種類を見る

アプリがコピー内容を受け取り、文字や画像などの種類と、保存禁止の印や機密情報の手がかりを調べます。

残す場所を分ける

通常の内容は端末の履歴へ、機密情報として検出した内容は伏せてメモリだけへ送り、保存禁止の内容は残しません。

カードから取り出す

種類に合ったカードで内容を確認して選び、履歴を開く前のアプリへ貼り付けるか、コピーとして取り出します。

コピー内容は保存前にスナップショットへまとめ、純粋関数で分類とプライバシーのルールを適用します。保存禁止の印を優先し、シークレットとして検出した内容はマスクしてメモリだけに置きます。

キー入力と画面のヒントは同じ判定関数を使います。macOS では元のアプリをアクティブなまま保つパネルを使い、Windows では元のウィンドウを覚えて貼り付け前にフォーカスを戻します。

記録から分かること

分類処理のテストで、取り込み順と複数ファイルの扱いを確認しています。操作のヒントと実際の動作を同じルールから出すことで、修飾キーや権限による違いを画面に反映します。

GUI の確認には、実際の履歴に触れないデモデータと画面撮影の仕組みを用意しました。Windows 版は CI 上でも表示状態を撮影できます。

macOS の変更検知間隔
200 ms
検出したシークレットの保持
メモリ内で 10 分

確かめた範囲

macOS の通常の履歴は暗号化しないローカル保存です。自動貼り付けにはアクセシビリティ権限が必要で、未許可時はコピー操作になります。