キャンパスコードと順序
動機
ロボット名を収集し、スプレッドシート上で殆ど文字列ばかりのタプルを一つのレコードとした簡易なデータベースを作っていて、気がつきました。やっぱり、キャンパスコードが必要であると。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で、区切り記号はコンマである。エクセル用ファイル化したもののリンクも公開しておく:
開発中に気づいたこと
何か至らぬだけかもしれないが、次のことに気づいた:
- 「札幌市立高等専門学校」でまだ検索可能である。
- 「秋田工業高等専門学校」で検索できず、「秋田高専」で検索可能。
- 「一関工業高等専門学校」で検索できず、「一関高等専門学校」で検索可能。
- 「小山工業高等専門学校」で検索すると何故かサレジオ高専を返す。「国立小山工業高等専門学校」で検索可能。
- 「東京工業高等専門学校」で検索すると何故かサレジオ高専を返す。上記のソースでは、考えられる検索語を全て試しても、検索できない。
- 「東京都立産業技術高等専門学校荒川キャンパス」では検索できず、「産業技術高等専門学校荒川キャンパス」で検索可能。
- 「東京都立産業技術高等専門学校品川キャンパス」では検索できず、「産業技術高専品川」であれば付近の座標が得られる。
- 予め判っていたので、「桐蔭学園工業高等専門学校」は廃校なので検索するときは「桐蔭横浜大学」を利用する。
- 「石川工業高等専門学校」で検索すると何故か金沢高専を返す。「石川高専」でゲストハウスあたりを返す。
- 「富山高等専門学校射水キャンパス」では検索できず。上記のソースでは、考えられる検索語を全て試しても、検索できない。
- 「富山高等専門学校本郷キャンパス」では検索できず、「富山高専 本郷キャンパス」であれば検索可能。
- 「広島商船高等専門学校」では検索できず、上記のソースでは、考えられる検索語を全て試しても、検索できない。
- 「弓削商船高等専門学校」では検索できず、上記のソースでは、考えられる検索語を全て試しても、検索できない。
- 「熊本高等専門学校熊本キャンパス」では検索できず、「熊本高専 熊本キャンパス」なら検索可能。
- スラバヤの英語表記"(EEPIS)Electronic Engineering Polytechnic Institute of Surabaya"では検索できず、インドネシア語の"Politeknik Elektronika Negeri Surabaya"なら検索可能。
全国高専地図
昔、といっても20年ぐらい前ですが、某大学にて、大学ロボコンの情報が集まる掲示板があるサイトの隅っこに高専ロボコンDBの魁とも言うべきページがありました。その中にCGI*7か何かで作られていた全国高専地図がありました。赤い点をクリックするとリンク先の高専の情報が書かれているページに移動するものでした。
今回プログラミングのために調べものしていたら、偶然ですが、沼津工業高等専門学校教養科の佐藤崇徳研究室(地理教室)のサイトにGoogle Mapを利用した昔のものよりも遥かに使い勝手が良さそうなものを発見したので次のリンクを貼り付けておきます: