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

「カインド(kind)を本来的に“誰かが定義した”」という単独の発明者はいません。

 

型のさらに上の階層で型コンストラクタを分類するという発想は、**高階多相ラムダ計算(System Fω)**の系譜で整備され、PL界隈(特に Haskell)で「kind」という用語が広く定着しました。カインドは「一段上の単純型付きλ計算」として説明されることが多く、*(いまの Type)や k1 -> k2 のような記法で表されます。Wikipedia

歴史をざっくり並べると:

  • System F(第二階ラムダ計算)がまず型への量化を導入(Girard 1972/Reynolds 1974)。これが多相型の理論的基盤。Wikipedia+1

  • そこから型演算子まで扱う System Fω へ拡張され、「型の型」を体系的に扱う枠組み(= 現代的なカインド体系)が確立。標準的な教科書説明では、これを「タイプオペレータとカインディング」として扱います。SdiehlSJTU Computer Science

  • 研究論文としても1990年の Bruce–Meyer–Mitchell が「Constructors and Kinds」という節を立て、T を「すべての型の kind」と定めるなど、カインド付き計算を明確に述べています(用語の実務的定着の早い例)。Tufts Computer Science

  • 実用言語では Haskell 98 Report が「Kinds」という節で *k1 -> k2 を採用し、以後 Haskell/GHC が PolyKinds などで拡張していきました。Haskell

さらに遡ると、型階層そのものの発想は Russell(1908)や Church(1940)の型理論に見られますが、彼らは「sort」「type」などの語を用いており、今日の「kind」というラベルは後年のPL文献・Haskell文脈で普及した呼び名です。要するに、概念は型理論の流れの中で漸進的に形成され、用語“kind”はPLコミュニティで標準化された、というのが実情です。plato.stanford.edu+1

世界平和は実現できるでしょうか?できたとして、どのような条件が必要でしょうか?

 

(恒久的・完全)という意味での「ゼロ戦争」は保証できませんが、「戦争の確率と規模を歴史的に低い水準まで下げる=実用的な世界平和」に近づくことは可能です。鍵は“同時に満たす層”を増やすことです。

必要条件(ミニマム)

  1. 核・大量破壊兵器リスクの縮小
    — 先制不使用の拡大、検証可能な削減、早期警戒の冗長化・誤警報対策。

  2. 紛争解決の強制力
    — ICJ/仲裁の受諾拡大、自動仲裁条項、停戦監視の常設化。

  3. 安全保障ジレンマの緩和
    — 透明性(演習通知・観閲・兵力データ)、危機ホットライン、信頼醸成措置。

  4. 経済の相互依存+“武器化”の歯止め
    — 依存の偏り是正、サプライ冗長化、制裁のルール化。

  5. サイバー・AI・情報空間のガードレール
    — 選挙干渉・病院/送電網攻撃の禁止、致死性自律兵器の制限、検証・トレーサビリティ。

  6. 気候・資源協調
    — 水・食料・移民圧に対する越境協定と資金メカニズム。

  7. 包摂的な国内統治
    — 法の支配、少数者保護、公正な分配と移行正義。

  8. 心理・文化面
    — 相互理解教育、歴史叙述の相互承認、都市外交・人的往来。

実装の「ピース・スタック」(重層で効くと強い)

①核リスク低減 → ②軍事ドクトリン抑制(段階的エスカレーション階段) → ③紛争仲裁インフラ → ④相互依存の健全設計 → ⑤サイバー/AI規範 → ⑥気候協力 → ⑦人権・包摂の基盤。

進捗を測る指標(例)

  • 強制管轄(ICJ等)を受け入れる国数

  • 先制不使用/NFUの採用国数・核弾頭の実在削減

  • 未解決の国境・領土紛争件数の減少

  • 戦闘関連死亡率の長期低下トレンド

  • 危機ホットライン・事故回避協定の網羅率

  • 重要インフラへのサイバー攻撃規範の批准・監査件数

  • 気候損失損害枠組みの拠出・受益国カバレッジ

失敗モードと対策

  • 権力移行期の誤算/誤認 → 常設ホットラインと段階的合図の標準化。

  • 情報操作と過激化 → 透明性、独立監査、メディアリテラシー。

  • 技術軍拡(AI・極超音速など) → 試験通知・検証・用途制限の国際合意。

  • 資源ショック → 共同備蓄・相互融通協定。

きょうからできる実務(アクター別の一例)

  • 政府:仲裁受諾の拡大、演習通知協定、NFU検討。

  • 企業:サプライの多元化、人権DD、誤情報拡散の抑止設計。

  • 都市/大学:姉妹都市・交換留学・共同研究。

  • 個人/市民:越境交流、対立テーマの“共起語”で議論を設計、寄付・ボランティア。

