みたにっき@はてな

三谷純のブログ

交通シミュレータ

所属するゼミでは「仮想都市」の研究を行っているチームがあり、道路網や建造物の生成、車の動きのシミュレートなどを行っています。数年前から継続されている研究で、その間に学生が様々に入れ替わっているので、プログラムコードは肥大化してメンテナンスがだいぶ難しくなっているようです。
かと言って、またスクラッチから書き直すのも大変ですし、この手のプロジェクトのスムーズな運用はなかなか困難な問題です。
一般的に、このように複数の学生が入れ替わりながら複数年かけるような研究では、プログラムコードのメンテナンスはどうやってマネージしているのでしょう??
今までは個人で全部完結しているものしか見てきたことが無いので、よい方法を見つけるのは大変そうです。

で、手をこまねいているのもなんなので、とりあえず最初から自分で作ったらどれくらい大変だろうかと思い、先週の日曜日に6時間くらい時間を取ってコーディングしてみました。
その結果、1200行程度の小さなプログラムながら、次のようなものを作ることができました。

  • マウスクリックの簡単な操作で道路網を入力できる
    • 作成した道路網はファイルに保存し、後で読み込むことができる。
    • 道路網の表示は、ズームイン・アウト、パンがマウス操作でできる。
  • 十字路には自動的に信号機が配置され、赤・黄・緑に周期的に切り替わる
  • 車が道路網上を移動する
    • 前の車に衝突しないように車間距離を保つ
    • 交差点では信号機が赤のときは停止する。
    • 交差点で曲がるときにはウインカーを点滅させる。

実験的に作ったプログラムですが、Java言語でそれなりにオブジェクト指向を意識してクラス構成を行っているので、拡張は容易に行えると思います。興味を持った学生には使ってもらう、もしくは参考にしてもらえたらよいな、と思っています。

このプログラムはこちらで公開しているので(ソースコードも)、どなたでも自由に使っていただいて結構です。