Hatena::ブログ(Diary)

Wisteria::Diary RSSフィード

2011/08/10

[][] DiaaiD アップデート

http://saas.mobitan.org/diaaid/

http://saas.mobitan.org/diaaid/step6.png

WinDIA ファイル自動生成サービス『DiaaiD』をアップデート。データ収集元である交通新聞社の時刻表サイト『どこなび』が『トレたび』に移行したのに対応しました。

最近ではスマートフォン用のダイヤ描画アプリがぼちぼち出てきているようです。が、サーバーサイド用のダイヤ描画コンポーネントは誰も作ってくれませんねぇ…。はぁ、やっぱ自分で作るしかないか。なるべく車輪の再発明はしたくないんですけどー。

2010/01/31

[][] えきから to OuDia

ってこんなもんとっくに誰かが作ってると思ったけど、今ネット上で公開されてるデータはどうやら手入力されたものばかりのようで…。ひょっとすると鉄道趣味界ではけっこう画期的かもしれません?

案の定いらっしゃったよ先駆者が (´д`;)

http://mickey.homelinux.net/~u-ryo/java/ekikara2oud/

2010/01/30

[][] WinDIA ファイル自動作成サービス「DiaaiD」

公開しました。

どこなびドットコムの時刻表データから WinDIA ファイルを自動生成します。できたファイルを OuDiaCocoDia などの対応ソフトに読み込ませるとダイヤグラムが見れます。わーい♪

ってこんなもんとっくに誰かが作ってると思ったけど、今ネット上で公開されてるデータはどうやら手入力されたものばかりのようで…。ひょっとすると鉄道趣味界ではけっこう画期的かもしれません?*1 今試したところ、山手線外回りの全列車 624 本を約 15 秒で処理できました。ホビーユースには十分でしょう。

今回勉強になったこと

  • ブックマークレットの作り方 (あとで読む を参考に。サーバーから本体スクリプトを取ってきて注入する)
  • WEBrick の使い方
  • RubyGems の使い方
  • Mechanize の使い方 (EUC-JP 対策)
  • Nokogiri の使い方 (XPath の書き方)
  • Gems で入れたライブラリを CGI で使う方法 (環境変数をスクリプト内で設定する)
  • 日本語ファイル名でダウンロードさせる方法 (Content-Disposition ヘッダを使う。文字化けを完全に避ける方法が不明)

今後の野望

駅で電車を待ってる間に、携帯で時刻表の代わりにダイヤグラムが見たいわけですよ。

  1. タダだべで携帯メールを HTTP リクエストに変換
  2. ゲートウェイで GET リクエストを POST リクエストに変換
  3. どこなびで時刻表を検索・取得
  4. DiaaiD で時刻表を WinDIA ファイルに変換
  5. レンダリングエンジンで WinDIA ファイルを画像ファイルに変換
  6. ゲートウェイへ画像ファイルをレスポンスとして返す
  7. タダだべで画像ファイルを添付した携帯メールを送信

今回 4. ができたから、あとは 2., 6. のゲートウェイと 5. のレンダリングエンジンをサーバーサイドで動かせれば完璧♪

ただ、レンダリングエンジンの開発にはけっこうノウハウが必要みたいだから、なるべくなら実績のあるものを再利用したい。グラフィックコンポーネントの素性的には Mac OS X の Quartz が最優秀に違いない。しかし Mac は仮想環境で動かないからサーバー化するにも実機が必要なんだよなー。

Mac mini 買うか!?

*1:ちなみに鉄道プロ界では EDP とか GD とか呼ばれる化け物システムが動いていて、指令卓でスジをドラッグして時刻変更ができたりしますが、大元のデータ入力は結局手動です :-P

2010/01/28

[][] コンバータできた

どこなび時刻表 から WinDIA データに変換できたぞ! まだドキュメント書いてないから未公開だけどな!!

f:id:mobitan:20100129034807p:image

アクロバット (´Д`;) ハァハァ

2010/01/26

[][] ダイヤグラム閲覧サービスってないよね?

携帯でダイヤグラムが見れたら撮り鉄歓喜じゃね?

先行事例

任意の路線のダイヤを web でリアルタイムに提供するシステムはなさそうだ。

要素技術

サーバーサイドでベクター図形を生成するライブラリがあればよい。

クライアントサイドで Flash という手もあるかもしれないけど携帯対応を考えると面倒そうだ。

データソース

待避・交換を含むダイヤをきちんと描くには全停車駅の着発時刻が必要。

できれば秒単位の時刻、通過駅の時刻、回送/貨物列車の時刻も欲しいけど、なかなか網羅的かつ再利用可能な形では公開されないわな。

想定される問題

駅のプロット間隔
均等にするのが一番簡単だが、停車駅の時刻だけでプロットすると通過列車と交差する可能性が高い。駅間距離に比例させるのが次に簡単だが、時刻表データと駅間距離データを同時に取れるデータソースがないので、それぞれ取ってきてマージする必要がある。駅間の標準所要時分に比例させるのが最も正確だが、時刻表データから標準所要時分を算出するには運転停車を取り除くなどの統計的処理が必要になる。いずれにせよ通過駅の時刻が手に入らない限り矛盾が生じる可能性はゼロにならないわけで、どこかで妥協が必要だろう。
スケーリング
小さな画面で意味のあるダイヤグラムを表示させるのは難しい。特に携帯ではインタラクティブに拡大縮小させるのが難しいので、画面サイズと列車密度に応じて最適なプロット範囲を決めたり、範囲が広いときは適当に間引いてプロットするようなアルゴリズムが必要になりそうだ。

参考文献

2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |