はじめに:宇宙というレガシーコード
物理学の専門書を読んでいると、エンジニアなら一度はこう思ったことがあるはずです。 「この仕様、複雑すぎないか? もっとシンプルに実装できるだろ」 と。
-
相対性理論と量子力学が統合できない(互換性エラー)
-
観測するまで値が決まらない(Null参照?)
-
ダークマターが見つからない(メモリリーク?)
これらは物理学では「未解決問題」や「パラドクス」と呼ばれますが、システムエンジニアの視点では単なる 「バグ(または仕様の不整合)」 に見えます。
そこで、 「もし宇宙が有限のリソースで動くデジタル計算機だとしたら?」 という仮定のもと、これらの物理現象をPythonとSQLで再実装(リファクタリング)してみました。
すると、 驚くべきことにバグが直り、既存の物理学では説明できない「奇妙な挙動(仕様)」が見つかりました。 本記事は、そのデバッグ記録と、ブラウザで動く検証アプリの紹介です。
1. 📉 Gravitational Redshift (重力赤方偏移)
〜相対性理論を「処理落ち」として実装する〜
アインシュタインは「重力が強い場所では時間が遅れる」と言いました。 これを幾何学(ゴムシートの歪み)として理解するのは直感的ではありません。
しかし、 「サーバーのCPU負荷」 として実装すると、一発で理解できます。
- 質量 ($M$): 計算の複雑さ(オブジェクトのポリゴン数)
- 重力 ($G$): 計算リクエストの集中による 「処理落ち(Lag)」
物質(高負荷なオブジェクト)がある場所では、宇宙サーバーの処理が追いつかず、FPS(フレームレート=時間の進み)が低下します。 時間が遅れているのではなく、画面更新(Update)が遅れているのです。
実装コード(不感帯の発見)
もし宇宙が連続体ではなく、デジタル計算機なら、必ず 「最小単位(ピクセル)」 が存在するはずです。 重力によるエネルギー変化が、最小単位(プランクスケール)を下回った場合、 int型へのキャスト(切り捨て) が発生するはずです。
import numpy as np
def simulate_discrete_redshift(delta_phi):
# 宇宙の最小エネルギー単位(トイモデル用の係数)
STEP_SIZE = 1.0
# 既存理論(連続的に変化する:float)
y_analog = delta_phi
# デジタル宇宙論(最小単位で切り捨てが発生する:intキャスト)
# エネルギー変化がステップ未満なら、赤方偏移は起きない(不感帯)
y_digital = np.floor(delta_phi / STEP_SIZE) * STEP_SIZE
return y_analog, y_digital
このコードを実行すると、既存の物理学では「直線」になるグラフが、 「階段状」になります。 もし、次世代の高精度な光格子時計でこの「階段(不感帯)」が観測されれば、 「宇宙はデジタル計算機である」 ことが証明されます。
2. 🕶️ Quantum Eraser (量子消しゴム)
〜因果律の逆転を「SQLのWHERE句」で実装する〜
「未来の観測が過去の結果を変える」とされる量子消しゴム実験。
これも、 「宇宙=データベース」 と考えれば、単なる 「検索クエリ」 の話になります。
-
過去: 粒子がスクリーンに着弾した(データは
INSERT済み。ただし暗号化されている)。 -
未来: 人間が検出器 D1 で観測した(検索キーを取得した)。
物理学者はこれを「因果律の逆転」と呼びますが、エンジニアはこれを 「フィルタリング」 と呼びます。
-- 物理学者の言う「過去改変」の正体
-- 未来の観測結果(Detector = 'D1')をキーにして、過去のログを検索しているだけ
SELECT * FROM Universe_Log
WHERE Hidden_Tag = 'Type_A' -- D1で見つかるタグ
全データ(ノイズ)の中から、特定のタグ(D1)がついたデータだけを SELECT したら、干渉縞というパターンが見えた。
それだけのことです。
データは書き換わっていません。
見え方が変わった(Viewが生成された)だけです。
3. 📦 Schrödinger's Cat (シュレーディンガーの猫)
〜重ね合わせを「非同期処理(Lazy Loading)」として実装する〜
「箱を開けるまで、猫は生と死が重なり合っている」
これもエンジニア視点では 「クライアントへのデータ転送が完了していないだけ」 です。
-
サーバーサイド(宇宙): 毒ガスが発生した時点で、猫のステータスは
DEADに コミット(確定) されています。これを 「ヘッドレス実行」 と呼びます。 -
クライアントサイド(人間): まだサーバーからデータを取得していないので、値は Unknown(またはローディング中)です。
# サーバー側の処理(ヘッドレス実行)
def server_process():
# 人間が見ていなくても、物理法則(ロジック)通りに確定する
cat_status = random.choice(['ALIVE', 'DEAD'])
return cat_status
# クライアント側の処理(観測)
def client_observe():
# 箱を開ける = 確定済みのデータをFetchする
# 「見ることで決まる」のではなく「見て初めて知る」
result = fetch_data_from_server()
print(f"Cat is {result}")
人間が箱を開ける行為は、状態を決定する魔法ではありません。
「サーバーですでに確定していた過去のログ」を遅延ロード(Lazy Load)しただけ です。
4. ブラウザで宇宙をデバッグする(Demo)
この3つの現象(バグ修正)を実際に体験できるWebアプリを、Streamlitで公開しました。
スマホからアクセスして、宇宙のパラメータ(解像度やノイズ)をいじってみてください。
🌌 Digital Cosmology: Interactive Lab
-
Tab 1 📉 Gravitational Redshift: 重力赤方偏移の「ピクセル(階段)」が見えます。スライダーで各種パラメータを調整できます。
-
Tab 2 🕶️ Quantum Eraser: 検出器を切り替えると、SQLによって過去のデータから干渉縞が浮かび上がります。
-
Tab 3 📦 Schrödinger's Cat: 「箱を開ける」ボタンを押して、サーバー側で確定していた猫の運命を確認できます。
5. まとめ: ソースコードは公開されています
この理論は、単なるSF的な思考実験ではなく、 「実装可能な仕様書」 です。
すべてのコードと論文(ドキュメント)はGitHubで公開しています。
GitHub: Sevenforest/Digital-Cosmology
物理学のスパゲッティコードに疲れたエンジニアの皆さん。 Pull Request(修正案)やIssue(バグ報告)、お待ちしています。
一緒にこの宇宙の仕様をハックしましょう。
最後に、このプロジェクトのポリシーを記しておきます。
"Talk is cheap. Show me the Logic." (能書きはいい。ロジックを見せろ。)
感情的な批判は受け付けません。バグを見つけた方は、コードでプルリクを送ってください。



