地球外文明の数を計算
年に1.5個の星が生まれ、すべての星に惑星があり、居住可能な惑星が0.4個、生命は可能な所すべて、知性0.1、通信0.2、存続1000年とすると、ドレイク方程式の答えは12文明です。7つの因子を変えて比べられます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 星形成率
- 1.5
- 惑星を持つ恒星の割合
- 1
- 居住可能な惑星
- 0.4
- 生命が生じる割合
- 1
- 知的生命が生じる割合
- 0.1
- 通信可能になる割合
- 0.2
- 文明の数
- 12
地球外文明計算機はドレイク方程式を評価します。恒星の形成、惑星、生命、技術に関する7つの因子を掛け合わせ、天の川銀河で現在検出可能な信号を発している可能性のある文明の数を推定します。ご入力いただくのは、恒星形成率、惑星を持つ恒星の割合、星系あたりの居住可能な惑星の平均数、生命・知性・通信が生まれる割合、そして通信文明の平均寿命です。結果は単一の数値 N で、ネットワーク呼び出しや乱数を用いない決定的な計算であるため、同じ7つの入力からは常に同じ推定値が得られます。
ドレイク方程式が推定するもの
天文学者フランク・ドレイクが1961年に提唱したこの方程式は、まだ経験的には答えられない問い、つまり技術文明がいくつ存在し得るかについて、構造化された考え方を提供します。未知のものを、比較的よく測定されている因子から深く推測的な因子まで、7つの因子の連鎖に分解します。
最初の因子 R* は銀河系で新しい恒星が形成される割合で、観測では年間およそ1〜3個とされています。fp(惑星を持つ恒星の割合で、現在では1に近いことが判明)と ne(生命を支え得る星系あたりの惑星数)を掛けることで、その恒星の生成は居住可能な世界の供給へと変換されます。
続く因子 fl、fi、fc は、生命がどのくらいの頻度で現れ、どのくらいの頻度で知的になり、どのくらいの頻度で検出可能な技術を築くかを問います。最後に、通信文明の寿命 L が生成率をある時点の個体数へと変換します。
このツールは、ご入力いただいた7つの数値で、N = R* × fp × ne × fl × fi × fc × L という掛け算を正確に実行します。
7つの因子の選び方
この方程式の価値は、得られる数値そのものよりも、各因子が強いる議論にあります。天文学は最初の3つの因子をかなりよく制約しています。ケプラーなどの系外惑星探査により、惑星は一般的であり、かなりの割合の恒星がハビタブルゾーンに少なくとも1つの世界を持つことが示されました。
したがって fp を1に近く、ne をおよそ0.1〜0.4とするのは妥当な入力です。生物学的な因子 fl と fi は制約がありません。地球では生命が急速に現れましたが、これを fl が高い証拠と読む人もいる一方、標本が1つでは問題を決着できません。
知性と通信技術についても同様に未解決です。最も敏感な因子は通信文明の平均寿命 L で、直接の乗数として入り、数百年から数百万年までのもっともらしい値を取り得ます。1万年間送信し続ける文明は、千年で沈黙する文明より N を10倍大きくします。
楽観的な値と悲観的な値のセットを試して結果を比較してください。その幅こそが正直な答えです。
計算機の仕組み
この機能は純粋で決定的な計算です。7つの因子がすべて存在すること、それぞれが有限の数値であること、そして負でないことを検証します。負の率や割合には物理的意味がないためです。
ネットワークアクセスも乱数も時計も関与せず、入力内容が保存されることもありません。教育、科学ライティング、シナリオ比較、あるいはフェルミのパラドックスと地球外知性探査に関するワークショップの定量的な核としてご利用ください。
活用例
授業でドレイク方程式を教える
学生に楽観的・悲観的な因子セットを入力させ、推定値が一握りから数百万の文明までどう変動するかを確かめられます。
科学記事のファクトチェック
著者が仮定したのと同じ7つの因子を入力し、科学記事に引用された推定値を再現します。
フェルミのパラドックスのシナリオ比較
大いなる沈黙に関する競合する仮説について、それぞれが fl、fi、fc、L をどう変えるかを定量化して評価します。
よくある質問
結果の数値は何を意味しますか?
ご入力いただいた因子をもとに、天の川銀河で現在検出可能な信号を発している文明の推定数 N です。測定値ではなく推定値です。
因子をゼロにできますか?
はい。 どの因子にもゼロを指定でき、その場合は単純に文明数ゼロになります。
割合の因子は0から1の間である必要がありますか?
物理的にはそうあるべきですが、極端なシナリオをモデル化できるよう、計算機は任意の非負の値を受け付けます。fp、fl、fi、fc で1を超える値の正当性は、ご自身でご説明ください。
入力内容はどこかに保存されますか?
いいえ。 計算はステートレスで、7つの数値は掛け合わされた後に破棄され、結果のみが返されます。
なぜ同じ入力が同じ出力を保証するのですか?
計算が完全に決定的だからです。固定された因子の順序、小数点以下6桁への丸めが行われ、処理のどこにも乱数・時計・ネットワークが関与しません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/phys/alien-civilization \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"star_formation_rate":1.5,"planet_fraction":1,"habitable_planets":0.4,"life_fraction":1,"intelligence_fraction":0.1,"communication_fraction":0.2,"civilization_lifetime":1000}'const res = await fetch("https://api.kit.forhosting.com/phys/alien-civilization", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"star_formation_rate": 1.5,
"planet_fraction": 1,
"habitable_planets": 0.4,
"life_fraction": 1,
"intelligence_fraction": 0.1,
"communication_fraction": 0.2,
"civilization_lifetime": 1000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/alien-civilization",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"star_formation_rate": 1.5,
"planet_fraction": 1,
"habitable_planets": 0.4,
"life_fraction": 1,
"intelligence_fraction": 0.1,
"communication_fraction": 0.2,
"civilization_lifetime": 1000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/alien-civilization", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"star_formation_rate":1.5,"planet_fraction":1,"habitable_planets":0.4,"life_fraction":1,"intelligence_fraction":0.1,"communication_fraction":0.2,"civilization_lifetime":1000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"star_formation_rate":1.5,"planet_fraction":1,"habitable_planets":0.4,"life_fraction":1,"intelligence_fraction":0.1,"communication_fraction":0.2,"civilization_lifetime":1000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/alien-civilization", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"star_formation_rate": 1.5,
"planet_fraction": 1,
"habitable_planets": 0.4,
"life_fraction": 1,
"intelligence_fraction": 0.1,
"communication_fraction": 0.2,
"civilization_lifetime": 1000
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.alien_civilization",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
計算機の仕組み
違反がある場合は、原因となったフィールド名を示す型付きの invalid_input エラーを返し、そのリクエストは課金されません。データがリクエストの外に出ることはありません。無料の Web 版はブラウザ内でまったく同じモジュールを実行するため、フォームに貼り付けて表示される結果は、有料の API 呼び出しが返すものと同じです。
技術的な質問
料金はいくらですか?
API 経由では1リクエスト $0.002 です。このページのブラウザ上でも同一の結果で無料で実行できます。