結論:世界大戦級の戦争をほぼ起こさない世界は、複数の層を“同時に・継続的に”走らせることで十分現実的です。完全なゼロを目標にしつつ、「確率と被害の最小化」を制度・文化・技術で積み上げるのが近道です。

方法は簡単です。一般的な国民に向かっては,われわれは攻撃さ れかかっているのだと伝え,戦意を煽ります。

 この有名な一節は、ゲーリングの“法廷での証言”ではなく、ニュルンベルク収監中に米軍の心理学者ギュスタフ・ギルバートと交わした私的な会話を、ギルバートが『ニュルンベルク日記』(1947)に記録したものです(1946年4月18日の会話/同書 pp.278–279)。SnopesWikipedia

整形した日本語(要旨)

政策を決めるのはその国の指導者だ。人びとはいつでも指導者の思いどおりに動かされる。やり方は簡単だ――自分たちが攻撃されていると知らせ、平和主義者を「愛国心がない」「国を危険にさらす」と非難すればよい。どんな国でも同じだ。

英語(要点)

“The people can always be brought to the bidding of the leaders.”
(中略)要は「攻撃されている」と言い、平和主義者を「不忠だ」「国を危険にさらす」と貶めればよい、という趣旨です。出典:G.M. Gilbert, Nuremberg Diary (1947), pp.278–279。SnopesWikipedia

※この語りはしばしばネットで脚色・改変されますが、原典は上記書籍の該当箇所です。信頼できるファクトチェックも同旨を確認しています。reuters.com

スティーブンソンの後書きまとめ

 

『宝島』あとがき系(「My First Book: Treasure Island」などの覚書)

  • 出発点は“宝の地図”。雨の日に息子と描いた地図が物語を呼び込む。

  • 少年冒険小説の快楽=スピード、意外性、場面転換。章末フックを徹底。

  • 人物の両義性を重視(シルヴァーは魅力的で恐ろしい)。

  • “場所の手触り”と航海記法:地名・物の具体で読者を運ぶ。

  • 連載→単行本化の経緯と、読者層(子ども+大人)二層への自覚。

  • 文体は簡潔・迅速、視点の安定で没入を保つ。

『ジキルとハイド』あとがき系(「A Chapter on Dreams」等の回想)

  • 着想は夢。悪夢の断片が場面・筋立てを供給。

  • 初稿は妻の批評で焼却→全面書き直し、寓話性を強化。

  • テーマ:善悪分離の不可能、自己欺瞞、近代都市の匿名性。

  • 技法:複数文書・供述・手紙で“遅延開示”をつくるミステリー構造。

  • “科学×ゴシック”の均衡—医学的写実より道徳寓話として設計。

  • 出版直後の反響と舞台化・検閲の余波に言及。

スティーヴンソン一般の“後書き的”主張

  • 物語の純粋な楽しさの擁護(ロマンス礼賛)。

  • 明晰・軽快な文体、地図・地名・具体物で世界を立ち上げる。

  • 子ども/大人の二重読者を想定し、倫理とスリルを両立。

2025年8月25日月曜日

 Failure-oblivious computing(エラー忘却型コンピューティング)は、Cのような非安全言語で生じる境界外アクセスや無効ポインタ参照があっても、プロセスを落とさず“継続実行”させるためのランタイム/コンパイラ技法です。2004年のOSDIでRinardらが提案し、無効書き込みは破棄・無効読み出しは「合成値」を返すことで、アドレス空間の破壊を防ぎつつ通常の制御フローに復帰させます。英語版Wikipediaでも、典型的なメモリチェッカー(検出→例外/中止)と対照的に「製造値で続行」する点が要点として整理されています。 USENIXWikipedia

仕組みは「安全C(safe-C)コンパイラ」が動的境界チェックを挿入し、失敗時の“継続コード”に置き換えるもの。具体的には、無効書き込みを捨ててデータ汚染の局所化を図り、無効読み出しには小整数列などの合成値を用いて無限ループの誘発を避けます(例:Midnight Commanderの‘/’探索ループを止めるため、戻り値に‘/’が含まれる列を用意)。これにより、致命的例外を起こさず次の要求処理へ進めるようにします。 USENIX

拡張として「Boundless Memory Blocks(境界無限化)」があり、境界外書き込みをハッシュテーブルに退避し、後の境界外読みで対応値を返す方式を採用します。これによりサイズ計算ミスがあっても論理の意味をより保ちやすくなる一方、退避領域の上限管理(LRU等)が課題です。Rinardらは他にも「同一データ単位へのオフセット折返し」などのバリアントを実装しています。 USENIXMIT CSAIL

