第2版までの半年

2026-10-22 · Kenji Yoshida

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 は終わりではなく、やっと土台が固まったところです。ここから先は、この地球の上に、私が本当に描きたいものを載せていくつもりです。

Kenji Yoshida @ Yokohama