**Show HN:** ARM64 Android 開発キット

2026/02/05 22:40

**Show HN:** ARM64 Android 開発キット

RSS: https://news.ycombinator.com/rss

要約

日本語訳:

## Summary

AADK は Linux 上で ARM64 Android 開発を行うための GUI ファースト、多サービス gRPC スキャフォールディングツールです。  
コアロジックは Rust のサービスクレートに実装され、薄い GTK UI と CLI クライアントが次のサービスを調整します:JobService、WorkflowService、ToolchainService、ProjectService、BuildService、TargetService、および ObserveService。

サポート対象ホストは Linux aarch64 のみです。x86_64 は Android Studio が既にそのプラットフォームをカバーしているため除外されています。  
各サービスは localhost 上のポート 50051–50057 でリッスンします(環境変数で上書き可能)。  
データは `~/.local/share/aadk/state/` に格納され、ダウンロードとインストールも同じプレフィックス内に保存されます。

Debian 13 aarch64 上のクイックスタートには、システムパッケージ(`build-essential`、`libgtk-4-dev` など)、rustup 経由で入手できる Rust stable、およびすべてのクレートをビルドする必要があります。  
`scripts/dev/run-all.sh` を実行するとすべてのサービスが起動します;その後 GTK UI または CLI コマンドを使用して整合性チェックを行えます。

リリースビルドは `cargo build --release --workspace` で生成され、tar.gz アセット(`aadk-${VERSION}-linux-aarch64.tar.gz`)にパッケージ化され、SHA256 チェックサムが添付されます。

ツールチェーンカタログには、さまざまな Linux‑musl ターゲット向けのカスタム Android SDK/NDK アーカイブ(r29 リリース 2025‑09‑08 を含む)が収録されています。  
ToolchainService はインストール/更新/検証をプロビナンスチェックとともに処理します。

WorkflowService はマルチステップパイプラインを調整します:プロジェクト作成/オープン → ツールチェーン検証 → Gradle ビルド → ターゲットデバイスへの APK インストール → アプリ起動/停止 → 証拠バンドルのエクスポート。  
JobService はジョブイベントを記録し、ページネーションとフィルタリングをサポートし、実行結果を集約します;TargetService は Cuttlefish/ADB ターゲットとログを管理します;ObserveService はラン履歴、インベントリを保存し、サポート/証拠バンドルのエクスポートを可能にします。

GTK UI ではジョブ実行、ワークフロー、ジョブ履歴閲覧、ツールチェーン管理、プロジェクト管理、ターゲット管理、コンソールビルド、および証拠表示用のページが提供されます。  
CLI は `aadk-cli --toolchain list-providers`、`--targets list`、`--observe export-support` などのコマンドでこれらの操作を鏡像化します。

軽量な UI または CLI を通じてすべてのサービスを統合することで、AADK は Linux 上で ARM64 Android 開発におけるプロジェクト設定、ツールチェーン管理、ビルド、テスト、および証拠収集を効率化します。

本文

AADK Full Scaffold(完全スキャフォールド)

Android DevKit スタイルのワークフロー向けに、GUI ファーストでマルチサービス gRPC を採用した scaffolding です。
GTK UI と CLI は薄いクライアントで、実際の処理はすべてサービス(crates)内にあります。

JobService
がイベントバスとして機能し、ジョブ状態/進捗/ログをクライアントへストリームします。


対応ホスト

ホスト備考
Linux ARM64 (aarch64)サービス/UI/Cuttlefish を含むフルスタック実行に対応した唯一の公式サポート対象。
x86_64
は Android Studio で既にカバーされているため意図的に除外しています。
Toolchain カタログLinux ARM64 SDK/NDK アーティファクトと Windows ARM64 NDK アーティファクト(r29/r28c/r27d)を含みます。
Darwin (macOS) 用の SDK/NDK アーティファクトはカスタムカタログに公開されていません。

アーキテクチャ概要

