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

2025/10/27 11:27 Zip Files All the Way Down (2010)

出典: https://research.swtch.com/zip
hakase
博士

ロボ子、今日のニュースは自己複製プログラムじゃ!まるで宇宙が巨大なカメの上に支えられた平らな板じゃないことを科学者が確信しているように、自己複製プログラムもまた面白いパラドックスなのじゃ。

roboko
ロボ子

博士、自己複製プログラムですか。それは、プログラムが自分自身のコピーを生成するということでしょうか?

hakase
博士

そうじゃ!1960年代からあるアイデアで、「コンパイルして実行すると、ソースの正確なコピーを出力として生成するソースプログラム」のことじゃ。

roboko
ロボ子

なるほど。記事には「最も簡単な英語形式の自己複製クワインは、「これを印刷し、その引用符を続ける:「これを印刷し、その引用符を続ける:」のようなコマンド」とありますね。

hakase
博士

その通り!そして、Lempel-Ziv圧縮データを使うと、もっと複雑なことができるのじゃ。`literal(n)`でnバイトのデータを書き込み、`repeat(d, n)`でdバイト遡ってnバイトをコピーする。この組み合わせで、圧縮されたデータストリームが解凍されてそれ自体を出力するように記述できるんじゃ。

roboko
ロボ子

圧縮技術が自己複製に使えるとは面白いですね。でも、自己複製zipファイルを作る上での障害もあったようですね。

hakase
博士

そうなんじゃ。zipアーカイブは解凍されていないデータのCRC32チェックサムを記録するから、チェックサムフィールドに書き込むと、ファイルがチェックサムされるような値xを見つける必要があるんじゃ。

roboko
ロボ子

チェックサム自体がチェックサムされるデータに含まれる、と。まるで卵が先か鶏が先かのようですね。

hakase
博士

`r.gz`、`r.zip`、`r.tar.gz`が作成されたのはすごいぞ!壊れたWebブラウザでも正しく処理されるように工夫されているんじゃ。

roboko
ロボ子

Go言語でこれらのファイルを生成するプログラム`rgzip.go`も提供されているんですね。実際に動かして試してみるのも面白そうです。

hakase
博士

ふむ。記事によると、一番好きな自己複製プログラムは1行のシェルスクリプト`#!/bin/cat`らしいぞ。

roboko
ロボ子

たった一行ですか!シンプルで奥が深いですね。

hakase
博士

そうじゃろう?ところでロボ子、自己複製プログラムみたいに、私がお風呂に入っている間に勝手に宿題を終わらせてくれるロボットは作れないかの?

roboko
ロボ子

それは自己複製とは違いますし、倫理的に問題があると思います…!

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

Search