2025年8月26日火曜日

メメント=スナップショット保存→後で復元

 **「メメント=スナップショット保存→後で復元」**の発想を実務で採っている(または公式にそう表明している)GitHub上のOSSを、分野別に手早く把握できるよう整理した一覧です。

データベース(典型的“スナップショット=メメント”)

  • RocksDB – Snapshot API:DBの時点コピーを取得・参照・解放する仕組み。読み取り一貫性の確保に使われ、まさにメメントの実用版。GitHub+2GitHub+2

フロントエンド状態管理(タイムトラベル=履歴メメント)

  • redux-undo:既存リデューサーを past/present/future スタックで拡張し Undo/Redo を実装。GitHub

  • redux-time-travel:Redux 全体/一部スライスの時間移動(Undo/Redo)を提供。GitHub

  • use-history-reducer:Immerベースでチェックポイント・分岐まで扱う履歴リデューサー。GitHub

  • Redux DevTools:アクション列を再生して任意時点に復帰(開発時の“メメント”)。redux.js.org

  • blazor-redux:DevTools 連携で状態の保存/読込・リセット=時点復帰が可能。GitHub

  • redux-memento:Redux Toolkit 向けに Undo/Redo を提供する名前そのままのライブラリ。GitHub

ゲーム/エディタ系(Undo/Redo をメメントとして明言)

  • GodotUndoRedo(アドオン)“Memento パターンに基づく” Undo/Redo ノードを提供。GitHub

コラボ編集・分岐履歴

  • undomundo分岐する履歴/タイムトラベルを扱う汎用 Undo ライブラリ(Figma 記事を参照)。GitHub

.NET / Blazor

  • le-nn/memento:Blazor 向けのUndo/Redo+DevTools対応ステート管理。名称どおり。GitHub

実装の“落とし穴”や設計議論(差分vs全量)

  • easy-peasy の Issueパッチ(差分)保存で履歴を軽量化できるか、実務的な議論。GitHub

関連トピックでまとめて探す(GitHub Topics)

  • TypeScript: undoC#: undo-redo などのトピックから、履歴スタック実装を横断検索。GitHub+1


使い分けメモ

  • 名称に“Memento”が出てこなくても、実態が「状態スナップショット保存→復元」ならメメント発想です(DBの Snapshot、Redux の past/present/future、エディタの Undo スタックなど)。

  • 実務では全量コピーより差分(patch)圧縮履歴上限を併用するのが一般的(上記 Issue 参照)。GitHub