LoginSignup
13
2

🚢遣隋使:小野妹子の航海を可視化してみた ~歴史上の人物を動かすアプリ~

Posted at

クソアプリのカレンダー | Advent Calendar 2023 11日目の記事です。
11月23日のクソアプリハッカソンで作成された新機能です⭐

🚢作ったもの

歴史上の人物を可視化する地図アプリ。
小野妹子の航海が可視化できました🚢
imoko.gif

💀配布先

PAXS.png

歴史を楽しくわかりやすく学べるソフトウェア「PAX SAPIENTICA」の新機能です🌏
小野妹子が動くシュールさがクソアプリポイント👨

もし気に入っていただけたら、GitHubにスターを付けていただけると開発の励みになります⭐
開発中で今後も面白い機能を追加していきます。

概要

クソアプリハッカソンで発表した内容に+αしています。

みなさん、歴史は好きですか?

歴史に面白さを感じない方でも楽しめ歴史が好きな人は虜になるそんなクソアプリが出来ました。

今回のお題「小野妹子ってなにしたの?」

kusoapp.png
小野妹子は遣隋使です。
遣隋使とは、聖徳太子が当時の中国、隋(ずい)に送った使節です。西暦607年に小野妹子の使節が送られたのが有名です。

……と言われてもあんまりイメージしづらいですよね。

そこで 「当時の地図を作って人を動かしたらわかりやすいのでは?」 と考えました。

今年から開発し始めた歴史を楽しくわかりやすく学べるソフトウェア「PAX SAPIENTICA」の新機能として追加しました🌏

kusoapp2.png

お披露目。
小野妹子の航海が可視化できました🚢
imoko.gif
日本書紀に推古15年(607)7月3日、「大礼小野臣妹子を大唐(隋)に遣わされた」と書いてあるため、アプリの右上のカレンダーはその出航日にあわせています。
移動と同時に右上のカレンダーも日付が変わるので、いつどこに誰がいたのかわかりやすくなっています。


工夫した点

🚢小野妹子の航路

1日40km進むと仮定した計算になっています。
経緯度は実数、日付はユリウス日(整数)で管理していて、処理しやすい形式で作っています。
日本の旧暦の他に、グレゴリオ暦やユリウス暦、中国暦なども入れて当時の暦と現在使われている西暦との比較もできます。

開始経度 開始緯度 終了経度 終了緯度 開始日 終了日
135.820178 34.47865 135.820178 34.47865 1930749 1942976
135.820178 34.47865 135.493778 34.612389 1942976 1942977
135.493778 34.612389 135.045282 34.623315 1942977 1942979
135.045282 34.623315 134.665682 34.763012 1942979 1942980
134.665682 34.763012 133.888478 34.42577 1942980 1942982
133.888478 34.42577 133.01633 34.101623 1942982 1942985
133.01633 34.101623 131.99233 33.760457 1942985 1942988
131.99233 33.760457 130.906071 33.905815 1942988 1942991
130.906071 33.905815 130.28363 33.683849 1942991 1942993
130.28363 33.683849 129.71681 33.862418 1942993 1942995
129.71681 33.862418 129.332687 34.30003 1942995 1942997
129.332687 34.30003 128.611793 34.700559 1942997 1942999
128.611793 34.700559 125.930963 34.0786 1942999 1943006
125.930963 34.0786 126.171272 37.6786 1943006 1943015
126.171272 37.6786 120.790971 37.85103 1943015 1943028
120.790971 37.85103 108.930082 34.172956 1943028 1943057
108.930082 34.172956 108.930082 34.172956 1943057 1943067
    struct PersonLocationPoint {
        std::unordered_map<std::uint_least32_t, std::string> name{}; // 人物名
        paxs::MercatorDeg start_coordinate{}; // 開始の経緯度
        paxs::MercatorDeg end_coordinate{}; // 終了の経緯度
        double overall_length; // 全長
        double min_view, max_view; // 可視化する地図の拡大縮小範囲
        double min_year, max_year; // 可視化する時代(古い年~新しい年)
        std::uint_least32_t texture; // 人物の画像
    };

TSVファイルを読み込み、構造体に入れる処理を書いたので上記のようなファイルを用意すればどんな人でも簡単に追加できるようになりました。

右上にあるカレンダーと地図の動きを連動

カレンダーと地図が同期して動くので、いつに何が起きたかわかりやすくなっています。

スクリーンショット 2023-12-01 22.03.49.png

当時の国名、地名を再現

百済や新羅、日本の令制国など当時の国名や地名を再現しているため、当時の情勢がわかるようにデザインされています。
下の画像では更に古墳を表示しています。大きさ比較も簡単にできます。

PAXS_GIS.png

楽しく歴史を知っていきたいですね!

💀PAX SAPIENTICA

PAXS.png

歴史を楽しくわかりやすく学べるソフトウェア「PAX SAPIENTICA」🌏

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

13
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
2