非公式の解説ページです。ゲーム「80億分の1」の作者とは関係ありません。ゲーム本体は 1in8b.life で遊べます。

ゲーム解剖図鑑 / 2026年10月17日 調べ

80億分の1は、
何でできている?

「80億分の1」は、ブラウザで遊べる人生シミュレーションゲームです。今日生まれる赤ちゃんの一人になって、172か国の本物の統計の中で一生を送ります。このページでは、その中身を開けて、どんな技術で動いているのかを図と動きで説明します。プログラムの知識はいりません。

ゲームを開く(1in8b.life) 調べた版:v0.7.54 ベータ(日本語版)
本体のファイル
1個
大きさ
4.7MB
画像ファイル
0枚
外部の部品集
0個
収録した国
172か国
遊べる言語
6つ

ひとことで言うと

ぜんぶ1ファイル必要なものを1つのファイルに詰めたゲーム絵・音楽・ルール・データ・翻訳が、4.7MBのファイル1つに入っています。スマホで撮った写真1〜2枚くらいの大きさです。
素材ファイルなし絵も音楽も、プログラムがその場で作るドット絵は点を1つずつ打って描き、BGMはブラウザに入っているシンセサイザー機能で毎回演奏します。
あなたの端末で動く一生の計算は、スマホやパソコンの中でサーバーを使うのは、追悼の掲示板など、みんなと共有する機能と支払いだけです。
届け方

小分けにせず、まとめて1回で届ける

ふつうのWebゲームは、部品集(ライブラリ)・画像・音楽・データなどを、たくさんのファイルに分けて届けます。

80億分の1は、ゲーム本体を1つのファイル(4.7MB)にまとめて、最初に1回で届けます。届いたあとは、ほとんど通信せずに一生の最後まで遊べます。

あとから届くのは、文字の形のデータ(フォント)の小さなかけらだけです。くわしくは「文字」の章で説明します。

よくある作り部品ごとに何十回も届ける
サーバー あなたの
端末
80億分の1本体を1回で届ける
サーバー あなたの
端末
動く四角は、サーバーからあなたの端末へ届くファイルのイメージです。調査で1回プレイしたとき、画像・音楽・部品集のファイルは1つも届きませんでした。
中身

4.7MBの中身。いちばん大きいのは翻訳辞書

ファイルを開いて、何にどれだけ場所を使っているかを測りました。ゲームのルールと並んで大きいのが、日本語に置き換えるための辞書です。

作者は文章を韓国語で書いていて、韓国語の文字だけで約41万字あります。文庫本なら3〜4冊分の文章量です。

帯や項目を押すと説明が出ます。全体は4.67MBで、プログラムの中の名前をもとに分類した、おおよその内訳です。

1.58MB(34%) 翻訳辞書(日本語版)

韓国語の原文を日本語に置き換えるための辞書です。言語ごとに別のページがあり、それぞれに自分の言語の辞書が1冊ずつ入っています。

絵

絵は、プログラムが点を1つずつ打って描く

ゲームの場面は、横192×縦60ドットの小さな「画用紙」(キャンバスという機能)に描かれます。画像ファイルは使っていません。

「この位置にこの色の点」という命令を順番に実行して描き、最後に画面いっぱいまで拡大します。拡大するときににじませない設定にしているので、くっきりしたドット絵になります。

右の図で「ぼかして拡大」を押すと、この設定がないとどう見えるかを比べられます。

実際の大きさ
(64×24ドット)
打った点 0 回
説明のために作った64×24ドットの絵で、ゲームの絵ではありません。空、太陽、丘、地面、家、木、人の順に重ねて描きます。ゲームでは同じやり方で、横192×縦60ドットの場面を描いています。
音

BGMは、その場で作曲して演奏する

音楽ファイルもありません。ブラウザに最初から入っているシンセサイザー機能を使い、音の高さと長さをプログラムで決めて鳴らします。

曲を作るときは、人物の名前などをタネ(シード)にします。タネが同じなら、毎回まったく同じ曲になります。タネから決まった順番で数字を取り出す「合言葉つきのサイコロ」のような仕組みです。

右のデモで名前を変えると曲が変わり、同じ名前に戻すと同じ曲に戻ります。音が出るので音量に気をつけてください。

タネの番号:- 横が時間、縦が音の高さです。
仕組みを真似して作ったデモで、ゲームの曲そのものではありません。ゲームは同じ機能で、和音、メロディ、音量の調整までその場で組み立てています。
抽選

生まれる国は、本物の出生数の割合で決まる

最初の「生まれる」ボタンを押すと、国ごとの1年の出生数に比例した確率で、生まれる国が決まります。

インドに生まれる確率は17.6%です。日本は0.57%で、およそ176人に1人です。

右のボタンで、ゲームと同じ割合の抽選を試せます。何回で日本が出るか数えてみてください。

