このページは、TOMORI が室温の目安をどう計算し、どこまで確からしいと考えているかを公開するものです。モデルを変えたときは、このページも同時に更新します。
1. 何を計算しているか
TOMORI の室温目安は、建物を「ひとつの熱のかたまり」とみなす単一ゾーンの RC 一次系モデルで計算しています。外の気温と日射から求めた実効外気温に、その建物の時定数 τ(外気の変化にどれくらいの速さで追従するか)を当てて、1時間刻みで室温を積分します。機械学習は使っていません。建築環境工学で確立した手法です。
積分は区間内線形(一次ホールド)で行っています。以前は階段近似(明示オイラー法)を使っていましたが、日変動する入力で解析解と最大 0.27℃ ずれることがわかったため、2026-08-05 に変更しました。現在の最大誤差は 0.012℃ です。
2. 何を入力にしているか
時刻の扱いは EnergyPlus Weather(EPW)の規約に合わせています。気温のような状態量はその時刻の瞬時値、日射量のような積算量は直前1時間の積算=区間の中点の代表値として扱います。
3. 準拠している規格・文献
- ISO 13790 / ISO 52016-1 系の軽量な動的熱モデル(5R1C)
- EnergyPlus Weather(EPW)の時刻規約
- Ångström–Prescott 式(日照時間→日射)、Kasten–Czeplak 式(雲量→日射)
- WHO Housing and Health Guidelines (2018)
4. モデル全体の検証結果
2026-08-16 に、札幌・2019年通年(8,760時間)で、構造の異なる3棟(木造 τ=8.0h/鉄骨 τ=13.5h/RC・SRC τ=51.2h)に対して、日射の与え方だけを変えた4系列で検証しました。中心値の絶対誤差の中央値は、最も悪い系列(日射を諦めた縮退)で 0.633℃、日照時間から推定した系列で 0.084℃ でした。全12ケースが合格ライン ±3℃ と参考基準 ±2℃ の両方を通過しています。
ただしこれはモデル構造が破綻していないことの確認であって、あなたの家の目安がこの精度で当たるという意味ではありません。 検証は3棟・1地域・1年ぶんです。
5. 既知の限界
- 家ごとの較正はまだ動いていません。 実測が貯まった家について、その家専用に係数を補正する仕組み(家ごと較正)は設計済みですが未実装です。したがって現在の表示はすべて「未較正」であり、誤差はあなたの家について検証されていません。表示しているバンド(±3℃)は未較正時の保守的な既定値です。
- 築年が不明の建物。 築年が不明の建物は、その市の住宅・土地統計調査の築年の分布(出典:政府統計の総合窓口(e-Stat)・令和5年 住宅・土地統計調査 第6-3表・第7-1表・加工)を使って幅を出しています。築年ごとの目安をその市の住宅の割合で混ぜ、中央値を出し、ばらつきの分だけ幅を広げます(幅が狭くなることはありません)。
- 係数の照合(SWH)。 係数の根拠づけに、国土交通省の公表資料(社会資本整備審議会資料「住宅の温熱環境と健康の関連」・スマートウェルネス住宅等推進調査・2014〜2018年度)に数字で書かれている室温の集計を照合に使っています。係数はまだ置き換えていません(精度の集計と並べて確かめてから)。
- 建物の外気。 建物の外気は最寄り3観測点の距離加重に標高差(−0.6℃/100m)を補正した値です(いまは建物の地盤高を持っていないため、標高の補正はかけていません)。標高と天空率は同じ 3D 都市モデルから取る予定で、天空率は計算に使いません。基準点のページは観測点そのものの値のままです。
- 幅は直近30日の採点から。 「いまの目安」の幅は、同じ型(築年帯×構造)と同じ観測点について、前日に立てた見込みの外気を入れた室温と実況を入れた室温の差(23時)の絶対値の90パーセンタイルを、観測点の月の記録(
/diary/{観測点}/{年-月})から取り、±1.5℃〜±3℃に収めたものです。採点が7日分に満たない型・観測点は ±3℃ のままです。この幅は家ごとの実測との誤差ではありません(未較正のまま)。
- 係数テーブルの値は暫定です。 時定数 τ と日射の温度換算値は標準的な文献値から生成した初期値で、実測による調整はこれからです。
- 在室者や家電の発熱は 0 として扱っています。留守・無人を前提とした見守り用途に寄せた保守的な仮定です。
- 隣の建物による日射のさえぎり(天空率)は、まだ計算に入れていません。
- 検証は札幌の1年ぶんです。他の気候区分・他の年での確からしさは検証していません。
- 建物属性は利用者の申告であり、TOMORI は正しさを検証していません。
6. 誤差指標の算出方法
画面に出す「較正点 n 件・誤差 ±X℃」は、その家の実測と、同じ時刻に対する推定との差から求めます。n はその家の較正に使えた実測の点数、X は差の絶対値の中央値です。外れ値(窓開け・来客など)は中央値と MAD で除いてから計算します。
家ごと較正が未実装のあいだ n は 0 であり、その場合は「未較正・誤差未検証」と表示します。 数字が出せないときに、それらしい数字を作って出すことはしません。
7. 集計(同条件の中央値)の作り方
同条件の中央値は、実測(observed)だけで作ります。種火(seed)と推定(predicted)は算入しません。公開するセルは、記録が 10 件以上あり、かつ異なる物件が 5 件以上あるものに限ります。満たさないときは、より広い範囲のセルへ繰り上げ、それでも満たさなければ公開しません。公開する中央値は 0.5℃ 単位に丸めます。内部では丸めずに保持しています。
記録の時刻は、見た時刻を変えた記録では見た時刻、それ以外では記録した時刻です。見た時刻の欄は 2026-09-29 から加えました。それより前の記録は記録した時刻のままです。
手入力の室温は実測の集計に入れない。
答えの数は1人1日1回。
人の事象ログ(手入力の室温・2件目以降の答え・ひとこと)は集計・較正・公開に使わない。
部屋の公開は本人が部屋ごとに決める(既定は非公開)。
暖房率は登録住戸を自治体で数えた答えの数から出す。
通知は変化の日だけ・本文は問いのみ。
8. 推定値への異議
このページに書いた方法で計算した推定値について異議がある場合は、
利用規約 第19条第2項の連絡先で受け付けます。対象の建物または地域と、異議の理由(実測値をお持ちの場合はその値)をお知らせください。
8-2. 建物単位の表示停止(オプトアウト)と推定値への異議
この建物の所有者・管理者の方は、推定値への異議を申し立てることができます。また、この建物の推定値の個別表示を停止(オプトアウト)することができます。停止しても、地域の集計値からこの建物が取り除かれるわけではありません。所有・管理の確認方法と、いただいた申し出の件数・対応結果の公表については、下記の連絡先へお問い合わせください。
9. 記録が後から書き換えられていないことの確かめ方
TOMORI は毎日1回、その日に書いた記録すべてをひとつの値(ルート)に畳み、外部の公開リポジトリ
tomori-anchor-bot/tomori-anchors に刻んでいます。刻んだ後で記録を書き換えると、再計算したルートが刻まれた値と合わなくなります。第三者が自分で計算して確かめられることが、この仕組みの目的です。
2026-09-10 ぶんの記録から刻んでいます。それ以前のぶんは刻んでいません。刻む対象は、建物日記(観測点・基準点ごとの日次の行)、証拠として預かった記録(evidence/)、建物のページに載せた騒音の行(noise/)、住人の方の記録(obs/・course/)、レビュー(review/)と入居の確認(review_verification/)、建物のページに載せた場所の報告(place_report/)・スレッドの行(thread_entry/)・一言(utterance/)です。住人の方の記録・レビュー・入居の確認は 2026-09-29 から、場所の報告・スレッドの行・一言は 2026-10-07 から加えました。その日より前に書かれたものは、その日の木にまとめて入れています(その日に存在したことの証明であり、書かれた日の証明ではありません)。場所の報告・スレッドの行・一言の葉には、書いたときから変わらない欄だけを入れます(本文はその SHA-256 で代え、状態・「同じのを見た」の人数・写真の公開の有無などの後から変わる欄は入れません)。
刻むのはルートだけです。記録そのもの・観測点の番号・記録した方に関わる情報は、いっさい外部に置いていません。ファイル anchors/年/月/日.txt の中身は空白区切りの1行で、順に「日付・ルート・畳んだ記録の件数・モデル版」です。一度刻んだ日のファイルは上書きしません。
ルートは次の手順で再計算できます。
- 記録1件を JSON にする。キーは辞書順に並べ、
as_of・written_at・content_hash の3つは含めない。
- その JSON の SHA-256 を求める(これがその記録のハッシュ)。
- その日のすべての記録について同じことをし、記録の保存先パスの辞書順に並べる。
- 隣り合う2つのハッシュを連結して SHA-256 を求める。件数が奇数のときは最後の1つを複製して対にする。
- 値が1つになるまで前の手順を繰り返す。残った値がルート。
得られた値が anchors/年/月/日.txt の2番目の値と一致すれば、その日の記録は刻んだ時点から変わっていません。刻む操作は GitHub 上の署名付きコミットとして残るため、刻んだ日時もあわせて確認できます。
刻んだ元の記録そのものは、観測点ごと・1日ごとに
/diary/{観測点番号}/{年-月-日} で読めます(例:
/diary/14163/2026-09-10)。ブラウザで開くと表示用のページを、プログラムから読むと同じ中身の JSON を返します。このページに出ている値のハッシュが、上の葉の一覧の中の同じ行と一致します。
住人の方の記録・レビュー・入居の確認の葉は、パスにも内容ハッシュにも、記録した方と物件を表す情報(利用者の番号・物件の番号・建物の番号・写真の保存場所)を入れていません。レビューの証拠の参照は、1件ずつ SHA-256 にしてから入れます。パスは「文書の番号」と「内容の JSON」を改行1つでつないだものの SHA-256 です。番号を知っていても、記録の中身を持たない人にはパスを作れません。ご自身の記録であれば、同じ欄から内容の JSON を作り、パスと内容ハッシュの2つを求めて、その日の一覧に同じ組があることを確かめられます。
上の手順で並べる「その日のすべての記録」の一覧は、
/diary/anchor/{年-月-日}.json で読めます(例:
/diary/anchor/2026-09-18.json)。返るのは保存先パスと SHA-256 だけで、記録の中身の値は1つも含みません。
content_hash はその記録そのもののハッシュを指す名前で、記録の入れ子の中には現れません。ある記録が材料として読んだ別の記録を名指しするときは、material_hash という別の名前で持ちます。こちらは上の手順で落とす3つに入らないため、材料の名指しもハッシュに含まれます=名指しを書き換えればハッシュが変わり、刻んだ値と合わなくなります。ただし 2026-09-19 ぶんの自治体の基準点の記録(モデル版 diary-3)だけは、材料の名指しを content_hash の名前で持っており、その日のハッシュには含まれていません(翌日 2026-09-20 ぶんから是正しています)。刻んだ記録は後から書き換えないため、その67件はそのまま残しています。読み取り経路(/baseline/**)が返す JSON では、この日のぶんも同じ material_hash の名前で返します(値は同じものです)。
8-3. 建物のページの値について
暖房のない部屋の、いまの目安(洗面所・脱衣所・廊下・トイレなど)
いまの外気(アメダス実況)と、建物の構造・築年から推定しています。暖房や冷房を入れている部屋には当てはまりません。
外気=気象庁アメダス({観測点}・{時刻} 時点)
この建物について分かっていること/温度と、まわりの条件
公的データと、構造・築年からの推定です。人がいない期間の実測がある場合は、実測と明記して並べます。
住んでいる人が選んだこと
この建物に住んでいる方・住んでいた方が、季節ごとに選んだ記録の集計です。書かれた文章は含みません。
住んでいた人の記録
退去された方がフォームから投稿した本文です。原文のまま、引用符をつけて掲載しています。
温度の性質(この建物・推定)
構造と築年からの推定です。部屋の位置・窓・向きは含まれていません。
まわりの建物
公的な建物データから機械的に算出しています。窓の位置や地形は含まれていません。
暖房のある部屋の、冬の平均
全国の住宅で実際に測られた冬の平均(在室時)です。この建物の値でも、この地域の値でもありません。
耐震
- 新耐震(1981年6月以降)=新耐震基準の時期に建てられた建物です(築年:{築年}年・推定)。
耐震診断や改修の実施状況は物件により異なります。詳しくは物件の耐震診断歴をご確認いただくか、お住まいの自治体の耐震診断制度窓口へお問い合わせください。
- 旧耐震(1981年5月以前)=旧耐震基準の時期に建てられた建物です(築年帯:推定)。
旧耐震基準の時期に建てられた建物でも、その後の耐震診断や改修によって状況は物件ごとに異なります。耐震診断制度や自治体の補助制度の対象になる場合があります。詳しくはお住まいの自治体窓口へお問い合わせください。
- 2000年基準・木造(2000年6月以降)=2000年基準(木造)の時期に建てられた建物です(築年:{築年}年・推定)。
- 世代判定不能(1981〜1984年築)=建築時期から耐震基準の世代を判別できない期間の建物です(築年:{築年}年)。
この時期は建築確認日によって新耐震基準か旧耐震基準かが分かれるため、竣工年だけでは判定できません。耐震診断歴があれば、より確実な情報が得られます。
詳しくは物件の耐震診断歴をご確認いただくか、お住まいの自治体の耐震診断制度窓口へお問い合わせください。
※ 建築確認日が不明なため、築年からの推定です。
8-4. 平年の目安(市×型×月)
/normal/{団体コード}/{型}/{月} の値は、自治体の基準点の観測点の日別平年値(気象庁・1991〜2020年)から計算した、暖房のない部屋の平年の目安です。実測ではなく推定で、実測との照合を経ていません(±3℃)。
- 外気の24時間:日別平年の最低を6時、最高を15時に置き、その間を余弦でつなぎます(最高から翌日の最低へも同じ)。最低・最高が無い日は、平均に月の日較差の平年の半分を足し引きします。
- 室温:日記と同じ式(1R1C・係数は /data/coefficients/index.json)に、その型(築年帯×構造)・南向き・窓は構造の代表値で通します。日射は、日別平年の日照時間をその日の可照時間で割った日照率から、実況と同じ式(Ångström–Prescott)で毎時の値にします。日照時間の平年が無い日は、晴天の既定の割合で扱います。
- 観測点:気象台に加えアメダスの観測点も使います。アメダスの平年値は、1991〜2020年のうち観測のある年から気象庁が求めたものです(統計期間は各ページの出典に載せています)。
- 月の値:各日の室内の最低の中央値と最高の中央値を、整数に丸めたものです。月の最後の7日を前に付けて助走し、その7日は数えません。
9-2. 引用の作法と、この日記の使い方
公開している日記は CC BY 4.0 です。出典を示していただければ、複製・改変・再配布・商用利用ができます。帰属の書き方の例:TOMORI|室温予報(https://tomori-map.com/), CC BY 4.0。改変してお使いになる場合は、その旨も併記してください。
引くときは 1つの主語・1つの日・1回 です。観測点は /diary/{観測点番号}/{年-月-日}、自治体の基準点は /baseline/{団体コード}/{年-月-日}(1か月ぶんは /baseline/{団体コード}/{年-月})。Accept: text/html で開けば表示用のページを、Accept: application/json で読めば同じ中身の JSON を返します。どちらも同じ住所で、住所は後から変えません。
どの主語に、いつからいつまでの記録が在るかは
/diary/index.json にまとめてあります。一覧と日付の範囲だけで、値は1つも含みません。日付と件数だけの短い一枚は
/status.json です。
応答の形は
schema_version で版を名乗り、
schema_uri がその版の定義を指します(例:
/schema/diary-public-day.v2.json)。各行の
identifiers は外部の識別子(アメダス観測点番号・団体コード・JIS 市区町村コード)で、読む側が自分の持っているデータと突き合わせるためのものです。計算に使っている係数の表そのものは
/data/coefficients/index.json から版ごとに読めます。
現在の値は仮値であり、実測との照合を経ていません。古い版も消さずに残します。
2026-10 から heated_count は暖房のみ・cooled_count を追加。
ある1行が刻んだ時点から変わっていないことは、次の順で確かめられます。
/diary/{観測点番号}/{年-月-日} を読み、その行の content_hash を見る。
/diary/anchor/{年-月-日}.json を読み、leaves の中に同じ path と同じ content_hash があることを見る。
- 同じ
leaves から、9節の手順でルートを再計算する。
- その値が tomori-anchor-bot/tomori-anchors の
anchors/年/月/日.txt の2番目の値と一致することを見る。
この4つをそのまま実行するスクリプトを同梱しています。資格情報は要りません。npx tsx scripts/verify-diary-leaf.ts --date 2026-09-18 --station 14163
まとめて全部を取り出す経路は用意していません。1つの主語・1つの日で引いてください。
9-3. もう1つの時刻の証明(任意)
ここは読まなくても構いません。記録が書き換えられていないことを確かめるには、9節と 9-2節の手順(curl で1行読む)で足ります。この節は、それとは別の筋道でも確かめたい方のための任意の追加です。
アンカーの公開リポジトリには、anchors/年/月/日.txt の隣に同じ名前の anchors/年/月/日.txt.ots を置いています。これは OpenTimestamps という仕組みの時刻証明で、その .txt の1行が、Bitcoin のあるブロックの時刻より前に存在していたことを示します。刻む場所を増やしたのではなく、GitHub に刻んだ1行に、GitHub とは無関係のもう1つの時刻の証明を付けたものです。記録そのものは、ここでも外部に置いていません。
この .ots を読むには専用の道具が要ります。pip install opentimestamps-client で入れたうえで、ots info anchors/2026/09/19.txt.ots で状態を見て、ots verify anchors/2026/09/19.txt.ots で .txt と突き合わせます。検証には Bitcoin Core が要ります(全履歴を保持しない pruned ノードで足ります)。ノードを持たずに外部のブロックエクスプローラへ尋ねることもできますが、その場合は尋ねた相手を信じることになります。
刻んだ直後の .ots はまだ Bitcoin に入っていません。確定前は ots info が pending と表示します。ブロックに取り込まれるまで数時間から数日かかり、取り込まれた後で .ots の中身を証明の完成した形へ差し替えます(週1回)。中身が変わるのはこの1回だけで、その後は変わりません。.txt のほうは、9節に書いたとおり一度刻んだ日のファイルを上書きしません。
9-4. 推定の精度(型ごと)
温度計の写真(L1)を撮った住戸について、その日の実測と、公開面と同じ未較正の推定(撮影した時刻の値)との差を型(築年帯×構造)ごとに集計しています。暖房・冷房を使っていない日(Natural)と使った日(Human)は別に集計し、答えの無い日は数値に入れず除外率にだけ数えます。建物が5棟以上かつ Natural の観測が10件以上の型だけを公表します。毎月1日に更新します。元のデータは
/methodology/accuracy.json です。JSON の
mean_c は符号つきの平均の差(実測 − 推定・正なら推定が低め)、
n・
sum_r・
sum_r2 はその点数と差の和・差の二乗の和で、推定の偏りを直すときの材料です(表には出していません)。
窓の種類・向き・所在階(1階/中間/最上階)は、実測が来るまでのつなぎの属性です。推定の計算には使っていません(窓・向きの係数は手置きで検証前・所在階は計算に入れていません)。JSON の by_attribute は、照合点の差を型の中でこれらの属性ごとに分けた小計で、実測が十分に集まったら差を割る軸にします(数え方の条件は型と同じです)。
| 型 | Natural 中央値 | Natural 平均 | Human 中央値 | Human 平均 | 建物 | 住戸 | 記録者 | センサー | 観測 | ICC | 除外率 |
まだ照合点がありません
差は絶対値(℃)です。記録者は住戸と同じ数として数えています(照合点に利用者の識別子を持たせていないため)。ICC は建物を群とする一元配置の級内相関で、建物ごとの偏りの大きさの目安です。
10. この文書の更新
モデル・入力データ源・集計方法を変更するときは、この文書を同時に改版し、版番号・日付・変更理由を残します。特定の物件や地域を狙った変更は行いません。
改版履歴:v1.8(2026-09-29)=住人の記録の葉のパスの作り方を改め(文書の番号と内容の JSON から作る)、確かめ方に証拠の参照と写真の保存場所の扱いを追記。v1.7(2026-09-29)=記録の時刻(見た時刻)を7節に追記。v1.6(2026-09-29)=刻む対象に住人の記録・レビュー・入居の確認を加え、証拠と騒音の行を明記。v1.5(2026-09-19)=材料の名指しの名前(material_hash)と、それがハッシュに含まれることを9節に追記。v1.4(2026-09-19)=アンカーへの2つめの時刻の証明(OpenTimestamps・9-3節)を追記。v1.3(2026-09-19)=基準点の日記の公開経路(/baseline/**)と引用の作法(9-2節)・葉の一覧の公開を追記。v1.2(2026-09-12)=観測点日記の公開経路(9節)を追記。v1.1(2026-09-10)=記録の改竄防止(9節)を追加。v1.0(2026-08-29)=初版。