【ITニュース解説】Proving God with JavaScript? A React & TypeScript Experiment
2025年09月13日に「Dev.to」が公開したITニュース「Proving God with JavaScript? A React & TypeScript Experiment」について初心者にもわかりやすく解説しています。
ITニュース概要
ReactとTypeScriptで開発された「GodSim」は、神の存在に関する哲学的な11の議論をコードでシミュレートするプロジェクトだ。論理構造をプログラミングで表現し、インタラクティブに試しながらWeb開発技術と哲学を探求できる。
ITニュース解説
GodSimというプロジェクトは、JavaScriptというプログラミング言語を使って、神の存在をめぐる哲学的な議論をコンピューター上でシミュレートするというユニークな試みだ。これは、哲学という抽象的な思考の世界と、コードという具体的な論理の世界を結びつけることで、新しい視点から物事を理解しようとするプロジェクトだと言える。システムエンジニアを目指す皆さんにとって、このプロジェクトは、単なるWebアプリケーション開発の技術だけでなく、複雑な概念を論理的に分解し、それをコードに落とし込むという、プログラミングの本質的な面白さと奥深さを教えてくれるだろう。
このGodSimの目的は、哲学的な深遠な概念を探求する一方で、現代のWeb開発技術を実践的に学ぶことにある。通常、哲学は書物や対話を通じて議論されるものだが、GodSimでは、それぞれの哲学的な「証明」が、プログラムのコードとして表現され、まるで実験のようにそのロジックを動かして結果を見ることができる。これにより、ユーザーは単に議論を読むだけでなく、実際にパラメータを変えてみたり、コードの裏側を覗いてみたりしながら、インタラクティブに学習を進められる。これは、プログラミングが単に実用的なツールであるだけでなく、思考の道具としても非常に強力であることを示している。
GodSimがどのように作られているかを見てみよう。使われている技術は、現代のWeb開発で非常に広く使われているものばかりだ。 まず、フロントエンド、つまりユーザーが直接触れる部分の見た目や動きを作るために「React(リアクト)」と「TypeScript(タイプスクリプト)」が使われている。Reactは、ウェブサイトを部品(コンポーネント)に分けて作り、効率的に開発を進めるためのJavaScriptライブラリだ。まるでレゴブロックを組み立てるように、小さな部品を組み合わせて大きなウェブページを作るイメージだ。TypeScriptは、JavaScriptに「型」の概念を導入したもので、これによりコードのミスを減らし、大規模な開発でも管理しやすくする。特に初心者にとっては、TypeScriptを使うことで、コードが意図した通りに動くかどうかの確認がしやすくなり、バグに悩まされることが少なくなるメリットがある。 デザイン面では、「MUI(エムユーアイ)」というコンポーネントライブラリが利用されている。これは、ボタンやフォームなど、ウェブサイトでよく使う部品があらかじめ用意されており、これらを使うことで統一感のある美しいデザインを素早く実現できる。 開発環境には「Vite(バイト)」が使われている。これは、開発中のウェブアプリケーションを素早く起動させたり、変更を即座に反映させたりするためのツールで、開発効率を大幅に向上させる。 コードスニペット(短いコードの断片)をウェブページ上で美しく表示するために、「react-syntax-highlighter(リアクト・シンタックスハイライター)」というライブラリが使われている。これにより、記事に書かれているコード例のように、色分けされた見やすい形でコードが提示される。 さらに、「CI/CD(シーアイシーディー)」という技術も導入されている。具体的には「GitHub Actions(ギットハブアクションズ)」が使われており、これはコードの変更があった際に、自動的にプログラムをテストしたり、ウェブサイトを公開したりする仕組みだ。これにより、開発者が手動で手間をかけることなく、常に最新のコードがウェブサイトに反映されるようになる。
GodSimの最も特徴的な機能は、11種類の異なる「神の存在証明」をシミュレートできることだ。例えば、「存在論的証明」は、神を「想像できる最も偉大な存在」と定義するならば、その神は概念上だけでなく現実にも存在しなければならない、という論理を立てる。GodSimでは、これをBeingというクラス(オブジェクトの設計図のようなもの)を使ってシミュレートする。existsInRealityというプロパティ(属性)を持ち、最初は「概念上の存在」であるgodが、最も偉大な存在であるmaximalBeingが「現実に存在する」ならば、godも「現実に存在する」とすることで、この哲学的な推論をコードで表現している。
「宇宙論的証明」は、すべての物事には原因があるのだから、原因の原因をたどっていくと、最終的には「最初の原因」である「原因のない原因」が存在するはずだ、と考える。これをGodSimでは、Causeというクラスで原因の連鎖を表現し、findFirstCauseという関数でその連鎖を遡っていき、最初の原因を見つけ出すシミュレーションを行う。depthというパラメータを調整することで、原因の連鎖の深さを変えて試せる点が面白い。
「微調整論証」は、宇宙の物理定数が、生命が存在するのに信じられないほど都合よく調整されていることから、意図的な「設計者」がいるのではないか、という考え方だ。GodSimでは、Math.random()という関数を使ってランダムな数値を生成し、宇宙が生命をサポートする確率が非常に低い場合に、多数の宇宙をシミュレートして、その中に生命をサポートする宇宙が偶然存在する確率を計算する。これは、確率論的な思考をコードで表現する好例だ。
他にも、「道徳論証」では、客観的な道徳の存在が、道徳の制定者としての神を必要とするという考えを、善悪を知るBeingクラスで表現する。また、「設計論証」や「美の論証」では、自然界の秩序や美しさが、知的な設計者の存在を示唆するという考えを、ランダムに生成されるパターンやスコア付けでシミュレートしている。これらの例からわかるように、抽象的な哲学の概念も、クラスや関数、条件分岐、ループといったプログラミングの基本的な要素を使って、論理的な流れとして表現できることが示されている。
GodSimは、単にコードの動く様子を見せるだけでなく、ユーザーがパラメータを調整して結果の変化を観察できるインタラクティブ性も提供する。これにより、それぞれの哲学的な議論の背景にある仮定や論理構造が、結果にどのように影響を与えるかを、実際に手を動かしながら学ぶことができる。これは、哲学的な思考実験を、プログラミングという形で「実行」しているとも言えるだろう。
このプロジェクトは、システムエンジニアを目指す初心者にとって、非常に多くの示唆を与えてくれる。それは、最新のWeb開発技術を実践的に学ぶ機会であるだけでなく、複雑な問題を小さな部品に分解し、それらを論理的に組み立てて解決するという、プログラミング的思考の訓練にもなるからだ。哲学という全く異なる分野の概念を、どのようにプログラミング言語の構造に落とし込むか、その工夫やアイデアは、皆さんが将来、様々なシステムを設計・開発する上で役立つ貴重な経験となるだろう。GodSimは、コードが単なる道具ではなく、人間の思考や探求を拡張する強力な媒体であることを教えてくれる、魅力的なプロジェクトだ。