※私的メモです
無料サーバーは転送容量に制限がある。DBやファイルに頻繁にアクセスするプログラムを作ると、いずれ転送容量を超過してアカウントが停止されてしまう。ローカルファイルにDBをエクスポートできれば、この問題を解決できる。しかもそうすると、htmlとjs一式をアーカイブして配布すればwebなしでローカル環境だけで実行もできる。
大きく分けて2つの機能が必要だ。
- DBからローカルファイルに列車・時刻表データをエクスポートする機能
- File APIなどでローカルに読み込んで動作させるような仕組み
ファイルは単一のものでないと扱いが面倒で仕方ないので、1ファイルにすべての情報を詰め込むパッケージ方式を導入するべきだ。ローカルに保存するファイルは、できるだけ容量が小さい方が良い。例えば、路線名、駅名は文字列で与えると冗長なのでIDを振らざるを得ないだろう。
仕様案
[line] 1,小田急小田原線,#0086CE 2,小田急多摩線,#0086CE 3,小田急江ノ島線,#0086CE 4,箱根登山電車,#E84B14 (略) ※路線ID,路線名,色 [station] -1,小田急小田原線 1,新宿,0.0,35.6908,139.6996 2,南新宿,0.8,35.6835,139.6985 3,参宮橋,1.5,35.6786,139.6936 (略) ※駅ID,駅名,営業キロ,緯度,経度 [trainkind] -1,小田急小田原線 1,各停,#9C9C9C 2,区間準急,#00AFE4 3,準急,#009A61 (略) ※種類ID,種類名,色 [train] -1,小田急小田原線 1001,1,5,,,,34,5:17,35,5:20,35,5:20,36,5:24,.... 5501,1,1,3,5501,1,5:21,2,5:22,2,5:23,3,5:24,.... (略) ※列車名,平日休日,種類ID,種類名(特急列車の名前など),直通先路線ID,直通先列車名, 発駅ID,発時刻,着駅ID,着時刻,発駅ID...(以下終点まで繰り返し)
パッケージには以上のような情報があれば十分だろう。DBはだいたいできたから、このようなファイルを作成するPHPスクリプトを作成し、どのくらいのサイズになるのかまず実験してみよう。将来的にはあらゆる路線の表示に対応するため、スキン機能も必要だ。stationにxy座標を指定したり、特定の駅だけ表示を変えたり、曲線を描いてみたり。。
DBを使用する場合でも、PHPからクライアントにJSONを渡す方式ではサイズがデカくなりがちなので、上のようなテキストをPHPに作らせて、クライアント側で解釈するようにしよう。