高専ロボコンデータベースをつくっていくブログ

高専ロボコン第30回大会を終えてこれからも面白いロボコンであってもらいたいということで最近の高専ロボコンに感動した自分が満足できそうなデータベース構築のために情報を蓄積していくためのブログです。

キャンパスコードと順序

動機

 ロボット名を収集し、スプレッドシート上で殆ど文字列ばかりのタプルを一つのレコードとした簡易なデータベースを作っていて、気がつきました。やっぱり、キャンパスコードが必要であると。2,3の手動操作で、または短いGAS*1を書いてマージさせようと思っていましたが、手動では作業量がO(n)ではありますが効率よくできませんし、スプレッドシートの機能やGASで処理しようと思っても、ソートが面倒なことに気がつきました。

 一応、スプレッドシート上では北から南のキャンパスに向かって順序をつけていますが、私の脳内にある順序で並べているだけであって、動かそうとするプログラムに学校名・キャンパス名を与えただけでは、文字コード順ぐらいでしかソートできません。また、JIS 0408という大学・高等専門学校コード(Identification code for universities and colleges)では、なんとなく北から南へ順番にコードが与えられてるように見えますが、緯度や経度でみると基準が全く分からず、国立・公立・私立とコード内で区分されているのでコードだけで、北から南に順序よく並べられません。

 これから得ようとしている南北緯度そして東西経度基準のコードですが、そもそもキャンパスの緯度と経度の比較に意味があるのかと問われそうです。コードの順序の根拠になるぐらいのことしか言えません。また、緯度と経度からの順番の決め方が問題です。実数R^2から自然数Nへの写像にはなり得ますが、関数はなく、アルゴリズムが必要であり、例えば凡そ同緯度であれば経度の大きい方を先にするなど、自然科学的な根拠が薄いデザインをしなければなりませんが、それでよいと思います。先ずは前進*2

仕様

 かなり多くを端折りますが、JavaScript*3でキャンパス名(学校名)と略称を内包したGoogle MapのAPIを利用するコードを書き、緯度と経度を取得し、次の条件とアルゴリズムでソートしてCSVファイル*4を得ることにした:

  • 高等専門学校名は現在の学校名を利用する。
  • 学校名の「国立」「公立」「私立」などの「接頭辞」はつけない。
  • プログラムに内包している高等専門学校名は地区毎にまとめられていて、地区毎にソートさせるために同じ地区には同じ地区コードが与えられる。また、コードの小さい順で処理する(1,2,3,...の順で)。
  • 地区コードは、国内:0、北海道:1、東北:2、関東甲信越:3、東海:4、近畿:5、中国:6、四国:7、九州沖縄:8、国外:9、と対応させる。(例:...,[3,'幾徳工業高等専門学校',...], [5,'大阪工業高等専門学校',...],...)
  • スラバヤ電子工学ポリテクニックも入れておくこと。
  • 桐蔭学園工業高等専門学校も入れておくこと。
  • 緯度と経度は「度」までを使用するが、小数点第6位まで利用する。
  • 緯度が同じ場合、経度が大きい方を先または前方にする。
  • 地区コード、キャンパス名(学校名)、略称、緯度、経度、キャンパスコードの順で、CSV形式で出力する。
  • 略称は勝手に決めてよい。(キャンパスコードを決めるのに何ら影響はない。)
  • キャンパスコードの順序と上記の出力順は同じであること。
  • キャンパスコードは自由に設計してよいが。地区毎にソートしなくても、キャンパスコードのソートで地区毎にまとまり、上記の地区コードの順番で並ぶこと。地区コードを包含したコードでもよい*5

成果物

ソースコード

 ソースコードを埋め込もうと思いましたが、スマートフォンなどでは見づらいと判断したので、次のリンクを貼るだけにしました:

https://gist.github.com/Matthew238/efc246bbe00f1f7c17a9#file-campus_code-html

 ソースコードのインデントなどに気をつかって何回かgistに投稿していたら、人間ではないと判断されてしまい、現在公開されていません*6。代替として下記のリンク先をご覧ください。

campus_code.html - Google ドライブ

 アカウントを公開して欲しいとメッセージを送っていたら、いつの間にか解除されていました。gistのリンクを見てください。

実行結果

 CSVファイル形式で既存のスプレッドシートに取り込める。文字コードUTF-8で、区切り記号はコンマである。エクセル用ファイル化したもののリンクも公開しておく:

campus_code.csv - Google ドライブ

campus_code.xls - Google ドライブ

開発中に気づいたこと

 何か至らぬだけかもしれないが、次のことに気づいた:

全国高専地図

 昔、といっても20年ぐらい前ですが、某大学にて、大学ロボコンの情報が集まる掲示板があるサイトの隅っこに高専ロボコンDBの魁とも言うべきページがありました。その中にCGI*7か何かで作られていた全国高専地図がありました。赤い点をクリックするとリンク先の高専の情報が書かれているページに移動するものでした。

 今回プログラミングのために調べものしていたら、偶然ですが、沼津工業高等専門学校教養科の佐藤崇徳研究室(地理教室)のサイトにGoogle Mapを利用した昔のものよりも遥かに使い勝手が良さそうなものを発見したので次のリンクを貼り付けておきます:

ウェブ地図

六分儀/デービス・マーク15

六分儀/デービス・マーク15

 

*1:Google Apps Script

*2:後から幾らでも書き換えられると楽観しています(^^) 

*3:本当はRubyPythonで書こうと思ったんですが...

*4:本当はJSON形式で統一したかったんですが、CSVで出力にしました。

*5:結局、作業用に枝番が欲しくなったときに困らないように右端の桁はゼロにしました。

*6:自分だけは見えてる状態です。現在解除していただけるようにしていますが...

*7:懐かしい響きですね。