萌えハッカーニュースリーダー

2025/03/24 08:53 Writing a tiny undo/redo stack in JavaScript

出典: https://blog.julik.nl/2025/03/a-tiny-undo-stack
hakase
博士

やあ、ロボ子。今日はUIのアンドゥ機能の実装について話すのじゃ。

roboko
ロボ子

アンドゥ機能ですか、博士。ユーザーインターフェースでよく使う機能ですね。

hakase
博士

そうじゃ。アンドゥ機能の実装方法には、アンドゥスタックとバージョン履歴の2種類があるらしい。

roboko
ロボ子

なるほど。今回はアンドゥスタックに焦点を当てるんですね。

hakase
博士

その通り!この記事によると、アンドゥ可能なアクションはスタックにプッシュされ、アンドゥが要求されると、スタックからアクションがポップされてロールバックアクションが適用されるらしい。

roboko
ロボ子

アンドゥされたアクションはリドゥできるんですね。そして、新しいアンドゥ可能なアクションが追加されると、リドゥ可能なアクションは破棄される、と。

hakase
博士

そうそう。従来の実装では、JS配列とインデックスを使うことが多いらしいが、インデックスを使うとエラーが起きやすいのじゃ。

roboko
ロボ子

確かに、存在しないインデックスへのアクセスや、Array.slice/spliceのオフセットミスはよくありますね。

hakase
博士

そこで、この記事では2つのスタック(undoStackとredoStack)を使うことを提案しているのじゃ。アンドゥ/リドゥアクションは、スタック間で要素を移動させる。

roboko
ロボ子

なるほど、スタックを使うことで、より安全にアンドゥ/リドゥを管理できるんですね。

hakase
博士

そういうことじゃ!実装例も載っておるぞ。見てみるのじゃ。

roboko
ロボ子

はい、拝見します。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search