GIS開発で学会発表しました：歴史シミュレーションGISの開発

[![スライド20.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/8b8c74bb-39f4-d136-895f-4138e378b053.png)](https://github.com/AsPJT/PAX_SAPIENTICA)

日本情報考古学会 第48回 大会で「文献学・考古学・人類学データを用いた歴史上の事象を分析・推定するためのエージェントシミュレーションGISの開発」を発表しました。

歴史に特化した地理情報システムを開発した背景やその後の経緯を解説していきます。

---

# はじめに
歴史は人々の行動の積み重ねで成り立っている。
人々の行動の仮説と推定にエージェントベースシミュレーション（以下，ABS ）という手法が用いられている。

# ABSとは

エージェントを用いた仮想実験（シミュレーション）。

日本ではマルチエージェントシミュレーション（MAS）と呼ばれることが多い。
「マルチエージェントシステム」や「エージェントベースモデル」等の似た用語がある。

[![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/f70bc9c2-24e2-2b6f-f83d-0c581211626f.png)](https://github.com/AsPJT/PAX_SAPIENTICA)
[![スライド5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/8e2b49da-f3d2-9394-5ee9-d8851bb773c9.png)](https://github.com/AsPJT/PAX_SAPIENTICA)

# ABSとGISの関係

ABSは地理空間上でエージェントの動態を可視化。
そのため，地理情報システム（GIS）と相性が良い。

ABSとGISの双方の機能を持ったソフトウェアがあれば多くの地理オープンデータを入力変数として読み込め歴史的事象の検証や推定の裏付けに使用できる。

# 既製品の問題点

しかし，既製品ではABSとGISの双方の機能を持ち歴史的事象の分析に適したソフトウェアは少ない。

歴史的事象の分析のためのABSとGISの双方の機能を持つソフトウェアがあれば，考古学研究においてシミュレーションを用いる敷居が低くなり新たな発見につながることが期待される。

しかし，既製品のABSでは歴史研究のハードルが高い。
例えば，構造計画研究所が提供するABSの artisoc では地理情報の取込等，中級者向けの操作を行う必要がある。

また artisoc は歴史に特化していないため暦の表示や編年の管理など実装が複雑で難しくなりやすい点が多い。

# その他の問題

artisoc は Closed Source な有料のソフトウェアでありQGIS のようなオープンソースソフトウェア(OSS)ではないABSのソフトウェアでOSSなのはいくつか存在するが日本でも一定の利用者がいるQGISと違いほとんど知名度がなく artisoc 一強となっている。

日本製でABS・GISの機能を持つOSSがあるのが望ましい。

# OSS推奨の理由

オープンソースソフトウェア（OSS）が望ましい理由。
非公開ソースのソフトウェアはサポートが終了すると新しいOSで動かなくなる可能性がある。
考古学では50年前の文献を参照することもありサポートが打ち切られてしまうと数十年後以降の人が同一条件で試せない可能性が高い。

今後、デジタル化が進みソースコード付きの論文や３Dデータ付きの報告書がより多く出る可能性がある。

100年後の人も動かせるような環境整備が必要。
考古学におけるABS＆GISはOSSである必要性が高い。

# 既製品の問題点

オープンソースのGISであるQGISではプラグインを用いることによってシミュレーションの機能を追加できる。

しかし，ABSの機能を既存のGISに追加するのは実装コストも高く処理性能上の問題がある。
ABS は基本的に処理が重いためGISにABSを実装するより ABSの上にGISを実装するほうが簡単。

[![ABS01.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/a6796503-0ea4-0ce0-924c-e4de7e4c1869.gif)](https://github.com/AsPJT/PAX_SAPIENTICA)

# 実装の問題点

ABSの機能とGISの機能の比較ではABSの方が処理負荷が高いため，ABSを基盤にGISの機能を追加していくのが望ましい。

近年，WebGISが流行っているがWebアプリではABSに必要な速度を出すのが難しい（出来なくはない）そのため高速に動作するソフトウェアが望ましい。

# 新規OSSの開発

そこで，本研究では歴史的事象の分析のためのABSとGISの双方の機能を持つソフトウェアを開発する。

時間情報，空間情報，シミュレーションの３つの機能を持つ汎用性・拡張性の高いソフトウェアを目指す。

# 本研究で開発した歴史的事象の分析のためのエージェントベースシミュレータの紹介

## PAX  SAPIENTICA

* 文献学・考古学・人類学データを用いた ABS & GIS
* 各国・各時代の暦表示機能や各時代の環境復元機能を持つ
* XYZ タイルや地物を自由に追加することが可能
* オープンソース・無償で提供・コードのLicense CC0

https://github.com/AsPJT/PAX_SAPIENTICA

[![PAXS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/7f4c9605-f684-458c-55b9-45497a3f7d6b.png)](https://github.com/AsPJT/PAX_SAPIENTICA)

## 実装

QGISと同様に高速で実績の多い「C++」を用いて実装。
Webアプリと同様にどの媒体でも動く製品を目指す。

GUI の他に CUI 環境も充実させている（地理データの画像変換などGUIが不要な処理で便利）。

## サポート環境

Windows・macOS・Linux・iOS・Android対応を目指す。

CUIはどの環境でも動作するように設計。
コンパイラはgcc・clang・msvcをサポート。

言語はC++17を使用・後にC++20や23を視野に入れている。

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/9341b79a-470a-d7b2-41d0-b4911c826e3f.png)](https://github.com/AsPJT/PAX_SAPIENTICA)


## 描画フレームワーク

GUI はQGISで用いられている Qt の使用を考えた。

しかし実装の追加と試作を最優先で進めたかったため高速・記述が簡単な OpenSiv3D を用いている。


## 時間情報の扱い

歴史データは文献学・考古学・人類学等のデータがある。
文献学では暦，考古学では編年（相対年代），人類学では較正年代や ybp が用いられている。
これらの年代を統合して表示する機能があると望ましい。

今回は暦に偏っていたが，今後の機能追加で時間情報をうまく扱えるようにしたい。

[![スライド19.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/dcfe8be7-372f-f98c-9121-1c83068f5c77.png)](https://github.com/AsPJT/PAX_SAPIENTICA)

## 環境復元

また地理的環境は時代によって変化するため時代ごとの環境を復元する機能があるとより精密な分析・推定が可能である。

よって，年代と環境復元の機能を併せて導入する。

## 人物の位置の可視化

人物の位置を可視化することもできる。可視化することで歴史学習に利用できる。

以下は小野妹子の航海の可視化。
[![imoko.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/c561ce21-5827-9835-78d6-478268859f72.gif)](https://github.com/AsPJT/PAX_SAPIENTICA)

# 最後に

初期状態から全世界の標高や傾斜データを入れており各国・各時代の暦データも入れている ABS ができた。
日本だけでなく，あらゆる地域と時代に対応しており汎用性の高いABS＆GISソフトウェアを開発した。

今後の機能追加により更に便利なソフトウェアを目指す。

# [💀PAX SAPIENTICA](https://github.com/AsPJT/PAX_SAPIENTICA)

https://github.com/AsPJT/PAX_SAPIENTICA.git

[![PAXS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213065/7f4c9605-f684-458c-55b9-45497a3f7d6b.png)](https://github.com/AsPJT/PAX_SAPIENTICA)

歴史を楽しくわかりやすく学べるソフトウェア[「PAX SAPIENTICA」](https://github.com/AsPJT/PAX_SAPIENTICA)🌏

もし気に入っていただけたら、**GitHubにスターを付けていただけると今後のOSSなGIS開発の励みになります⭐**
最後までお読みいただきありがとうございました！