Slide 1

Slide 1 text

位置情報とオープンソース がやりたくて MIERUNEに転職した話 経歴、事例紹介、GISへのいざない MIERUNE JCT Tokyo 2024 Taku Fukada MIERUNE Inc. GitHub: @ciscorn

Slide 2

Slide 2 text

経緯 なぜ位置情報分野に? MIERUNE での事例紹介 OSSなどの事例紹介、技術の紹介 Web+GISへのいざない Web / ITエンジニアの遊び場として アジェンダ

Slide 3

Slide 3 text

経歴 いかにして位置情報に至ったか

Slide 4

Slide 4 text

前々職: 田舎の小さな新聞社のエンジニア(何でも屋) 最盛期は月間 300万ページビュー Yahoo! 検索大賞 2017 新潟県部門賞 ローカルニュースサイトを運営 田舎の非IT会社っぽくない体制 2016年 (英語版) 2018年 (β) 総務まわりの事務はほぼ e-Gov などで。 コロナ禍にもすんなり対応できた。

Slide 5

Slide 5 text

前々職: 位置情報エンジニアの片鱗はあった? 記事アーカイブに 位置情報を付けたり 空間インデックス楽しい 気象庁のXMLを 使ったりも データを扱うのが好き ©️ Google Maps

Slide 6

Slide 6 text

コロナ禍 ホンモノのプログラマーをやってみよう

Slide 7

Slide 7 text