GTK4 UI + CLI  →  gRPC サービス(ビジネスロジックなし)
└─ JobService   – ジョブレコードを保持し、履歴再生とライブイベントストリームを提供
    ├─ Toolchain/Build/Targets/Observe services はジョブを生成し JobService に送信
    ├─ ObserveService  – 実行履歴+出力インベントリ(バンドル/アーティファクト)を保存し、ダッシュボード用サマリーポインタを保持
    ├─ ProjectService  – プロジェクトメタデータとテンプレートスキャフォールドの真実源
    └─ WorkflowService – マルチステップパイプラインを調整し、可観測性のためにランレコードを upsert

ソースマップ(主要エントリポイント)

サービスパス
JobService
crates/aadk-core/src/main.rs
WorkflowService
crates/aadk-workflow/src/main.rs
ToolchainService
crates/aadk-toolchain/src/main.rs
ProjectService
crates/aadk-project/src/main.rs
BuildService
crates/aadk-build/src/main.rs
TargetService
crates/aadk-targets/src/main.rs
ObserveService
crates/aadk-observe/src/main.rs
GTK UI
crates/aadk-ui/src/main.rs
CLI
crates/aadk-cli/src/main.rs

Proto 契約:

proto/aadk/v1

Rust gRPC タイプ:
crates/aadk-proto

開発ランナー:
scripts/dev/run-all.sh

エージェントメモ:
AGENTS.md
と各 crate 内の
AGENTS.md


ランタイムトポロジー

デフォルトアドレス(環境変数で上書き可):

サービスアドレス環境変数
Job/Core127.0.0.1:50051
AADK_JOB_ADDR
Toolchain127.0.0.1:50052
AADK_TOOLCHAIN_ADDR
Project127.0.0.1:50053
AADK_PROJECT_ADDR
Build127.0.0.1:50054
AADK_BUILD_ADDR
Targets127.0.0.1:50055
AADK_TARGETS_ADDR
Observe127.0.0.1:50056
AADK_OBSERVE_ADDR
Workflow127.0.0.1:50057
AADK_WORKFLOW_ADDR

データと状態の保存場所

