1. 概要 — エンジンとデータは分離
KASUGAI Canvas は エンジン(プレイヤー本体)とデータ(.kasc + DATA/)が分離した設計です。
エンジンは CDN(kasugai-canvas-web)が配信し、
データは任意の静的ホストに置くだけで、?kasc=<URL> で再生できます(サーバーレス・インストール不要)。
CDN はエンジン本体のみを配信し、プロジェクトのカタログは持ちません — 変動するプロジェクト一覧は各データホスト側が持つ設計です。
flowchart LR QGIS["QGIS + geo_webview
エクスポート"] subgraph HOST["データホスト(静的ホスト)"] DATA[".kasc + DATA/
…/<id>/"] PJ["projects.json【複数指定する場合は必須】
群マニフェスト
→ エンジンの選択肢・一覧に使用"] end CDN["CDN(kasugai-canvas-web)
GitHub Pages エンジン配信
stable/・unstable/・6エンジン"] WEB["ブラウザ WebGIS
?kasc=<.kascのURL>"] QGIS -->|"アップロード"| DATA CDN ==>|"エンジンを配信"| WEB DATA -.->|"?kasc= で指定"| WEB
CDN(kasugai-canvas-web)とは
エンジン本体を静的配信する GitHub Pages ホストです。エンジンだけを配信し、
プロジェクトデータ(projects/)は同梱しません — カタログは各データホストが持ちます。
| 要素 | 内容 |
|---|---|
| ベース URL | https://yamamoto-ryuzo.github.io/kasugai-canvas-web/(ルートは stable/ へリダイレクト) |
stable/ | 安定版・既定チャンネル(リリースに合わせて同期) |
unstable/ | 開発版チャンネル(kasugai_canvas 最新の web/ を追従) |
| エンジン | cesium(メイン・フル機能)/ maplibre / openlayers / leaflet / gsimaps(.kasc プレイヤーとして互換)/ navara(試験的・写実3D) |
| 正本・同期 | 正本は kasugai_canvas の web/。python tools/publish_cdn.py --channel stable|unstable で同期(CDN 側の直接編集はしない) |
詳細は kasugai-canvas-web ガイド を参照してください。
2. 導入・セットアップ — インストール不要、データを置くだけ
ブラウザ WebGIS に「インストール」はありません。閲覧側は CDN の URL をブラウザで開くだけで動きます。セットアップに相当するのはデータ側(.kasc + DATA/)を静的ホストへ置く作業で、GitHub Pages など任意の静的ホストを使えます。
配置するファイル — 必須3点セット
再生に必要な最低限は .kasc ファイル1つ、一覧・選択肢に出すには projects.json と <id>/ フォルダを加えた3点が必須です。
-
projects.json必須群マニフェスト。一覧・選択肢に使用。未登録時は単独プロジェクトとして<id>等を名に使う -
<id>/必須フォルダ名 = プロジェクトID。?kasc=URL は<id>/kasugai_canvas.kascを前提-
project.json任意プロジェクト名の表示に使用 -
DATA/条件付き相対参照データがある場合のみ
| ファイル | 必須 | 条件 |
|---|---|---|
<id>/kasugai_canvas.kasc |
必須 | ?kasc= に渡す URL は この .kasc ファイルの URL そのもの。DATA/ 等の相対参照はこの URL のフォルダ基準で解決されます。全レイヤーが URL 直参照ならこれだけで動きます。書式の詳細は .kasc 設定仕様 を参照 |
<id>/DATA/ |
条件付き | .kasc 内で DATA/... 等の相対参照しているローカルデータがある場合のみ(.kasc と同じフォルダに置く) |
<id>/project.json |
任意 | 単独プロジェクトの表示名として優先(一覧・複数選択では projects.json の title が優先)。無ければ <id>・ファイル名が使われる |
projects.json への登録 |
必須(一覧・選択肢に出すため) | 群マニフェスト。?kasc= で開いたエンジンが .kasc の祖先として読み、同一ホスト上の他プロジェクトをドロップボックスに並べます。未登録・無タイトルの単独プロジェクトは <id>(フォルダ名)をプロジェクト名として扱います |
追加手順(ファイル順に設定)
projects.json【必須】 — ホスト直下の群マニフェストに、プロジェクトを1エントリ追記します。[\n { "id": "default", "title": "サンプルプロジェクト" },\n { "id": "<id>", "title": "<プロジェクト名>" }\n]未登録でも単独プロジェクトとしては動きますが(<id>等が名に使われる)、一覧・選択肢に出すには登録が必須です。<id>/【必須】 — フォルダ名 = プロジェクトID で作ります。?kasc=の URL は…/<id>/kasugai_canvas.kascになる前提です。<id>/kasugai_canvas.kasc【必須】 — QGIS プラグインgeo_webviewのExport出力をそのまま置きます。このファイルの URL を CDN エンジンの?kasc=に指定するのが再生の本体で、これだけ置けば動きます。<id>/project.json(任意) — 表示名を付けたい場合に{"title": "<プロジェクト名>"}と書きます。単独プロジェクトではこの名前が優先され、複数・一覧ではprojects.jsonのtitleが優先されます(無ければ<id>・ファイル名で表示)。<id>/DATA/(条件付き) — .kasc がDATA/...等の相対参照を持つローカルデータがある場合のみ、.kasc と同じフォルダに置きます。- 公開 — 静的ホストへアップロードするだけです(GitHub Pages 等)。
再生 URL の形式
https://yamamoto-ryuzo.github.io/kasugai-canvas-web/<stage>/<engine>/?kasc=<ホスト上の .kasc URL>
| 要素 | 値 | 意味 |
|---|---|---|
<stage> |
stable(既定)/ unstable |
CDN の配信チャンネル。stable=安定版・unstable=開発版 |
<engine> |
cesium / maplibre / openlayers / leaflet / gsimaps / navara |
再生に使う描画エンジン。cesium がメイン(3D・フル機能)、他は同じ .kasc を読む互換プレイヤー。navara は試験的エンジン(写実3D・要 vendor 同期) |
?kasc= |
.kasc ファイルの URL(要 URL エンコード) | ホスト上のプロジェクトを指定。相対参照は .kasc のある URL 基準で解決 |
3. 公開デモサイト(実例)
いずれもブラウザ上の WebGIS として動く実例です(Cloudflare/Cloud Run 版は web/ 自前配信+認証・/api/* を付加した構成)。
デモは kasugai-canvas-web(GitHub Pages)上の静的配信版です。設定の保存・サーバー経由の一部機能は無効ですが、地図閲覧・Fly など主要機能はそのまま試せます。
Cloudflare Pages 上のデモです。認証方式 3(Pages Functions + KV)で動作しており、ログイン ID/パスワードはいずれも demo です。
Cloudflare Workers 上のデモです。認証方式 4(Worker + KV・全ファイル認証ゲート)で動作しており、未ログインでは静的ファイルも取得できません。ログイン ID は admin、パスワードは admin123 です。
Cloud Run 上のデモです。認証方式 5(認証のみ)で動作しており、ログイン画面が表示されます。
4. 注意点・制限
- .kasc と DATA/ は同じフォルダに置く — 相対参照は .kasc のある URL を基準に解決されます。
- CORS — エンジンは別オリジンからデータを fetch するため、ホスト側は
Access-Control-Allow-Originが必要です(GitHub Pages は*が既定でそのまま使えます)。 - スナップショット方式 — .kasc はエクスポート時点の状態です。QGIS 側の編集は再エクスポートで反映してください。
- 大きなファイル — GitHub Pages の1ファイル上限は 100MB です。大容量データはオブジェクトストレージ等を URL 直参照で使い分けてください。
- ローカル機能は無効 — 設定のサーバー保存・ファイル書き込み・rclone 連携・AI ブリッジハブ内蔵などは 【アプリ】ローカルアプリ 側の機能です(ブリッジは 別途 bridge-hub を導入すれば WebGIS でも使えます)。