モバイルでのパフォーマンスを測ってみた:古い iPhone と Android の普及機で PLATEAU を回す

2026-11-11 · Kenji Yoshida

はじめに

10 月に、PLATEAU の千代田区 LOD2 建物を Web の 3D 地図エンジン 5 つで描き、Mac 2 台と iPhone 16 Pro で測りました(PLATEAU 3D 都市モデルの描画性能比較)。どれも速い機械で、差はあまり出ませんでした。そこで今回は、もっと厳しい機械で測りました。2018 年の iPhone XS と、普及帯の Android タブレット Galaxy Tab A11+ です。エンジンはどれも 11 月 11 日時点の最新版にそろえました。分かったことは 3 つです。

先に断っておくと、私は ortho-earth の開発者です。身内びいきにならないよう、条件は全エンジンでそろえ、測った数字のとおりに書きます。

比べ方

前回と同じ、PLATEAU 千代田区の建築物 LOD2(テクスチャなし)3D Tiles を、全エンジンに同じオリジンから読ませました。シナリオも同じです。初回表示(東京駅の上空 1,500 m・俯角 60°)、周回(高度 500 m・半径 1 km を 30 秒で 1 周)、ズーム(高度 10 km から 300 m まで 20 秒)を、それぞれ 5 周測り、中央値を取りました。1 周ごとにエンジンの順番を 1 つずらしています。

iPhone XSGalaxy Tab A11+
位置づけ2018 年発売現行の普及帯
中身A12 Bionic・iOS 18.7MediaTek MT8775・メモリ 6 GB・Android 16
ブラウザSafari 18.7Chrome 156
画面60 Hz60 Hz(計測の前後で確認)、描画 800×1184
配信Mac から Wi-FiMac から USB
エンジン版
MapLibre GL JS + deck.gl6.17.0 + 9.4.1(Tile3DLayer を重ね描き)
CesiumJS1.147.0
Navara@navaramap/three 0.3.1
ortho-earth@ortho-earth/globe 2.4.1

エンジンの機能差を混ぜないよう、次の条件をそろえました。

結果 1:動かしたとき

ortho-earth と Navara は、2 台とも周回とズームで画面の上限の 60 fps でした。

エンジンXS 周回XS ズームAndroid 周回Android ズーム
Navara59.560.060.360.2
ortho-earth59.659.660.159.9
CesiumJS—(結果 3)—57.460.5
MapLibre + deck.gl46.8 ※※38.5 ※58.6 ※

(fps、5 周の中央値。60 が画面更新の上限。※ は下の注を参照)

遅いフレーム(1 フレーム 33 ms 超)の割合は、周回で Navara が XS 0.2%・Android 0%、ortho-earth が 0.7%・0.1%、CesiumJS が Android 2.4%、MapLibre+deck.gl が 14%・21% でした。

※ MapLibre+deck.gl は、地図の上に deck.gl が別のキャンバスを重ねて描きます。そのため数えた fps が画面の更新と合わず、XS のズームでは 80 fps と、上限を超える値が出ました。主スレッドの更新は周回で XS 23・Android 19 回/秒なので、実際の見た目は表の値より低いと考えてください。MapLibre の本業は 2D のベクトルタイルで、3D Tiles は deck.gl を借りて描いています。

結果 2:初回表示

エンジンiPhone XSGalaxy Tab A11+
MapLibre + deck.gl12.3 秒(10.7〜17.1)6.0 秒(5.1〜7.4)
Navara15.4 秒(11.4〜23.9)8.3 秒(6.3〜9.3)
ortho-earth18.9 秒(11.6〜25.6)10.0 秒(8.5〜12.1)
CesiumJS11.1 秒(1 回)10.2 秒(9.4〜14.5)

(5 周の中央値、括弧内は最小〜最大)

通信状態のばらつきで、同じエンジンでも XS では周によって 2 倍近く違いました。エンジンの間の差はこの振れより小さいので、順位は付けません。その中で Android の Navara は 6.3〜9.3 秒と、振れが一番小さく出ています。

結果 3:iPhone XS の CesiumJS

CesiumJS だけを先に単独で 1 回測ると、XS でも初回表示 11.1 秒・周回 56.1 fps・ズーム 60.0 fps で最後まで走りました。前の版の 1.146 は、読み込み中に Safari ごと落ちていました。ただし、他のエンジンと順に 5 周測ると、1 周目のズームで Safari が落ちました。そのため XS の表からは外しています。Android では 5 周とも完走しました。

エンジンごとに

Navara:今回いちばん印象に残ったエンジンです。細かさの倍率を他とそろえて、モバイルでの手加減を外しても、古い iPhone でも普及機でも 60 fps を崩しませんでした。遅いフレームもほぼ出ず、初回表示の振れも小さい。データの解読と形の組み立てを Rust(WebAssembly)で行い、描画を Three.js に任せる作りが、弱い機械でもそのまま効いています。かっちり作られている、というのが素直な感想です。

CesiumJS:1.147 で、古い iPhone でも 1 回なら最後まで走るようになりました。Android では周回 57 fps・ズーム 60 fps で、普及機でも十分に滑らかです。

ortho-earth:2.4.1 のいちばんの成果は、CesiumJS に機能の面でほぼ追いついたことです。Cesium の公式例(Sandcastle)304 本が全部動き、264 本で同じ絵、残る 40 本も同じ答えになりました。そのうえで性能を見たのが今回の計測です。2.4.1 では 3D Tiles の描き方も軽くしました。片面の建物は裏面を描かず、深度の持ち方を変えて GPU が早めに描かない画素を捨てられるようにしています。その結果、2 台とも 60 fps に届きました。

MapLibre+deck.gl:2D の地図では定番の組み合わせですが、3D Tiles を重ね描きすると、弱い機械では周回で 60 fps に届きませんでした。前回の Mac と iPhone 16 Pro でも同じ傾向です。初回表示は、今回も速い側に入っています。

おわりに

古い iPhone と普及機のタブレットでも、PLATEAU の千代田区を 60 fps で回せるエンジンが、もう複数あります。速い機械だけでなく、多くの人が実際に持っている機械でも、都市の 3D を気軽に見られるようになってきた、というのが今回のいちばんの収穫でした。

ただし、今回の結果には限りがあります。前回と同じく、測ったのは千代田区のテクスチャなしの建物だけで、データの規模が小さすぎました。ほとんどのエンジンが 60 fps の天井に届いてしまい、地力の差は見えていません。ortho-earth が WebGPU で描くことによる速さも、実はまだ評価できていません。XS の Safari 18 には WebGPU が無く、ここでは WebGL2 で動いています。Android では WebGPU で動いていますが、天井に届いているので差が出ません。WebGPU の効き目を確かめるには、都心の複数の区、テクスチャ付きの建物、地形や背景地図まで載せた大規模なデータでの評価が必要です。次はそれを測るつもりです。

Kenji Yoshida @ Yokohama