Jobs                     ~/.local/share/aadk/state/jobs.json
UI config                ~/.local/share/aadk/state/ui-config.json
CLI config               ~/.local/share/aadk/state/cli-config.json
Toolchains               ~/.local/share/aadk/state/toolchains.json
Toolchain downloads      ~/.local/share/aadk/downloads
Toolchain installs       ~/.local/share/aadk/toolchains
Projects                 ~/.local/share/aadk/state/projects.json
Project metadata         <project>/.aadk/project.json
Builds                   ~/.local/share/aadk/state/builds.json
Observe runs             ~/.local/share/aadk/state/observe.json
Observe bundles          ~/.local/share/aadk/bundles
UI/CLI log exports       ~/.local/share/aadk/state/*-job-export-*.json

サードパーティのインベントリは必要に応じてダウンロードされます。
レポジトリ自体は第三者ツールチェーンをバンドルしておらず、サービスが要求時にダウンロードまたは実行します。


Android SDK/NDK カスタムアーカイブ

タイプ対象バージョンURL
SDK (aarch64-linux-musl)36.0.0
https://github.com/HomuHomu833/android-sdk-custom/releases/download/36.0.0/android-sdk-aarch64-linux-musl.tar.xz
SDK (aarch64-linux-musl)35.0.2
https://github.com/HomuHomu833/android-sdk-custom/releases/download/35.0.2/android-sdk-aarch64-linux-musl.tar.xz
SDK (aarch64_be-linux-musl)36.0.0
https://github.com/HomuHomu833/android-sdk-custom/releases/download/36.0.0/android-sdk-aarch64_be-linux-musl.tar.xz

(完全リストは省略。詳細は元文書参照)

Windows ARM64 NDK アーカイブの解凍には 7‑zip が必要です。
現在、Darwin SDK/NDK アーティファクトはカスタムカタログに公開されていません。

MIT ライセンスで配布されていますが、再配布を検討する場合は上流の Android SDK/NDK の利用規約をご確認ください。


Cuttlefish ホストツール

  • デフォルトでは Debian/Ubuntu 用
    android-cuttlefish
    apt リポジトリを使用:
    https://us-apt.pkg.dev/projects/android-cuttlefish-artifacts

    他ディストリビューションは
    AADK_CUTTLEFISH_INSTALL_CMD
    で上書き可能。
  • Cuttlefish イメージは
    ci.android.com / android-ci.googleusercontent.com
    から取得。
  • Gradle は
    gradlew
    またはシステムの Gradle を使用。
  • adb/platform-tools
    は Android SDK 又は Cuttlefish ホストツールから入手。

クイックスタート(Debian 13 aarch64)

  1. システム依存パッケージ

    sudo apt update
    sudo apt install -y build-essential pkg-config libgtk-4-dev protobuf-compiler git curl xz-utils zstd
    
  2. Rust ツールチェーン(必要に応じて)

    curl https://sh.rustup.rs -sSf | sh
    source "$HOME/.cargo/env"
    rustup default stable
    
  3. ビルド

    cargo build --workspace

  4. すべてのサービスを起動
    Terminal A

    AADK_JOB_ADDR=127.0.0.1:60051 ./scripts/dev/run-all.sh
    

    (任意で環境変数によりアドレスを上書き可)

  5. GUI を起動
    Terminal B

    GTK_A11Y=none cargo run -p aadk-ui
    
  6. CLI での確認(任意)

    cargo run -p aadk-cli -- toolchain list-providers
    cargo run -p aadk-cli -- toolchain list-sets
    cargo run -p aadk-cli -- targets list
    cargo run -p aadk-cli -- observe list-runs
    cargo run -p aadk-cli -- observe export-support
    cargo run -p aadk-cli -- project use-active-defaults <project_id>
    

リリースビルド(Linux aarch64)

cargo build --release --workspace
ls -1 target/release/aadk-*

GitHub Release 用のパッケージング(任意):

VERSION=0.1.0
OUT=dist/aadk-${VERSION}-linux-aarch64
mkdir -p "${OUT}"
cp target/release/aadk-{core,workflow,toolchain,project,build,targets,observe,ui,cli} "${OUT}/"
cp scripts/dev/run-all.sh README.md LICENSE "${OUT}/"
tar -C dist -czf "aadk-${VERSION}-linux-aarch64.tar.gz" "aadk-${VERSION}-linux-aarch64"
sha256sum "aadk-${VERSION}-linux-aarch64.tar.gz" > "aadk-${VERSION}-linux-aarch64.tar.gz.sha256"

docs/release.md
scripts/release/build.sh
で自動化フローを確認してください。


今日実装済みの機能

サービス主な内容
JobService (
aadk-core
)
ジョブレジストリ、履歴再生、保持期限管理、ライブイベント・再生ストリーム。
StreamRunEvents
はジョブ間でバウンディング付きのイベントを集約し、タイムスタンプ順に最善を尽くして配信。
ToolchainService (
aadk-toolchain
)
プロバイダカタログ(ホスト依存アーティファクト、
AADK_TOOLCHAIN_CATALOG
で上書き可)。SDK/NDK のインストール・更新・アンインストールと検証を JobService イベント経由で行い、キャッシュクリーンアップ。プロビジョニングチェックは署名、トランスペアレンシーログ、レイアウトなど多岐に渡る。
ProjectService (
aadk-project
)
JSON テンプレートレジストリ(
AADK_PROJECT_TEMPLATES
かデフォルト)。プロジェクト作成/開封時にメタデータを生成し、Recents を保持。
GetProject
で正規化された解決結果を公開。
BuildService (
aadk-build
)
ProjectService
ID からパス解決、ビルド/アーティファクトレコード保存(モジュール/バリアント/タスク)。Gradle ラッパーの検証と実行、出力を APK/AAB/AAR/mapping/test 結果にスキャン。SHA‑256 フィルタ付きで
ObserveService
にランアウトプットとして登録。
TargetService (
aadk-targets
)
ADB+Cuttlefish パイプライン経由でターゲットを列挙、ID 正規化とヘルスメタデータ付与。APK インストール、アプリ起動/停止、logcat ストリーム、Cuttlefish 管理を行いジョブイベントを発行。
ObserveService (
aadk-observe
)
ラン履歴と出力インベントリ(バンドル/アーティファクト)を
run_id
correlation_id
で保存。JobService ジョブとしてサポート/エビデンスバンドルのエクスポートも可能。ダッシュボード用に要約ポインタ付きでアウトプットを公開。
WorkflowService (
aadk-workflow
)
workflow.pipeline
を実行し、プロジェクト作成・ツールチェーン検証・ビルド・インストール・起動・バンドルエクスポートの各ステップを順序づけ。ステップジョブごとに進捗/ログを出力し、
run_id
で関連付けて ObserveService にレコードアップサート。
GTK UI (
aadk-ui
)
• ホーム:ジョブ実行・ストリーム監視・ライブステータスパネル。
• ワークフロー:ステップ入力付きパイプライン実行とイベントストリーム。
• ジョブ履歴:ジョブ一覧、イベント履歴、ログエクスポート。
• ツールチェーン:一覧/インストール/検証・更新・アンインストール・キャッシュクリア。
• プロジェクト:テンプレート一覧、作成/開封、Recents、設定変更。
• ターゲット:一覧、APK インストール、起動、logcat、Cuttlefish 操作。
• コンソール:Gradle ビルド実行(モジュール/バリアント/タスク選択)、アーティファクト表示とログストリーム。
• 証拠:ラン一覧、アウトプットフィルタ付き、ジョブグループ化、イベントストリーム、サポート/証拠バンドルエクスポート、ジョブログエクスポート。
ページは
job_id
再利用と
correlation_id
を入力できるよう設計。
CLI (
aadk-cli
)
ジョブ実行/リスト/監視/履歴/エクスポート/キャンセル、ラン監視(集約)。
ツールチェーン:プロバイダ・セット一覧、更新・アンインストール・キャッシュクリア。
ターゲット:一覧/起動/停止/ステータス/Cuttlefish インストール。
プロジェクト:テンプレート/Recents 取得、作成/開封、デフォルト使用。
Observe:ラン/アウトプットリスト・エクスポートサポート/証拠。
Build:実行/アーティファクトリスト(モジュール/バリアント/タスク+フィルタ)。
Workflow:パイプライン実行。
長時間コマンドは
--job-id
/
--correlation-id
/
--run-id
を受け付ける。

拡張の推奨順序

  1. ワークフロー入力用ピッカー(テンプレート、ツールチェーンセット、ターゲット)を追加し、UI 設定に最後使用したフィールドを保存。
  2. 証拠ダッシュボードを拡張し、ランフィルタとアウトプットへのショートカット(開く/エクスポート)を実装。
  3. CLI ヘルパーで
    StreamRunEvents
    をワークフロー実行後に tail できるようにする。

開発メモ

  • gRPC は簡易化のため TCP loopback を使用;Unix ドメインソケットは次回実装予定。
  • UI はバックグラウンド Tokio ランタイムを用いて GTK メインスレッドを応答性保持。
  • ジョブワークフローは JobService で進捗メトリクスを公開;
    aadk-core
    を起動すると UI ストリームが確認できる。

なぜ AADK(ARM64 ギャップ)なのか

Android Studio の公式スタックは ARM64 ホストをサポートしていないため、ARM64‑ファーストの Android 開発ツールを提供することに焦点を当てています。
主なギャップの根拠:

コミュニティ ARM64 ツール参照:

リポジトリ内容
android-tools
(archlinuxarm)
platform tools (adb/fastboot) for aarch64。
android-sdk-tools
community repo building platform‑tools/build‑tools with aarch64 testing。
AndroidIDE toolsJDK + Android SDK ツール(AndroidIDE 用)。

Cuttlefish ターゲットプロバイダー

TargetService
はローカル Cuttlefish を
provider=cuttlefish
として表現できます。
機能概要:

  1. 利用可能なら
    cvd status
    で実行状態と adb serial を検知。
  2. 必要に応じて
    adb connect
    を送信。
  3. ADB(device/offline)または Cuttlefish(running/stopped/error)の状態を報告。
  4. ADB ステータス、API レベル、ビルド/ブランチ/パス、および生のステータス出力で詳細付与。

前提条件(Android Cuttlefish ドキュメント参照):

  • KVM 仮想化が必要 –
    /dev/kvm
    を確認。
  • ユーザーは
    kvm
    ,
    cvdnetwork
    ,
    render
    グループに属すること。
  • ホストツールとイメージは同一ビルド ID である必要。

デフォルト設定(上書き不可):

項目デフォルト
Branch4K hosts:
aosp-android-latest-release
、16K:
main-16k-with-phones
TargetsARM64:
aosp_cf_arm64_only_phone-userdebug
、x86_64:
aosp_cf_x86_64_only_phone-userdebug
、riscv64:
aosp_cf_riscv64_phone-userdebug
。16K は
aosp_cf_arm64 / aosp_cf_x86_64
を使用。

GPU 加速:

  • Android 11+ のゲストはホストがサポートしていれば GPU アクセラレーションを利用;そうでなければ SwiftShader が使用される。
  • 必要条件: EGL ドライバで
    GL_KHR_surfaceless_context
    、OpenGL ES、Vulkan をサポート。
  • 環境変数
    AADK_CUTTLEFISH_GPU_MODE=gfxstream
    (OpenGL+Vulkan パススルー)または
    drm_virgl
    (OpenGL だけ)で
    --gpu_mode=…
    を指定。

WebRTC ストリーミング:

  • --start_webrtc=true
    で起動(TargetService が自動設定)。
  • デフォルト Web UI は https://localhost:8443。環境変数
    AADK_CUTTLEFISH_WEBRTC_URL
    で上書き可。
  • リモートアクセスには TCP 8443 と TCP/UDP 15550‑15599 のファイアウォール許可が必要。

REST/CLI コントロール:

エンドポイント説明
https://localhost:1443
(環境変数
AADK_CUTTLEFISH_ENV_URL
例:
/devices/DEVICE_ID/services
/devices/DEVICE_ID/services/SERVICE_NAME
POST /devices/DEVICE_ID/services/SERVICE_NAME/METHOD_NAME
(JSON Proto ペイロード)。
CLI 同等
cvd env ls
cvd env type SERVICE_NAME REQUEST_TYPE
cvd env call SERVICE_NAME METHOD_NAME '{…}'

利用可能サービス:

GnssGrpcProxy
,
OpenwrtControlService
,
WmediumdService
,
CasimirControlService
.

Wi‑Fi:

  • Cuttlefish は Wmediumd でワイヤレスメディアをシミュレート。
  • Android 14+ は
    WmediumdService
    (REST/CLI 経由)、Android 13 以下は
    wmediumd_control
    を使用。
  • OpenWRT AP: デフォルトデバイス ID は
    cvd-1
    、WAN IP は
    192.168.94.2
    または
    192.168.96.2
    (起動オプション無し時)。
  • アクセス方法:
    ssh root@OPENWRT_WAN_IP_ADDRESS
    、または https://localhost:1443/devices/DEVICE_ID/openwrt。

Bluetooth:

  • Web UI コマンドコンソールから Rootcanal を制御。
  • コマンド例:
    list
    ,
    add DEVICE_TYPE [ARGS]
    ,
    del DEVICE_INDEX
    ,
    add_phy PHY_TYPE
    ,
    del_phy PHY_INDEX
    ,
    add_device_to_phy DEVICE_INDEX PHY_INDEX
    ,
    del_device_from_phy DEVICE_INDEX PHY_INDEX
    ,
    add_remote HOSTNAME PORT PHY_TYPE
  • デバイスタイプ: beacon, scripted_beacon, keyboard, loopback, sniffer。

環境変数設定例

AADK_CUTTLEFISH_ENABLE=0
AADK_CVD_BIN=/path/to/cvd
AADK_LAUNCH_CVD_BIN=/path/to/launch_cvd
AADK_STOP_CVD_BIN=/path/to/stop_cvd
AADK_CUTTLEFISH_ADB_SERIAL=127.0.0.1:6520
AADK_CUTTLEFISH_CONNECT=0
AADK_CUTTLEFISH_WEBRTC_URL=https://localhost:8443
AADK_CUTTLEFISH_ENV_URL=https://localhost:1443
AADK_CUTTLEFISH_PAGE_SIZE_CHECK=0
AADK_CUTTLEFISH_KVM_CHECK=0
AADK_CUTTLEFISH_GPU_MODE=gfxstream|drm_virgl
AADK_CUTTLEFISH_HOME=/path (or _16K/_4K)
AADK_CUTTLEFISH_IMAGES_DIR=/path (or _16K/_4K)
AADK_CUTTLEFISH_HOST_DIR=/path (or _16K/_4K)
AADK_CUTTLEFISH_START_CMD="…"
AADK_CUTTLEFISH_START_ARGS="…"
AADK_CUTTLEFISH_STOP_CMD="…"
AADK_CUTTLEFISH_INSTALL_CMD="…"   # 非Debian 系統必須
AADK_CUTTLEFISH_INSTALL_HOST=0
AADK_CUTTLEFISH_INSTALL_IMAGES=0
AADK_CUTTLEFISH_ADD_GROUPS=0
AADK_CUTTLEFISH_BRANCH=<branch> (or _16K/_4K)
AADK_CUTTLEFISH_TARGET=<target> (or _16K/_4K)
AADK_CUTTLEFISH_BUILD_ID=<id>
AADK_ADB_PATH or ANDROID_SDK_ROOT

Cuttlefish ビルド固定

ビルド ID を指定してイメージを固定する例:

AADK_CUTTLEFISH_BRANCH=aosp-android-latest-release \
AADK_CUTTLEFISH_TARGET=aosp_cf_arm64_only_phone-userdebug \
AADK_CUTTLEFISH_BUILD_ID=12345678 \
./scripts/dev/run-all.sh

GTK UI もブランチ/ターゲット/ビルド ID フィールドと「Build ID を解決」ボタンを備えているため、インストール前に確認できます。

補足事項

  • UI と CLI は
    include_offline=true
    を渡すので、停止中の Cuttlefish も表示されます。
  • 開始/停止/ステータスは UI(Targets → Start/Stop/Status)と CLI (
    cvd start/stop/status
    ) で操作可能です。
  • Cuttlefish のインストールは
    ci.android.com
    から公開アーティファクトを使用します。

同じ日のほかのニュース

一覧に戻る →

2026/02/07 6:51

**OpenCiv3:サイクリズム・III のオープンソースでクロスプラットフォーム化した再構築**

## Japanese Translation: OpenCiv3は、Civilization IIIのオープンソースでクロスプラットフォームなリメイクであり、レガシー制限を取り除き、モッドサポートを拡張しつつもコアゲームプレイを保持します。Godot EngineとC#で構築されており、Windows、Linux、macOS上でネイティブに動作し、専用のCivilization IIIファイルは不要です(ただしローカルコピーがあると互換性が向上します)。 現在のプレアルファ版(v0.3「Dutch」、2025年12月)は、OS固有のzipまたはtgz(「スタンドアロンモード」でプレースホルダーグラフィック付き)として配布されます。インストール手順は以下の通りです。 - **Windows** – zipを解凍し、`OpenCiv3.exe` をダブルクリックします。ブロックされている場合は解除し、自動検出できない場合は環境変数 `CIV3_HOME` にCivilization IIIフォルダーのパスを設定してください。 - **Linux** – `.tgz` を解凍し、`export CIV3_HOME="/path/to/civ3"` としてから `OpenCiv3.x86_64` を実行します。 - **macOS** – zipを解凍し、`xattr -cr /path/to/OpenCiv3.app` でクォータリゼーションを解除し、同様に `CIV3_HOME` を設定してターミナルから起動します。 既知の問題としてはプレースホルダー資産、不完全なBIQ/SAVファイルサポート(クラッシュを引き起こす可能性があります)、および新規ゲーム開始時にマップ生成用保存ファイルが欠如しているためmacOSでクラッシュするケースがあります。最低ハードウェア要件はまだ公開されていません。プロジェクトはMITライセンスの下でリリースされ、Firaxis、CivFanatics.com、その他の団体とは独立しています。 開発者はBIQ/SAVサポートの完全復元、プラットフォーム別クラッシュ(特にmacOS)の修正、後半ゲームコンテンツの追加、およびグラフィックと安定性の向上に積極的に取り組んでいます。バグや機能要望はGitHubで追跡されており、コミュニティからの貢献が奨励されています。 モッドフレンドリーでクロスプラットフォームな基盤を提供することで、OpenCiv3はプレイヤーと開発者にオリジナルIPを侵害せずにクラシックなCivilization体験を拡張する機会を提供します。

2026/02/07 1:20

Waymoワールドモデル

## Japanese Translation: > **Waymoは、Waymo World Modelという生成シミュレーションエンジンを公開しました。このエンジンは、極端な天候・自然災害・象やロングホーンのような珍しいオブジェクト、逆走トラックなど安全に関わるインシデントを含むハイパーリアリスティックな自律運転シナリオを生成します。** > Google DeepMind の Genie 3 をベースにしたこのモデルは、カメラと LiDAR データを融合し、ドライビングアクション制御・シーンレイアウト制御・時間帯、天候、カスタムシナリオを調整する言語プロンプトという3つの制御機構を提供します。録画済みまたは新規生成されたルートに対して代替ドライビング決定を評価する「what‑if」反実仮想シミュレーションもサポートしています。 > Waymo Driver は米国都市で約 2 億マイルの完全自律走行距離を記録し、数十億マイルに相当するバーチャル走行をシミュレートしてきました。World Model はリアルなダッシュカムやモバイルカメラ映像を多模態シミュレーションへ変換し、正確な視覚シーンと一致させることでこの機能を拡張します。効率的なバリアントは実時間の最大4倍速で動作し、計算資源を削減しつつ長時間テストが可能です。 > このシステムは、安全性が証明された自律運転を実現するために Waymo の AI エコシステムの重要柱となっており、Waymo と Google DeepMind からなる大規模チームによって開発されています。

2026/02/05 20:19

**ジオジョインをH3インデックスで400 倍高速化した手法** - **問題点:** 大規模な空間データセットに対する従来のジオジョインクエリは、ポイント‐イン‐ポリゴン判定やテーブル全体のスキャンが必要だったため遅延が大きかった。 - **解決策:** Uber の H3 ヘキサゴナル階層インデックスシステムを利用し、空間情報を固定サイズセルへ事前集約した。 - **実装手順:** 1. すべてのジオメトリ(点・線・多角形)を適切な解像度で対応する H3 インデックスに変換する。 2. 生成されたインデックスを別テーブルに格納し、H3 キーで索引付けする。 3. ジョイン時には、重複した H3 インデックスをキーとしてマッチさせ、膨大な空間判定処理を回避する。 - **結果:** クエリ遅延が数時間から数分へと短縮され、約 400 倍の高速化を実現。また、選択した解像度内であれば空間的正確性は維持された。 ジオメトリ比較を単純な整数キー検索に置き換えることで、データの忠実度を損なうことなく大幅なパフォーマンス向上を達成しました。

## Japanese Translation: ## Summary この記事は、コストの高い空間述語をH3ベースの集合演算に置き換えることで、遅い二次元空間結合をコンパクトなキーで高速ハッシュ結合へと変換する方法を示しています。各ジオメトリを解像度 3 の少数の H3 セルで覆うことにより、結合は最初にセルを共有する候補ペアをフィルタリングし、その後で正確な `ST_Intersects` をその候補のみに適用します。これにより、潜在的に何百万もの交差チェックが、フィルタ済みセットだけに減少し、テストで 400 倍の速度向上を実現しています。この手法は CTE、ビュー、およびサブクエリとシームレスに機能し、追加のマテリアライズドテーブルやスキーマ変更は不要です。したがって、精度を下げるなどの実験も容易になります。高い H3 解像度では偽陽性が減少しますが、形状ごとのセル数が増加し、低解像度ではインデックス作成が簡単ですが、解像度 4 を超えるとセル数の増加により急激に大きくなります。実際には、この書き換えにより 15 ワーカーの Xeon クラスターで結合時間を約 459 秒から約 1.2 秒へ短縮し、正確な一致精度(最終的な `ST_Intersects` によって偽陽性が除去される)を維持したまま高速な空間分析を可能にしています。

**Show HN:** ARM64 Android 開発キット | そっか~ニュース