まだ生まれていません 帯の長さは、その国に生まれる確率の大きさです。
試した回数 0 回 / 日本が出た回数 0 回
割合はゲームの中のデータ(国連の推計がもと)から計算しました。上位10か国と日本以外は「その他161か国」にまとめています。
データ

172か国 × 32項目のデータ帳

国連・WHO・世界銀行の統計をもとにした数字が、ファイルの中に直接書き込まれています。データを取りに行く通信はありません。

病気や事故、進学、収入などの出来事が起きる確率は、生まれた国のこの数字で変わります。同じ日に生まれても、国によって一生の形が大きく変わるのはこのためです。

ゲーム内の国の統計表に出る20項目
年間出生数人口平均寿命(女性・男性)5歳未満死亡率1人あたりGDP所得のジニ係数都市人口農業従事者就学予測年数高等教育の就学率インターネット利用率合計特殊出生率妊産婦死亡率HIV有病率殺人発生率交通事故死亡喫煙率(男性・女性)医療費の自己負担18歳未満での結婚(女性)生活満足度
画面には出ず、計算の中で使う10項目
乳児死亡率マラリア紛争兵役自然災害宗教の構成人気のスポーツ名前の傾向よくある移住先地域

上の20項目は、ゲームのコードにある統計表の名前をそのまま使いました。下の10項目の名前は、コードでの使われ方から判断しました。平均寿命と喫煙率は男女別の値を持つので、元のデータは1か国あたり32項目です。

平均寿命棒の端=100年

アメリカ79.3年
インド72.0年
ナイジェリア54.5年

5歳までに亡くなる割合棒の端=12%

アメリカ0.65%
インド2.8%
ナイジェリア11.7%

1人あたりGDP(物価で補正)棒の端=8万ドル

アメリカ$74,352
インド$8,871
ナイジェリア$7,843

学校に通う年数の見込み棒の端=20年

アメリカ15.9年
インド13.0年
ナイジェリア10.5年
ゲームのファイルに入っている数字をそのまま使っています。4か国は例として選びました。
言葉

6つの言語は、1つの原文と辞書から

作者は、画面に出す文章を韓国語で書いています。その文章には「翻訳する」という目印がついていて、目印はプログラムの中に12,226か所あります。

日本語版では、文章を画面に出す直前に辞書を引いて、日本語に置き換えます。英語、繁体字中国語、ベトナム語、フランス語も同じ仕組みです。

言語ごとに専用のページ(/ja/、/en/ など)があり、それぞれのページに自分の言語の辞書だけが入っています。

作者が書いた原文(韓国語)두 살, 낯선 바깥
辞書を引く日本語版の辞書(1.58MB)
画面に出る文(日本語版)2歳、見知らぬ外の世界
2歳の場面の見出しを、各言語版のファイルから取り出して並べました。言語を選ぶと、自動の切り替えは止まります。
通信

ゲームは、あなたの端末の中で動いている

生まれてから亡くなるまでの計算は、すべてあなたのスマホやパソコンの中で行われます。セーブデータも、ブラウザの中にある保存場所に入ります。

インターネットの向こう側(サーバー)を使うのは、みんなと共有する機能だけです。たとえば、亡くなった人生を残す「追悼」の掲示板、投稿への反応、匿名のプレイ統計、それに有料機能の支払いです。

サーバー側の受付窓口(API)は24種類ありました。配信とこの窓口は Cloudflare、支払いは Stripe が担当しています。

あなたのスマホ・パソコン(ブラウザ)

ゲームの本体が動く場所

  • 一生の計算(確率・お金・健康)
  • ドット絵を描く・音楽を鳴らす
  • セーブ(ブラウザの保存場所)
  • 人生の動画・画像を作る
Cloudflare

配る・預かる

  • ゲームのファイルを配る
  • 追悼の掲示板・投稿・反応
  • 匿名のプレイ統計
Stripe

支払い

  • 有料機能「keep」の支払い(日本では480円)
端末から送るもの(投稿・反応・統計)サーバーから返るもの(掲示板の内容など)
統計は、ブラウザで「追跡しないで」の設定をしている人からは送らない作りになっています。
文字

文字の形は、568個に小分けして必要な分だけ

日本語の漢字や韓国語のハングルは種類がとても多く、文字の形のデータ(フォント)が大きくなります。

そこでフォントを568個のグループに分けておき、画面に出てくる文字が入ったグループだけを取りに行きます。調査でプレイを始めた時点で読み込まれていたのは55グループで、全体の約1割でした。

55グループを読み込み全体 568グループ
Hahmlet見出しの文字
IBM Plex Sans KR本文の文字
IBM Plex Mono数字・記号
マス1つが1グループです。光ったマスの数は実際の読み込み数で、どのマスが光るかは図のための配置です。
作り方

Claude で作られた痕跡

