Plastic Bubbles are Valued as Experience Points

Created on 2021/12/20bynikorisoft

このエントリは、異世界行ったら本気だすぴょこりんクラスタ Advent Calendar 2021のために書かれたものです。

昨今のゲーム(・プラットフォーム)には、かならず実績(achievements)というものがあります。昨今注目されているゲーミフィケーションの一つの要素としては欠かせないものでしょう。適当に検索しただけでも、実績はパフォーマンスを向上させるなんて論文も出てくる(本文は読んでいません)くらいですから、人のあらゆる活動において考慮すべき一要素であることは間違いありません。

そんなわけで(強引な展開)、今回は旅行に伴う実績の一つである「経県値」のお話です。

経県値とは何か

こちらのサイトがたぶん最初に提案したのだと思いますが、各都道府県における経験(居住・宿泊・・・)を数値化したものです。経験は居住が最も高い価値を有し5点となっています。これを各都道府県ごとに算出し、それを合計した得点が生涯経県値とされています。

これは大変良い実績であり、自分もこれを高めるべく日本各地に旅行を行っておりましたが、数年前に全都道府県宿泊となってしまい、これ以上得点を高めるには、いろんな都道府県に居住するということを行う必要があります。これはこれで、多少やろうと思っているところではありますが、いかんせん金銭的コストもそのほか必要な労力も、旅行に比して膨大なものとなるので、そうそう簡単に得点を上げるのは難しいものです。

グローバル経県値

ということで、この概念を拡張してそれを管理するWebサイトを作ってみようというのが今回のテーマです。拡張というのは、より細分化(経市町村値)するか、より広域化(経国値)するかの二つの方向が考えられますが、今回は後者で行きたいと思います。パンデミックを考慮すると前者のほうがまだやりやすいのかもしれませんが、近い将来に期待をこめてということで。

経験値の単位

では国ごとなのはいいとして、経験値をカウントする単位(広さ)は何にすべきなのでしょうか。一つの案は当然国単位なのですが、既存のサイトがあったりしますし、アメリカ宿泊で4点かーというのもちょっと大味すぎる気がします。ですので、その次の単位、すなわち日本だと都道府県、アメリカだと州くらいがいいのではないでしょうか。

県とは?

その国の次(下位)の単位とはどう定義すればよいでしょうか。名前をとってみても、都道府県(prefecture)・州(State)・地域圏(région)・省・道などなど国さまざまです。何か都合のいい定義がほしくなるところです。

ISO 3166

そんな都合の良い国際規格がちゃんとありました。ISO 3166です。ISO 3166-1は国のコード、ISO 3166-2はその下の地域のコードを定義したものです。

たとえば、ISO 3166-1 alpha-2(アルファベット2文字のコード)では、日本はJP、アメリカはUSと定義されています。そして、ISO 3166-2:JPは、日本のその下位の地域、すなわち都道府県が定義されており、茨城県はJP-08、香川県はJP-37のようなコードが与えられています(この数字は、全国地方公共団体コードが使われていますね)。アメリカのISO 3166-2:USも、カリフォルニア州はUS-CA、アーカンソー州はUS-ARとそのままで定義されています。

ちょうど良さそうですので、このコードを用いてグローバルな経県値を定義することにします。

ExpWorldの実装

ということで、作ってみました。国のテーブルの名前をクリックすると、各国の地域ごとに経験値を記録することができます。

このサイト(GitHub Pages)で運用するために、静的なコンテンツのみで構成する必要があります。ですので、バックエンドにはAPIサーバーなどを必要とせずに、ブラウザだけで動くようになっています(そのためデータの保存先は、ブラウザのLocal Storageか、ダウンロードによってローカルマシンということになります)

ソースコードはこちらです。ライセンスはApache-2.0 Licenseとしています。

使ったライブラリ

下記のライブラリを使用しています。

地図ライブラリについては、少し前に使ったのでその続きという感じです。あとは、このblogと同じですね。

使ったデータ

今回の問題は(というよりいつも?)表示するべきデータです。

必要なのは、

の二つです。

ISO 3166-2は国ごとに定義されているので、かなり膨大な量になります。ISO 3166-1だけなら頑張れば手入力で作ることができると思いますが、ISO 3166-2のほうはかなりつらいです。

探したところ、それぞれ

が見つかったので、これらを用いることにしました。

後者はOpenStreetMapのデータ(planet.osm)から変換して作られたもののようです。確かにOpenStreetMapはISO 3166-2などの行政区画情報も入っているので、うまく引き出せば使えそうなのですが、結局巨大なDBからがんばって取ってくるしかないようなので、地図といて以外ではなかなか使うのが難しいデータですね・・・。

なお、これだけだとやはりデータが巨大になってしまうので、mapshaperを用いて単純化しています。

そのほか

Future Work

余談

なお、iso3166-2-dbでは、dispute/UN ディレクトリのデータを使用しています。ええ。単純に国や地域の正確な網羅的なデータがほしいと言ってしまうのですが、「正しい」一つのデータというのは存在しえないのが世の中の難しいところですね。国内であっても、富士山山頂付近の静岡県と山梨県の県境みたいな問題はありますからね。

今回は、経験値の数値化と単なる可視化をしたかっただけですので、元にしたデータをそのまま利用しております。それ以外の意図はまったくありません。ですので、たとえば北海道や島根県の領域をじっくり見て何かの意図を感じるのは完全な間違いです。

もっと余談

タイトルは何も思いつかなかったので、「世界をわが手に」(The Trouble with Bubbles)によります。SFの原作ではなく、ぱにぽにだっしゅ!第3話の次回予告(「世界は我が手に」)からです。響きが良いからというだけで他意はありません。

まとめ

ということで、グローバルな経県値を管理するためのWebサイトを作ってみました。やっぱり、データに多少問題があっても可視化されるとうれしいものがありますし、作るのもやる気がでてきます。可視化できるシステムは、やっぱりいいなという気持ちになります。行ったことのない国でも、第2レベルの行政区画がどうなってるかを見るだけでもなかなかおもしろいと感じますしね。

まあその一方で可視化するためのデータを収集して整備するところが大変だったりするので、世の中楽なことはないというところですかね。

ちなみに、自分の国単位の経県値を入力したところ、たったの83点でした。世界は広いですね。