Train 4うら話 |
Train3までの裏話はこちらをご覧ください。これは、Train3の裏話の続きになります。
前作のTrain3は、98年3月に完成したものでした。
当時は、雑誌に何度も載っていたのですが、99年に入ると、ほとんど
雑誌の掲載依頼が入らなくなってしまいました。
利用者から、「うちの路線もサポートしてほしい」「自分で作れないか?」
というメールをたくさんいただきました。
実は、Train3は、時刻表データは別ファイルになっていたものの、マップ、駅、種別データは
プログラムに直接書き込んでいるハードコート仕様になっていました。
しかも、プログラム内で一括管理されているのではなく、関数ごとに不規則に
データが入っているので、後々のメンテナンスは困難でした。
そこで、同年の秋頃からどのような路線でもサポートでき、作成することもできる
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月初旬には
できると思っていました。
そうして、ようやくTrain4Makerのほうが完成しました。
本当は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は完成度が高く、電車の併合、分裂運転も規格変更で可能です。
TRAファイルも転用可能なので、「Train4
発車案内板」のようなソフトも制作可能です。
今後は、サポート路線拡大をメインにしていきたいとおもいます。
ただし、路線の作成は労力を要するので、どちらかというと他力本願で・・・(^_^;)
そして、Train4は電車関係のSoftでスタンダードになろうと考えています。
今回の教訓今回のTrain4制作で教訓になったことをいくつかあげておきます。 1,制作は、短期集中で Train4は途中にトラブルや仕事が入ったため、制作に時間がかかりました。 2,規格をはっきりさせよ Train4のファイル規格であるTRA規格がはっきりと決まらなかったので 3,システム全体を把握せよ 今回の電車制作は、京王線以外にも様々な路線をサポートする必要があります。 |