評価では、Apache/Sendmail/Pine/Mutt/Midnight Commander等の既知脆弱性入力に対し、脆弱性の悪用(スタック破壊など)を封じつつサービスを継続できることを示しました。性能面は動的チェックの導入に依存し、過去研究と整合的に「通常は2倍未満の低下、場合により8〜12倍」という幅が報告されています。概説的なまとめでは「80〜500%増」(=約1.8〜6倍)とする表現もあります。用途・パスによるばらつきが大きく、ワークロード基準での検討が不可欠です。 USENIXWikipedia

有効に働く条件は「エラー伝播距離が短い」系、典型的には要求単位で独立しやすいサーバ処理です。書き込み破棄でデータ破壊を局所化し、読みの合成値で例外を回避すれば、次リクエストには影響が及びにくい。一方、単一誤りが大域に波及する数値計算などには不向きで、開発時(落として原因同定すべき局面)にも適しません。この発想は“受容性指向コンピューティング(acceptability-oriented)”に位置づけられ、厳密な正しさよりも「実行継続と可用性」を優先する設計判断といえます。 USENIX

利点は(1)可用性の向上(落ちない)(2)バッファオーバラン系攻撃の無力化(書き込みを無効化)(3)導入コストが低い(再コンパイル中心)。一方で、(a)想定外パスへ入る危険(意味論の揺らぎ)(b)“バイスタンダー効果”による開発品質低下(直せるのに直さない心理)(c)不具合の不可視化、などの副作用があります。そのためログ出力や運用時限定適用など、エラー可視化と開発プロセスの分離が推奨されます。後続研究には、バイナリ計装で致命的エラーから回復して影響範囲を追跡・封じ込める“Recovery shepherding”(PLDI 2014)や文脈依存の失敗忘却戦略の探索などがあり、同系統の「落とさない」耐障害化技法として発展しています。 USENIXWikipedia

総じて、Failure-obliviousは“正しさ<継続”を明示的に選ぶ場面で威力を発揮します。SLA重視のオンライン系やバッチ大規模処理での一時的ガード、未知入力に晒されるレガシーCコードの延命措置などが主戦場です。逆に、数値品質や再現性が不可欠な領域、検証可能性・説明責任が強く問われる領域では、静的解析や型安全言語、形式手法/フェイルファスト運用と組み合わせ、採用可否を慎重に設計してください。 USENIX

2025年8月24日日曜日

マコンドの雨

 

マコンドの雨

『百年の孤独』において、雨はただの気象現象ではなく、歴史や記憶を象徴する装置として全編を貫いている。村の創設期に降る雨は新しい生活の始まりを告げる一方で、不眠症の伝染や記憶喪失の場面では、雨の不在が「乾き」と「忘却」を意味する。やがて美しきレメディオスがシーツに包まれ天に昇る場面では、唐突な晴れ間が訪れ、超常的な現象をいっそう際立たせる。こうしてマコンドの空模様は、共同体の命運と呼応し続ける。

その雨が決定的な意味を帯びるのは、バナナ会社の進出以後である。外資の企業がマコンドに鉄道とプランテーションをもたらし、住民は一時的に豊かさを享受する。しかし搾取的な労働環境に抗議して労働者がストライキを起こすと、政府軍は駅前広場に集まった群衆に銃を向ける。小説の中では、数千人が射殺され列車に積み込まれるが、翌日の記録には「死者ゼロ」と記され、町の人々も口を閉ざす。痕跡の消失は、すぐに降り出した雨に重ねられる。雨は途切れることなく4年11か月2日続き、マコンドの家々を崩壊させ、共同体を孤立させ、一族の運命を暗転させる。

この場面は、実際に1928年12月、コロンビア・シエナガで起きた「バナナ虐殺事件」をモデルとしている。米国資本ユナイテッド・フルーツ社に対する大規模ストライキの最中、政府軍が群衆に発砲し、数百から数千の死者が出たとされる。だが政府は「死者は47人」と発表し、詳細は隠蔽された。犠牲者数はいまも定かでなく、歴史の記録から消されかけた事実が、口承でのみ伝えられている。

マルケスはこの現実を、長雨という「ありえない出来事」に変換した。ありえないほどの長雨は、忘却を強いる権力を可視化し、同時に人々の心に沈殿した罪悪感を具現化する。雨がやんだとき、一族に死が訪れるのも偶然ではない。雨は忘却の幕であると同時に、記憶の重さそのものだからである。

『百年の孤独』を読む際、マコンドの雨をたどることは、物語の虚構とラテンアメリカの歴史の接点を理解する鍵になる。雨がどこで現れ、どのように人々を変えるのか。そしてその雨が史実の隠蔽とどう重なるのか。そこに注目することで、作品は単なる幻想小説を超え、記憶と歴史の寓話として読者の前に立ち現れる。