TAM・SAM・SOM計算ツール
大まかな市場規模を、事業計画に使える具体的な推計へ変換できます。総アドレス可能市場、実際に対応できる割合、その対応可能市場から現実的に獲得できる割合をご入力ください。元の数値と同じ通貨または単位でTAM・SAM・SOMを返します。透明性の高い2段階の計算なので、事業計画、投資家向け資料、社内予測で結果を確認し、説明し、再現しやすくなります。
無料で実行
根拠を示せる総アドレス可能市場から始めます
TAMは、関連するすべての買い手が製品やサービスを購入できる場合の需要全体を表します。年間売上機会、契約数、取引量など、意思決定に合った明確な単位の数値をご用意ください。境界のない大きな数字は評価しにくいため、推計には対象期間、地域、顧客区分、情報源も併記することをお勧めします。この計算ツール自体はTAMを調査するものではなく、既存のTAM仮説をより具体的な市場区分へ変換します。入力前に、異なる期間や単位が混在していないかご確認ください。たとえば、ある区分の月間支出と別の区分の年間支出を合算してはいけません。金額を入力した場合、結果も同じ通貨になりますが、顧客数、ライセンス数、注文数、物理的な数量にも対応するため、通貨記号は自動付与しません。TAMを丁寧に定義すると、後続の各割合の分母が明確になり、調査内容が変わった際の更新も容易になります。
TAMから実際に対応できる市場を算出します
対応可能割合は、現在の製品と事業運営の範囲に合うTAMの部分を示します。製品の互換性、対応言語、規制、流通網、顧客規模、技術要件、販売可能地域などを反映できます。本ツールはTAMにこの割合を掛けてSAMを算出します。対応可能割合が30の場合、総市場の10分の3が現在の事業範囲に含まれるという意味であり、その需要をすべて獲得できるという意味ではありません。可能であれば、明確な除外条件から割合を組み立ててください。市場調査が全企業を対象としていても、製品が特定の業種や企業規模にしか対応しない場合は、非対応の区分を除外し、残る割合を記録します。仮説はゼロから100の範囲にしてください。対応可能な部分集合が総市場を上回ることはないため、100を超える値はエラーになります。不確実性が大きい場合は、保守的、標準的、積極的な複数のシナリオを比較すると、SAMが仮説にどれほど左右されるか把握できます。
仮説を明示して獲得可能な割合を見積もります
獲得可能割合はTAMへ直接ではなく、SAMへ適用します。この2段階目で、提示した計画により現実的に獲得できる対応可能市場の部分、すなわちSOMを算出します。営業体制、想定成約率、競争の激しさ、顧客集中度、販売経路、継続率、対象期間などの根拠に基づいて割合を設定してください。この仮説は、対応できる買い手のうち、自社チームが獲得して継続支援できる割合はどれほどか、という実務的な問いに答えるものです。SOMはSAMに獲得可能割合を掛けるため、その割合がゼロから100の範囲ならSAMを超えません。特に収益予測へSOMを使う場合は、TAM、SAM、SOMの対象期間を揃えてください。結果は入力単位を維持するため、隠れた換算なしでモデルへ転記できます。この計算は予言ではなく構造化したシナリオとして扱い、価格、地域、製品範囲、販売能力が変わるたびに各仮説を見直すことをお勧めします。
活用例
投資家向けの市場ファネルを作成
出典のあるTAMから、投資資料や説明資料に使える一貫したSAMとSOMを算出できます。
市場投入シナリオを比較
総市場の仮説を固定したまま、対応地域や獲得可能割合を変えて比較できます。
計画の仮説を記録
製品、営業、財務の各チームが同じ計算方法で再現できる市場推計を作成できます。
よくある質問
SAMとSOMはどのように計算しますか?
TAMに対応可能割合を掛けてSAMを算出し、次にSAMへ獲得可能割合を掛けてSOMを算出します。
獲得可能割合はTAMとSAMのどちらに適用しますか?
SAMに適用します。これにより、SOMは事業が実際に対応できる市場の現実的な部分になります。
割合は100を超えてもよいですか?
いいえ。対応可能割合または獲得可能割合が100を超えると、入力エラーを返します。
どの通貨で計算されますか?
TAMの単位をそのまま使用します。ドル、ユーロ、顧客数、個数のいずれでも、SAMとSOMは同じ単位になります。
APIでの計算料金はいくらですか?
APIリクエスト1回につき$0.002です。同じ決定論的な計算をブラウザーでも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/biz/market-size-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"tam":500000000,"serviceable_percentage":30,"obtainable_percentage":8}'const res = await fetch("https://api.kit.forhosting.com/biz/market-size-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"tam": 500000000,
"serviceable_percentage": 30,
"obtainable_percentage": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/market-size-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"tam": 500000000,
"serviceable_percentage": 30,
"obtainable_percentage": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/market-size-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"tam":500000000,"serviceable_percentage":30,"obtainable_percentage":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"tam":500000000,"serviceable_percentage":30,"obtainable_percentage":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/market-size-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"tam": 500000000,
"serviceable_percentage": 30,
"obtainable_percentage": 8
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.market_size_estimate",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |