0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】物理学の未解決問題を「バグ」と断定し、Pythonで「宇宙の仕様」を勝手にリファクタリングしてみた

Last updated at Posted at 2025-12-04

はじめに:宇宙というレガシーコード

物理学の専門書を読んでいると、エンジニアなら一度はこう思ったことがあるはずです。 「この仕様、複雑すぎないか? もっとシンプルに実装できるだろ」 と。

  • 相対性理論と量子力学が統合できない(互換性エラー)

  • 観測するまで値が決まらない(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

このコードを実行すると、既存の物理学では「直線」になるグラフが、 「階段状」になります。 もし、次世代の高精度な光格子時計でこの「階段(不感帯)」が観測されれば、 「宇宙はデジタル計算機である」 ことが証明されます。

image.png


2. 🕶️ Quantum Eraser (量子消しゴム)

〜因果律の逆転を「SQLのWHERE句」で実装する〜

「未来の観測が過去の結果を変える」とされる量子消しゴム実験。
これも、 「宇宙=データベース」 と考えれば、単なる 「検索クエリ」 の話になります。

  • 過去: 粒子がスクリーンに着弾した(データは INSERT 済み。ただし暗号化されている)。

  • 未来: 人間が検出器 D1 で観測した(検索キーを取得した)。

物理学者はこれを「因果律の逆転」と呼びますが、エンジニアはこれを 「フィルタリング」 と呼びます。

-- 物理学者の言う「過去改変」の正体
-- 未来の観測結果(Detector = 'D1')をキーにして、過去のログを検索しているだけ

SELECT * FROM Universe_Log 
WHERE Hidden_Tag = 'Type_A' -- D1で見つかるタグ

全データ(ノイズ)の中から、特定のタグ(D1)がついたデータだけを SELECT したら、干渉縞というパターンが見えた。

それだけのことです。

データは書き換わっていません。
見え方が変わった(Viewが生成された)だけです。

image.png

image.png


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)しただけ です。

image.png


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

DOI: 10.5281/zenodo.17732299

物理学のスパゲッティコードに疲れたエンジニアの皆さん。 Pull Request(修正案)やIssue(バグ報告)、お待ちしています。

一緒にこの宇宙の仕様をハックしましょう。

最後に、このプロジェクトのポリシーを記しておきます。

"Talk is cheap. Show me the Logic." (能書きはいい。ロジックを見せろ。)

感情的な批判は受け付けません。バグを見つけた方は、コードでプルリクを送ってください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?