前職: 東京の報道系ITスタートアップ 準リアルタイム更新用 ベクトルタイルサーバ 気象庁データの扱い 位置情報付きデータの
 RDB→Elasticsearch同期 簡易ジオコーダー ※イメージ ※イメージ ※イメージ ™ リアルタイム同期 (CDC ™ 検索基盤の完全移行を行う ™ 道路トラフィックデータp ™ インメモリ四分木 ™ 文章の途中にある住所を検出 ™ 気象庁防災情報XM ™ イベントソーシン ™ ベクトルタイル化 位置情報がらみの開発をよく主導。フルリモート。 CDC

Slide 8

Slide 8 text

前職: 東京の報道系ITスタートアップ 準リアルタイム更新用 ベクトルタイルサーバ 気象庁データの扱い 位置情報付きデータの
 RDB→Elasticsearch同期 簡易ジオコーダー ※イメージ ※イメージ ※イメージ ™ リアルタイム同期 (CDC ™ 検索基盤の完全移行を行う ™ 道路トラフィックデータp ™ インメモリ四分木 ™ 文章の途中にある住所を検出 ™ 気象庁防災情報XM ™ イベントソーシン ™ ベクトルタイル化 位置情報がらみの開発をよく主導。フルリモート。 CDC もはや 地理情報 (GIS) を専門にしたほうがいいのでは…?

Slide 9

Slide 9 text

YOUはなぜMIERUNEに ( 求職中、 にたまたま MIERUNE の 記事が出てきた。運命。 アドレスバーの履歴 ( 一部の成果を として公開 → 日本ではめずらしい OSS ( 小さい会社の をまた得たい。 自由度 ( 今は受託がメイン → が付いてる 地に足

Slide 10

Slide 10 text

MIREUNEでの事例 空き時間に作ったものから、仕事としての OSS まで

Slide 11

Slide 11 text

人工衛星軌道の可視化 https://qiita.com/ciscorn/items/80b3a3f526316f78b24a 入社研修中に思い付いて作成。Python + Matplotlib + 軌道要素データ

Slide 12

Slide 12 text

みちびきの8の字軌道 Starlink コンステレーション 人工衛星軌道の可視化 https://qiita.com/ciscorn/items/80b3a3f526316f78b24a

Slide 13

Slide 13 text

人工衛星軌道の可視化 投影変換ライブラリ (PROJ) でできないため自前で計算。 仕事で 3D の計算をする日がくるとは。 → お客様「衛星画像に重ねられない?」 「こんなデモがありまして......」

Slide 14

Slide 14 text

à OSS à Python à のデスクトップ GIS アプ% で機能拡張ができ GPLv2 QGISのプラグイン作り

Slide 15

Slide 15 text

法務省地図XMLを読み込むプラグイン (OSS) デジタル庁よりも速い 変換コードを書こう だいぶ速くなった QGISプラグイン化
 してみよう 国が一般公開した土地登記のポリゴンを読み込む。初めて作ったプラグイン。 https://plugins.qgis.org/plugins/mojxml_plugin/

Slide 16

Slide 16 text

地域メッシュを作るプラグイン (OSS) JIS規格「地域メッシュ」の格子を作るだけ。国勢調査のデータも読める。自分が欲しくて作成。 小粒だが好評 https://plugins.qgis.org/plugins/japanese_grids/

Slide 17

Slide 17 text

国交省の PLATEAU 3D都市モデルを読み込むプラグイン (OSS) 日本の3D都市モデルを QGIS に読み込めるようにする。CityGMLという複雑なXML形式 メタデータ(=属性)もほぼ読み込める https://plugins.qgis.org/plugins/plateau_plugin/

Slide 18

Slide 18 text

3D都市モデルなのに 2次元でいいのか QGIS は3次元いけるのか?

Slide 19

Slide 19 text

Matplotlib芸人 再び Project PLATEAU「竹芝モデル」 CC-BY 4.0 本LTスライドの表紙

Slide 20

Slide 20 text

ということで、3D での読み込みも実現

Slide 21

Slide 21 text

“PLATEAU GIS Converter” (OSS) の開発に至る 3D都市モデルを実用形式に変換するオープンソースツール開発の “実証実験” Rust へようこそ

Slide 22

Slide 22 text

PLATEAU GIS Converter の出力例 3D都市モデル (CityGML) を実用形式に変換する「オープンソースツール」を作る実験 3D Tiles に変換するデモ 我々のツールによる出力

Slide 23

Slide 23 text

PLATEAU GIS Converter の出力例 3D都市モデル (CityGML) を実用形式に変換する「オープンソースツール」を作る実験 ベクタータイル (MVT) に変換するデモ MapLibre (fill-extrusion) で表示 東京 23区全域を3分弱で変換

Slide 24

Slide 24 text

巨大データの高速な変換 Python などでは遅すぎて実用にならなかっただろう クロスプラットフォームビルド Windows, Mac等で動く GUI アプリが要求されていた 初めて Rust を使う 納期は5か月後 なぜ Rust ? 不安要素も... 言語の選定(国の仕事で Rust を使うぞ) 結果的には「Rust じゃないと厳しかった」 Github Actions で 簡単に全 OS 用ビルド その他 Û Tauri (GUI) の存Æ Û コードの再利用¾ Û Rustをスタックに加えた¶ Û etc. コンピュータってこんなに速かったんだ......

Slide 25

Slide 25 text

基礎の部品から自作(一例) ジオメトリまわり 変換まわり 地理まわり ポリゴンの三角形化 mapbox/earcut の移植 MIERUNE/earcut-rs タイル境界でのスライス mapbox/geojson-vt を参考に 専用の幾何データ表現 シリアライズ効率を最重視 MIERUNE/flatgeom-rs CityGML パーサの実装 ° XMLスキーマの解¢ ° Rustの手続きマクロで導出 3D Tiles の実装 ° 3D Tiles+glTF拡張のモデØ ° タイリングスキームの検討 外部ソート器の実装 タイル生成パイプラインに必要 MIERUNE/kv-extsort-rs 標高を楕円体高に変換 ° ジオイドモデルの組み込 ° 測量成果の使用承認申請 MIERUNE/japan-geoid 地心座標系への変換 ° 3D Tiles などで必要 平面直角座標系の扱い ° 横メルカトル投影法の計算

Slide 26

Slide 26 text

https://github.com/onthegomap/planetiler/blob/main/diagrams/architecture.png 先人の OSS が参考になった mapbox/earcut onthegomap/planetiler タイルのスライス手法と外部ソート タイル生成パイプライン 幾何アルゴリズム mapbox/geojson-vt などなど

Slide 27

Slide 27 text

おまけ: Minecraft への変換 3Dポリゴンの表面を高速にボクセル化するアルゴリズムを作成 他メンバーがマイクラ化

Slide 28

Slide 28 text

Web周り小話 GISだけじゃない

Slide 29

Slide 29 text

社内開発環境の整備 パスワードなどの安全な共有 Workers, Pages / Zero Trust / etc. エラーモニタリング / APM AWS Organizations
 (AWS Control Tower) AWSマルチアカウント環境の推進 ツールの導入提案 Google Workspaceアカウントでサインイン などなど シングルサインオンの管理と AWSアカウント発行の IaC 化 + +

Slide 30

Slide 30 text

TypeScript, Python と Rust D 科学系エコシステ8 D 簡便さ(データ処理など" D etc. D 書ける人が多a D Web側とのコードベース共i D 優秀な型システム GISでは Rust を使う必然性がある (NAPI-RS) D 現実的なパフォーマンスの実現。データの規模h D JavaScript や Python から利用しやすい Wasm Compnent Model...? 長所 長所

Slide 31

Slide 31 text

Rust と TypeScript のいいとこどり Wasm化 + Cloudflare Workers アプリケーション本体 気象庁のXMLを型付きで扱える R2, KV, DO, Queue

Slide 32

Slide 32 text

SvelteKit に Hono を載せる Hono /api/** request フロントエンドと API を分けずにデプロイ。 (分けることもできる) SvelteKit のモノリシックさを活かしつつ API 部分は Hono で書く。 SvelteKit t OpenAPk t hono/client

Slide 33

Slide 33 text

Web / IT エンジニアの 遊び場としてのGIS Web系でくすぶっている方へ

Slide 34

Slide 34 text

Web技術を一変させた Google Maps(2005年) 出典: https://www.sco.wisc.edu/2005/05/05/google-maps-the-next-generation-of-online-maps/ “AJAX” 普及の立役者

Slide 35

Slide 35 text

Web + GIS の広さ インタラクティブ性 非言語性 リアルタイム性 幾何・投影法・3D アルゴリズム・データ構造 Web技術 大規模データ ドメイン知識 実社会の理解

Slide 36

Slide 36 text

Web + GIS Web開発だけでは
 退屈なあなたに 3 少し っぽい要素も欲しい。 サイエンス 3 新しい や のネタがほしい。 UI/UX 可視化 3 実世界の課題を解決したい。 3 社会やコミュニティに貢献したい。 3 飽きっぽい。 をやりたい。 色々なこと

Slide 37

Slide 37 text

Web+GIS エンジニア 「地図とか詳しくなくても大丈夫?」 “ピアノの調律師に向いているのは、 ピアノが好きで音感がいい人より、 まず、機械いじりに熱中できる人です” 「ついついずっとやってしまう」なら適正アリ 直接的に「地図・地理が大好き」である必要はない。

Slide 38

Slide 38 text

ふつうのWebエンジニアの方に 位置情報分野に興味を持って頂ければと ネタが尽きない分野です 情報系・Web系に強い人が不足ぎみ お勤め先で「GISチョットデキル」人になるのも良し

Slide 39

Slide 39 text

ありがとうございました