プログラムのいちばん最後に、window.claude.hot という名前を使う数行があります。これは、Claude が作ったページ(アーティファクト)を表示する画面のための仕組みです。

役割は「しおり」です。ページを作り直して新しい版に入れ替えるとき、遊んでいる途中の状態を挟んでおき、新しい版でもその続きから再開できるようにします。開発中に Claude へ修正を頼むたび、赤ちゃんからやり直さずに続きを確かめられたはずです。

公開中のサイトには window.claude がないので、この数行は何もせず、ゲームはふつうに始まります。Claude Code で作られたという話と一致しますが、どの Claude 製品を使ったかまではコードから決められません。

// 今の人生(S)と設定を「しおり」に挟む
if (window.claude && window.claude.hot && window.claude.hot.snapshot)
  window.claude.hot.snapshot(() => ({ S, prefs: UI.prefs }));

// しおりがあれば、そこからゲームを始める
if (window.claude && window.claude.hot && window.claude.hot.ready)
  window.claude.hot.ready(start);
else start(...);
修正を頼む作者が Claude に「この場面を直して」と頼む
新しい版に入れ替わる直したページが、表示中の画面に届く
しおりから再開34歳の途中なら、34歳の途中から続く
25,822行すべてが1つのファイル
0個外部の部品集(ライブラリ)
0行プログラム内のメモ書き(コメント)
コードは公開中のファイルからそのまま抜き出しました(説明のコメントだけこのページで足しています)。
守り

守りの設定と、小さな発見

このサイトは、自分のサイト以外から来たプログラムを動かさない設定(CSP)をしています。悪いプログラムが紛れ込んでも動かないようにするための鍵です。

調べている途中で、鍵が効きすぎている場面も見つかりました。

Cloudflare のアクセス解析が止まっているCloudflare が自動で差し込む解析用のプログラムまで、サイト自身の鍵で止められていました。ブラウザにはエラーが出ます。アクセスは自前の仕組みで数えているので、遊ぶぶんには影響ありません。
ホーム画面に置けるけれど、圏外では動かないスマホのホーム画面にアプリのように追加できます(PWA)。ただし、通信なしで動かすための仕組み(Service Worker)は入っていないので、最初の読み込みには通信が必要です。
セーブは28種類の項目と、過去の人生用の保存庫ブラウザの保存場所に28種類の項目を書き込み、これまでの人生は別の保存庫(IndexedDB)にしまいます。別の端末へ引っ越すときは、データを圧縮してコードにします。

このページの言い方と、技術の名前

自分で調べたいときや、エンジニアと話すときのための対応表です。

このページでの言い方技術の名前ゲームでの使い道
全部を1つのファイルに単一HTML(JS・CSSを埋め込み)ゲーム本体を1回で届ける
部品集を使わないVanilla JavaScript(フレームワークなし)React などを使わず、素の JavaScript で書く
画用紙Canvas 2D APIドット絵、世界地図、共有用カードを描く
にじませない拡大image-rendering: pixelated小さく描いた絵をくっきり拡大する
シンセサイザー機能Web Audio APIBGMをその場で作曲して演奏する
合言葉つきのサイコロシード付き疑似乱数(PRNG)同じタネから同じ曲や人生を再現する
翻訳の目印と辞書自作の多言語化(タグ付きテンプレート)韓国語の原文を6言語で表示する
文字の小分けWebフォントのサブセット化(unicode-range, woff2)必要な文字の形だけを読み込む
ブラウザの保存場所localStorage / IndexedDBセーブ、設定、過去の人生
データの圧縮CompressionStream(gzip)別の端末へ引っ越すためのコード
動画の書き出しMediaRecorder / captureStream人生の振り返り動画を作る
ホーム画面に置けるPWA(Web App Manifest)アプリのように起動する
配る・預かるCloudflare(配信と API)ファイル配信、追悼の掲示板、統計
支払いStripe(Link)有料機能「keep」
鍵Content Security Policy / HSTS外から来たプログラムを動かさない
しおりwindow.claude.hot開発中、更新しても続きから遊べる

確かめたことと、推測

ファイルと通信で確かめたこと

  • ゲーム本体は4.7MBの1ファイルで、外部の部品集は使っていない
  • 絵は Canvas に点を打って描き、画像ファイルは読み込まない
  • BGMは Web Audio でその場で作る
  • セーブはブラウザの中(localStorage と IndexedDB)
  • 配信と API は Cloudflare、支払いは Stripe
  • Claude の表示画面用の window.claude.hot が残っている

外からは分からず、推測にとどまること

  • API の裏側の仕組み。Cloudflare Workers などの可能性が高いが、データの保存先は分からない
  • 1ファイルにまとめる作業は、作者が自分で用意した仕組みで行っていると思われる(ファイル名の番号や鍵の計算が自動で入っている)
  • 開発に使った Claude の製品(Claude Code か、claude.ai か)