Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Créer un Univers avec Python : Une Simulation Inspirée par la Poésie et le Cosmos

2025年09月19日に「Dev.to」が公開したITニュース「Créer un Univers avec Python : Une Simulation Inspirée par la Poésie et le Cosmos」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Pythonで、暗黒物質とエネルギーの相互作用から星が生まれ、成長し、死を迎える宇宙のサイクルをシミュレーション。宇宙を巨大な生命体と捉え、その誕生・進化・終焉を、Numpyなどのライブラリを使ったシンプルなコードでモデル化・再現する。

ITニュース解説

このニュース記事は、Pythonプログラミング言語を使って、宇宙の壮大な物語、つまり「誕生、死、そしてサイクル」をシミュレーションするユニークなプロジェクトについて語っている。このプロジェクトの根底には、「宇宙は一つの巨大な生き物、あるいは脳のようなものかもしれない」という、詩的で哲学的な発想がある。複雑な宇宙の理論を難しい数式ではなく、シンプルなコードのロジックで表現しようとする試みは、システムエンジニアを目指す初心者にとっても、プログラミングが持つ創造性や表現の可能性を教えてくれるだろう。

このシミュレーションで提案される宇宙の概念は、以下のようなシンプルな原理に基づいている。まず、宇宙の「構造」をダークマター(暗黒物質)とし、これを宇宙に遍在する「眠れる闇」として捉える。そして、この闇を揺り動かし、光を生み出す「引き金」となるのがダークエネルギー(暗黒エネルギー)であると定義している。星の誕生は、このダークエネルギーが特定の場所で十分に消費され、「物質スープ」が集まってエネルギーを吸収した瞬間に起こると考えられている。「Pouf Chocapic!(ポン!チョカピック!)」という印象的な言葉は、まさにその創造の瞬間を表現する。さらに、星は誕生し、成長し、やがて死を迎える植物のように、その残骸が新たな惑星の材料となり、宇宙の無限のサイクルを繰り返すという生命的な解釈がなされている。

これらの詩的なアイデアを実際にコンピュータ上で動かすために、Pythonが利用された。シミュレーションの具体的な仕組みを見ていこう。コードは主にnumpyというライブラリを使って宇宙空間を「グリッド」として表現し、将来的にmatplotlibでその状態を画像として可視化することを目指している。

まず「誕生」のシミュレーションでは、宇宙の初期状態が設定される。grid_sizeで定義された正方形の空間(例えば50x50マス)が、私たちの宇宙の縮小モデルとなる。この空間は、valeur_energie_noire_de_baseという値で満たされており、これは宇宙全体に均等に存在するダークエネルギーの「ポテンシャル」を表している。この状態が「高い潜在的なダークエネルギーを持つ宇宙の創生」である。次に、nombre_particules_matiereで指定された数の「物質粒子」が、このグリッド上にランダムに配置される。これらの粒子は、それぞれforceという値を持っており、グリッド上の特定の場所からダークエネルギーのポテンシャルを「減算」、つまり消費し始める。

シミュレーションは時間の経過とともに進み、各時間ステップで、物質粒子がダークエネルギーを消費した結果、グリッド上の各点のダークエネルギーポテンシャルが更新される。そして、もしある点のダークエネルギーポテンシャルがvaleur_energie_noire_de_baseからforce_de_lumiereで示される特定の閾値以下に低下すると、その地点で「星が誕生した」と判定される。「POUF CHOCAPIC!」というメッセージとともに、星が生まれた座標と、消費されたダークエネルギー量に相当する「質量」が出力される。このプロセスは、星が一つ生まれるまで、あるいは設定された時間ステップ(ここでは100ステップ)が経過するまで繰り返される。この部分のコードでは、numpy.fullで初期グリッドを作成し、random.randintで物質粒子の位置を決め、ループ内でnouvelle_grille[p['pos'][0], p['pos'][1]] -= p['force']のようにダークエネルギーを減算しているのがポイントだ。星の誕生条件はif nouvelle_grille[y, x] <= (valeur_energie_noire_de_base - force_de_lumiere):で表現されている。

次に、星の「死」のシミュレーションが続く。これは、誕生した星が時間の経過とともに質量を失い、最終的にどのような姿になるかをモデル化するものだ。初期のetoile_masse(星の質量)が設定され、星はwhile etoile_masse > masse_critique:というループの中で、ランダムなperte_masse(質量損失)によって徐々に質量を減らしていく。これは星が燃料を消費し、輝き続ける過程を表している。

星の質量がmasse_critique(臨界質量)を下回ると、その星の寿命が尽きたと判断される。そして、その時の質量がnaine_blanche_seuil(白色矮星の閾値)、etoile_neutrons_seuil(中性子星の閾値)といった、あらかじめ設定された閾値と比較され、最終的な形態が決定される。質量が非常に小さければ「白色矮星」、中程度の質量なら「中性子星」、そして最も重い場合は「ブラックホール」になるとされている。このようにして、星の壮絶な一生が終わる様子がシミュレーションされる。

最後に、これらの「誕生」と「死」のプロセスを組み合わせ、「宇宙の完全なサイクル」として表現するシミュレーションが紹介されている。ここでは、星の質量を減少させるvie_etoile関数と、最終的な形態を判定するmort_stellaire関数が定義され、これらを利用して一連のサイクルがより効率的に実行される。まず「誕生」フェーズが実行され、星が生まれたら、その星のetoile_masseを引数として「死」フェーズが開始される。vie_etoile関数が質量を少しずつ減らし、mort_stellaire関数が最終的な運命を決定する。これにより、一つの星が生まれ、生き、そして死んで、その残骸が次の創造の源となるという、宇宙の永遠のサイクルがコード上で再現される。

このプロジェクトは、科学的な厳密さよりも、詩的な発想や直感的なアナロジーを重視しているが、その中でPythonのnumpyによる数値計算や配列操作、randomによる確率的なイベントの表現、そしてループ構造や条件分岐によるロジックの構築といった、プログラミングの基本的な要素が活用されている。システムエンジニアを目指す初心者にとって、このようなプロジェクトは、プログラミングが単なるツールの操作にとどまらず、複雑な概念や想像力を具体的な形にするための強力な手段であることを示してくれるだろう。宇宙の神秘をコードで表現するという体験は、プログラミング学習の大きなモチベーションになるはずだ。

関連コンテンツ

【ITニュース解説】Créer un Univers avec Python : Une Simulation Inspirée par la Poésie et le Cosmos | いっしー@Webエンジニア