2026 年 4 月 15 日、最初のコミットを置きました。題は「Workspace setup」。それから半年で、コミットは 3,500 近くになりました。10 月 17 日、ortho-earth は第 2 版、2.0 になりました。節目なので、ここまでの道のりを一度振り返っておきます。
春:見えない半分から
4 月は初代の地図 ortho-map から始めましたが、5 月と 6 月に力を注いだのは、地図そのものではなく、地図の下に敷く層でした。地理データを図形のまま運ぶ入れ物 GeoPBF と、その図形を GPU が直接読める形で抱く Gint です。画面には何も出ないので、外から見れば何もしていないのと同じです。それでも、ここを先にやらなければ、後で必ず作り直すことになると思っていました。
夏:日本を載せる
7 月、PLATEAU の建物を球に載せました。最初は 1 地区、すぐに全国 300 の市区町村へ広げました。7 地区だけ建物が出ない、という不具合を一つずつ潰していく日々でした。丸い地球の上に、東京の街が立ち上がった時のことはよく覚えています。
8 月 1 日には、描画を WebGPU へ移しました。地球、地形、建物、Gint、星空と、移植の段を一日で通しました。翌日は iPhone で一日中白い画面と向き合い、原因を一つずつ名指しする道具を作り続けて、ようやく実機で動きました。その日のうちに、WebGPU を既定にすると決めました。古い端末には WebGL2 が残っています。
同じ月に、実スケールの太陽系 ortho-solar と、国勢調査 2020 の可視化を作りました。地図は地球の上で止まる必要はないし、統計は表のままでいる必要もありません。
秋:世界へ、そして互換へ
9 月は、日本の地図を世界の地図にした月でした。画面の言葉を 26 の言語にし、Equal Earth という平らな世界地図と、丸い地球の間を行き来できるようにしました。www のトップも作り直し、「Equal to all, fair to the Earth」という言葉を掲げました。地球は丸い。地図は誰のものでもある。それを最初に言っておきたかったのです。
月の終わりには、地球儀を @ortho-earth/globe という独立した部品に切り出し、MapLibre GL JS と同じ書き方で使えるようにしました。物差しには MapLibre 自身の公式例 139 本を使いました。それぞれを本物と並べて走らせ、絵と答えが一致するかを採点します。最初は同じ絵が 0 本でしたが、今は 66 本が同じ絵、50 本が同じ答えになり、動かない例はありません。新しい API を覚えてもらうのではなく、知っている書き方がそのまま丸い地球で動く。これが一番やりたかったことです。
2.0 で、何を捨てたか
第 2 版の中身は、一言で言えば「書き直しと、片付け」です。全てのライブラリを TypeScript(strict)で書き直し、1.x が互換のために残していた古い名前や裏口を閉じました。使う人には少し不親切な変更ですが、新しい形に入る時には古いものを捨てる、というのがこの工房の決まりです。何が変わったかは「Ortho Earth 2.0 を公開しました」に詳しく書きました。
2.0 のあと
出してすぐ、他のエンジンと並べて性能を測りました。測ってみると、自分では気づかなかった弱点が次々に見つかります。iPhone で読み込みを控えすぎていたこと、止まった瞬間に一瞬白く抜けること、メモリの数え方の甘さ。数日のうちに直して、2.0.2 と次の版に入れました。その話は「PLATEAU 3D 都市モデルの描画性能比較」に書きました。
第2版までのマイルストーン
コミットの記録から拾った、第 2 版までの主な節目です。
| 日付 | 出来事 |
|---|---|
| 4月15日 | 最初のコミット。初代の地図 ortho-map と、データを置く道具を作り始める |
| 4月22日 | 左目の白内障の手術 |
| 4月29日 | 右目の白内障の手術。目が見えるようになった |
| 5月10日 | GIS-HUB(今の GeoPBF のデモ)を作り始める |
| 5月26日 | Gint の符号化。地理データを GPU が直接読める形にする |
| 6月12日 | 地理データの入れ物を GeoPBF としてまとめる |
| 6月13日 | ドメイン ortho-earth.com を取得し、Cloudflare にアカウントを作る。製図係 Sonnet 4.6 の名がコミットに初めて残る |
| 6月18日 | 描画を WebGL2 で作り直す |
| 7月1日 | 製図係に Opus 4.8 が加わる |
| 7月4日 | 国土地理院のベクトルタイルを球の上に描く。建物の押し出しと、標高で地形を起こす |
| 7月6日 | 描画を worker へ移す。主スレッドを空ける作りの始まり |
| 7月8日 | PLATEAU の LOD2 建物を球に載せ、全国 300 市区町村へ広げる。製図係に Fable 5 が加わる |
| 7月10日 | 日本地図 ortho-japan を www.ortho-earth.com で公開 |
| 7月12日 | 1 行で日本が立ち上がる API。地図をどの頁にも埋め込める部品にする |
| 7月22日 | 日本の地形を 10 m の数値標高モデルへ |
| 8月1日 | 描画を WebGPU へ移植。地球・地形・建物・Gint・星空を一日で |
| 8月2日 | iPhone の実機で WebGPU が動く。WebGPU を既定にする |
| 8月5日 | 製図係に Opus 5 が加わる |
| 8月6日 | MacBook Pro(M5 Pro・64 GB)を買う |
| 8月10日 | 実スケールの太陽系 ortho-solar |
| 8月13日 | 国勢調査 2020 の可視化 |
| 8月19日 | ortho-japan 1.0.0。翌日、初めて npm に公開 |
| 8月24日 | CNG Japan で、初めて ortho-earth のデモを人前で見せる |
| 8月31日 | 日本の外に世界の下地が生える |
| 9月4日 | 製図係が Fable 5.1 になる |
| 9月5日 | 衛星画像の COG を、サーバーなしで直接読む |
| 9月10日〜19日 | 画面の言葉を 26 言語に |
| 9月18日〜20日 | Equal Earth の世界地図と、球との行き来 |
| 9月22日 | www を作り直し、「Equal to all, fair to the Earth」を掲げる |
| 9月23日 | 地球儀を @ortho-earth/globe として切り出す。I3S を読む。製図係に Opus 5.5 が加わる |
| 9月26日〜27日 | MapLibre GL JS 互換。公式例 139 本を物差しにする |
| 10月2日〜11日 | 海外旅行。その間もスマホで開発を続け、コミットは 35 |
| 10月14日 | 1.x の最後の版(globe 1.16.0) |
| 10月15日 | 全てのライブラリを TypeScript(strict)へ |
| 10月17日 | 第 2 版、2.0 を npm に公開 |
振り返って
半年前、ここまで来られるとは思っていませんでした。私はコードを一行も書いていません。毎日やっていたのは、出てきた画面を見て「違う」と言うことと、「根治せよ」と言うことだけです。それでも 3,500 回の小さな裁定を積むと、ちゃんと地図になるのだと、今は少し驚いています。
2.0 は終わりではなく、やっと土台が固まったところです。ここから先は、この地球の上に、私が本当に描きたいものを載せていくつもりです。