Train 4

 うら話  

201系クモハ200

Train3までの裏話はこちらをご覧ください。これは、Train3の裏話の続きになります。

Train3の老朽化

前作のTrain3は、98年3月に完成したものでした。
当時は、雑誌に何度も載っていたのですが、99年に入ると、ほとんど
雑誌の掲載依頼が入らなくなってしまいました。
利用者から、「うちの路線もサポートしてほしい」「自分で作れないか?」
というメールをたくさんいただきました。

実は、Train3は、時刻表データは別ファイルになっていたものの、マップ、駅、種別データは
プログラムに直接書き込んでいるハードコート仕様になっていました。
しかも、プログラム内で一括管理されているのではなく、関数ごとに不規則に
データが入っているので、後々のメンテナンスは困難でした。

Train4の規格策定

そこで、同年の秋頃からどのような路線でもサポートでき、作成することもできる
TRA規格を考え始めました。Train4は自分用に作られたTrain3と異なり、
始めから公開,雑誌に収録されるために作られました。

Train 95年 春 MS-DOS版

都営新宿線と、京王線の橋本行きのものだけ

Train 2 96年 MS-DOS版

電車データを正確にして、京王線も新宿から
橋本に加え、府中方面までサポート

Train 3 97年冬
  〜
98年春
Windows 95,98,NT版

電車データを97/12/24の新ダイアにした。
都営新宿線と京王線をフルサポート

Train 4 98年秋
  〜
99年冬
Windows 95,98,NT版

どの路線もサポートできるようにした。

しかし、実際に規格策定を始めると、「途中駅止まりの電車はどうすればいいのか?」
「途中から発生する電車はどうする」という問題が起きました。
さらに、「2路線に分岐したり、混ざる」ものや「同じ駅に行くのにも線路が異なる」
ものをどうサポートするか?というのは特に頭を悩ませました。

これを解決する方法は、線路をベクトルで考えることでした。
こうすることで、かなり複雑な路線でもサポートが可能になります。
また、上り/下りを区別せずに扱い、ベクトルに平行なものを上り(or下り)として
抽出できるようになりました。

この考え方がわかってからは順調に作業がすすみ、最初にTrain4Makerを
制作し、その後にTrain4を出すことにしました。
また、テスト用の路線として南北線を使用しました。
このころは、Train4の完成は年内としていながら、実際の完成は8月初旬には
できると思っていました。

Train4 Maker完成

そうして、ようやくTrain4Makerのほうが完成しました。
本当はTrain4と同時にリリースしたかったのですが、Train4が遅れそうだったので
先に出すことにしました。(このバージョンは正式版とせず、β版とすればよかったと
後で後悔するのでした。)

Train4が遅れ始める:恐怖のメモリーリーク

それは7月下旬でした。
Train4からファイルを開きデータを表示し終わった後、終了コードが「-1」で
返ってきて、メモリーリークが起きたというのです。
しかも、このリークはウィザードで作成した直後のなにも手を加えないプログラムでも
起きました。これはC++などのバグのように思えます。
いろいろテストしたところ、Windows98でVisual C++4.0という古いSoftを
使用しているためだという可能性があがりました。
Visual C++6.0では、「-1」で返ってくるものの、リークは起きませんでした。
どうもこのリークは、カレントディレクトリに表示対象のファイルがなかったり
上のツリーを開いたときに起きることがわかりました。

この問題は現在も解決していませんので、Train4を使用される際はご注意ください。
(特にTrain4 Makerでは、最初にTRAファイルを作成するときに確実にリークが
起きます。)

さらに遅れる

あのメモリーリークを解決するのに一ヶ月を要し、時は8月になっていました。
7月末には京王線のダイア改正が行われ、Train4の完成が急がれていました。
しかし大学の学会などで忙しく、Train4はほとんど進まなくなっていました。
10月になると、新たに井の頭線もテスト用の路線に加えました。

この頃は頻繁にTRA規格を変更していました。こんなに変更があるなら
Train4Makerはβ版にしておけばよかったと後悔するのでした。

ようやく完成

幾たびの規格変更を経て、時は11月末になっていました。
再三の完成日延期を経てようやく12月2日に正式版が出せました。
しかし、このころはサポート路線が少なく南北線と井の頭線だけでした。
そこで、完全にTrain3との置き換えをはかるために、京王線のデータ作成に
励みました。
京王線のデータを作成してみると、データ容量が500KB程度になっていました。
これはデータを節約しなくてはと思い、データの無駄を削減すべくTRA規格1.1を
作成しました。これでたいていの路線は2/3に減少しました。
その後も路線拡大を計り、00/1/5現在8路線をサポートしています。
念願だった雑誌収録も、1社収録依頼が来ました。

今後のTrain4

現在のTrain4は完成度が高く、電車の併合、分裂運転も規格変更で可能です。
TRAファイルも転用可能なので、「Train4 発車案内板」のようなソフトも制作可能です。

今後は、サポート路線拡大をメインにしていきたいとおもいます。
ただし、路線の作成は労力を要するので、どちらかというと他力本願で・・・(^_^;)

そして、Train4は電車関係のSoftでスタンダードになろうと考えています。

今回の教訓

今回のTrain4制作で教訓になったことをいくつかあげておきます。

1,制作は、短期集中で

Train4は途中にトラブルや仕事が入ったため、制作に時間がかかりました。
そうすると昔に思いついたアイデアや注意点を忘れてしまい、思い出すのに
時間がかかったり、バグが増えてしまいました。
やはり制作は短期に集中して作った方がいいです。

2,規格をはっきりさせよ

Train4のファイル規格であるTRA規格がはっきりと決まらなかったので
TRA規格を利用するSoftがなかなか作成できませんでした。
Soft制作では、早期に枠組みを作った方がいいことがよくわかりました。

3,システム全体を把握せよ

今回の電車制作は、京王線以外にも様々な路線をサポートする必要があります。
そのため、特殊な電車、規則なども視野に入れシステム全体を把握する
必要があります。(ex.井の頭線の3種類のダイア、JRの複雑な乗り入れ)


戻るトップに戻る