本文へスキップ

おうち発車標 ― 名古屋市営地下鉄 東山線の新型発車標を、おうちの Windows 2000 で動かす

プロジェクト紹介Windows 2000電光掲示板自作ソフト

駅のホームで「次の電車は何時に、どこゆき」を出している 発車標。 あれを家で動かしたくて、名古屋市営地下鉄 東山線の発車標を再現するソフト 「おうち発車標」 を作りました。

表示役は Windows 2000。古い PC を 1 台、電源を入れたら発車標だけが立ち上がる「発車標専用機」にして遊べます。 この記事では、どんな見た目で、どう動いて、中身はどうなっているのかを全部まとめます。最後に公開版のダウンロードもあります。

個人が趣味で作った非公式のソフトです。名古屋市交通局とは関係ありません。 公開版には音声(接近メロディ・到着放送)は入っていません。使いたい音声は自分で用意して入れる方式です(→ 音声について)。

できること

  • 2 種類の発車標:オレンジと緑の 旧型LED と、東山線の新しいフルカラーの 新型LED
  • 3 つの動かし方:時刻を手で入れる「手動」、時刻表どおりに進む「時刻表」、「2分おき」のように間隔だけ決める「○分おき」
  • 実際の駅っぽい流れ:在線位置 → 接近表示 → 接近メロディ → 到着 → 到着放送 → 停車 → 発車、を時計に合わせて自動で
  • 在線位置:当駅 <<< 前駅 <<< 前々駅に電車の絵が出て、近づいてくる様子が見える(新型LED)
  • 多言語:行先が 日本語 → 英語 → 中国語 → 韓国語 と切り替わる(新型LED)
  • 何台でも:番線ごとに 1 台ずつ、最大 10 台まで。1 台のサーバーに何台でもクライアントをつなげる
  • 専用機モード:電源を入れると、ゲーセンの筐体みたいな黒い起動画面 → 発車標だけが起動
  • API:curl で「1 台目を 2 分おきに」などの操作ができる

しくみ:サーバーとクライアント

おうち発車標は 2 つに分かれています。

役目 動くところ
サーバー 時刻表から「いま何を表示するか」を計算する。Web の操作画面もここ Node.js(Windows・Mac・Linux)
クライアント サーバーから表示内容を受け取って、発車標の画面を描く。音声も鳴らす Windows 2000 以降(hasshahyo.exe)

Windows 2000 は今の Web(HTTPS や新しい JavaScript)がほぼ使えません。 なので「考える仕事」は全部サーバーに任せて、Windows 2000 側は 1 秒ごとに表示内容を取りに行って描くだけ にしています。

サーバーからクライアントへ渡すのは、こんな UTF-8 のテキストです(タブ区切り)。

hasshahyo-new 1
platform=1
lineJp=東山線
viaJp=名古屋 栄 藤が丘
langs=j,e,s,o
row=train	12:10	0	0	藤が丘|Fujigaoka|ふじがおか|藤之丘|藤之丘|후지가오카
msg=pos	1	H09	H08	H07	当駅|||||	前駅|||||	前々駅|||||
end

row が 1 段目(12:10 藤が丘ゆき)、msg が 2 段目(在線位置。電車は前々駅と前駅の間)。 多言語の文字は 日本語|英語|ひらがな|中国語(簡)|中国語(繁)|韓国語 の形でまとめて送って、切り替えはクライアントがやります。

クライアントはこれを読んで描くだけなので、表示の決まりごとを変えたいときはサーバーだけ直せば済みます。 通信は LAN 内の HTTP(Windows 2000 が今の HTTPS に対応していないため)なので、サーバーはインターネットに公開しない前提です。

操作画面

おうち発車標の操作画面。左に台の一覧、右に選んだ台のプレビューと設定
操作画面。プレビューは Windows 2000 のクライアントと同じ決まりで描いています

ブラウザで開く操作画面です。左に台(番線)の一覧と、ほかの画面へのメニュー。右に選んだ台の大きなプレビューと設定が出ます。 台の一覧には、それぞれの「次の電車」も小さく出るので、開かなくても今どうなっているかがわかります。

設定は 4 つのタブに分けました。

タブ できること
運転 動かし方(手動 / 時刻表 / ○分おき)と、その中身
見た目 旧型LED / 新型LED の切り替え、段の数、番線・方面、新型LED の看板や在線位置の駅番号
お知らせ 流すお知らせ(1 行 1 件)と、流す間隔
放送 放送を流すか、使う音声フォルダ、設定のない行先で流す音声

変更は「保存して反映」を押すまでクライアントには出ません。保存していない変更があると、下のバーと台の一覧に印が付きます(Ctrl + S でも保存できます)。

動かし方は 3 つ。

  • 手動:時刻・行先・発車前(時刻の点滅)を入れて保存
  • 時刻表:平日 / 土曜 / 土休日の時刻表を入れておくと、サーバーの時計で次の電車を順に出す。 21:47 藤が丘 のほか、06:00-08:58/4 藤が丘(4 分おき)、24:12 藤が丘 最終 のような書き方もできます
  • ○分おき:間隔・運転時間・行先(藤が丘,藤が丘,星ヶ丘 のように順番に回す)だけ決めて走らせる

手動のとき。プレビューの下のボタンで、接近・最終電車・お知らせをすぐ切り替えられる
手動のときは、プレビューの下のボタンを押すだけで「接近」「最終電車」「お知らせ」に切り替わります

手動のときは、プレビューのすぐ下に ふだん / お知らせ / 接近 / 最終電車 のボタンが出ます。押した瞬間に発車標が切り替わる(接近なら接近メロディも鳴る)ので、リモコンみたいに遊べます。

すべての発車標。全部の台のプレビューが並ぶ
「すべての発車標」では全部の台を並べて見られます

ほかに、全部の台を並べて見る「すべての発車標」、行先ごとの名前と放送を決める「行先と放送」、秒数や色・文言・テスト時刻の「全体の設定」、つながっているクライアントの一覧、API の例があります。 「全体の設定」の テスト時刻 を入れると、好きな時刻から時計を進められます。最終電車の動きを見たいときに 0 時まで待たなくていいように。

表示のデザイン

旧型LED

旧型LED の発車標。通常・接近表示・最終電車
上から 通常 / 接近表示 / 最終電車

オレンジと緑の、昔ながらの LED 発車標です。操作画面の「表示」で 旧型LED を選ぶとこれになります。実際の駅の写真を見ながら、細かいところを合わせました。

  • 段は「2 本表示」なら 2 段だけ。お知らせ・接近表示・最終電車の案内は、3 段目を足すのではなく、その段の列車表示と入れ替わる
  • 接近表示「まもなく電車がまいります」は緑で、左寄せ
  • 最終電車は行先が赤。「藤が丘ゆき最終電車です」の「ゆき」だけ小さい字
  • 行先は 日本語 7 秒 / 英語 3 秒 で交互。発車前は時刻だけが点滅
  • 幅に収まる文は止まって表示、はみ出す文だけ流れる

LED は 1 ドットずつ描いています(標準は横 256 ドット・16 ドットのフォント)。消えているドットもうっすら見えるので、遠目に見ると本物っぽくなります。

新型LED

新型LED の発車標

東山線の新しいフルカラー LED の発車標です(「表示」で 新型LED)。上に印刷の看板(番線・東山線のマーク・「名古屋 栄 藤が丘 方面」・英語)、その下に 横 384 × 縦 48 ドット のフルカラー LED があります。

1 段目は次の電車。時刻・行先(日本語)・行先(切り替わる)の 3 つが並びます。

行先が 日本語・英語・中国語・韓国語 と切り替わる
右側の行先が 日本語 → 英語 → 中国語 → 韓国語 と 4 秒ずつ切り替わる

2 段目は、時間によって中身が変わります。

  1. ふだんは 2 本目の電車(ときどき緑のお知らせが流れる)
  2. 電車が近づくと 在線位置(下で詳しく)
  3. 1 分前から 「電車がきます | Train approaching」 と 「黄色い点字ブロックの内側でお待ちください」 が交互に
  4. 電車が着いて停車中(1 段目の時刻が点滅)は、次の電車 に戻る

接近表示と、点字ブロックの案内、停車中
上から 接近表示 / 点字ブロックの案内(英語のとき) / 停車中(時刻が点滅して、2 段目は次の電車)

停車中に「点字ブロックの内側で…」を出しっぱなしにすると、電車がもう着いているのに変なので、案内は接近中だけにしています。

在線位置

いちばんこだわったところです。2 段目に当駅 <<< 前駅 <<< 前々駅が並んで、電車がどこまで来ているかが見えます。

在線位置の 4 段階
上から 前々駅にいる / 前々駅と前駅の間 / 前駅にいる / 前駅と当駅の間

時刻表の時刻の 電車の位置 表示
6 分前 前々駅に到着 前々駅の駅番号の枠が電車の絵に
5 分前 前々駅を出発 前々駅と前駅の間の <<< が電車の絵に
3 分前 前駅に到着 前駅の駅番号の枠が電車の絵に
2 分前 前駅を出発 前駅と当駅の間の <<< が電車の絵に
1 分前 ― 「電車がきます」

1 駅区間を「駅に 1 分止まって 2 分走る」で 2 分にしているので、前々駅からここまでちょうど 6 分。

  • 電車のいるところは、駅番号(または <<<)と電車の絵が交互に点滅 します(0.6 秒ずつ)
  • 在線位置がずっと出ていると 2 本目の電車が見えないので、電車が動いたときだけ 12 秒(10 回点滅)出して、ふだんの表示に戻ります
  • 当駅には電車の絵を出しません。当駅の枠にはいつも現在地のマーク(Ω の形)が付いています
  • <<< は当駅に向かって明るいところが流れるアニメーション

電車の絵と駅番号が交互に点滅する
同じ時刻の 2 枚。駅番号「H07」と電車の絵が交互に入れ替わる

電車の絵は、実物の写真を見ながら 1 ドットずつ打ちました(35 × 13 ドット)。

在線位置の電車の絵(拡大)
電車の絵の拡大。黄色い枠の中に、黒いふちで囲んだ電車

  • 先頭は左上が斜めに落ちた形。前面の窓はなし
  • 白い車体に、水色の柱と黒い窓、クリーム色の帯、白い裾、灰色の床下と車輪
  • 周りを 黒いふち で囲んで、黄色い枠の中でも形がわかるように

最初は左右対称の「それっぽい電車」にしていたんですが、写真と見比べると全然違ったので描き直しました。

最終電車

最終電車の案内

最終電車は 2 段目に黄色い枠で「この電車は○○ゆきの最終電車です」。これも言語が切り替わります。

発車までの流れ

時刻表・○分おきのときは、時計に合わせて実際の駅の流れを再現します(秒数は「全体の設定」で変えられます)。

タイミング 起きること
6 分前〜2 分前 在線位置(新型LED)
60 秒前 接近表示
45 秒前 接近メロディ・接近放送
時刻ちょうど 到着。到着放送(「この電車は○○ゆきです…」)。時刻が点滅
25 秒後 発車して、表示から消える

到着放送は、接近放送が長くて時刻を過ぎても鳴っているときは、終わってから流すようにしています。

Windows 2000 クライアント

Windows 2000 クライアントの画面
クライアントの画面(Windows 11 上で撮影)。上から 新型LED / 新型LED の在線位置 / 旧型LED

クライアント hasshahyo.exe は C で書いた 40KB ほどの小さな exe です。

  • C ランタイムを使わず、Win32 API だけ で書いています。今の Visual Studio の C ランタイムは Windows 2000 で動かないので、memset なども自前
  • ビルド後に exe のヘッダーの「対応 OS」を 5.0(Windows 2000)に書き換えて、Windows 2000 で起動できるようにしています
  • 使っている API は全部 Windows 2000 にあるものだけ(ビルドのたびに確認)
  • 画面はメモリ上の画像に描いてから一気に出すので、ちらつきません。LED は 1 ドットずつ、看板の文字はなめらかな文字で
  • 音声はサーバーから取ってきて保存し、Windows 標準の MCI で鳴らします(mp3・wav)
  • 新しい Windows でもそのまま動きます(Windows 11 で確認)

中国語・韓国語は、Windows 2000 にそのフォントが入っていないと表示できません。 フォントが無いときはその言語を自動で飛ばして、日本語と英語だけで切り替えます。 入れるときは「コントロールパネル → 地域のオプション → 全般 → システムの言語設定」で、簡体字中国語・繁体字中国語・韓国語にチェックします(Windows 2000 の CD が必要)。

専用機モード(ゲーセン風)

専用機モードの起動画面。システムチェックが並ぶ黒い画面
起動画面(Windows 11 上で撮影したので SYSTEM は NT 6.2 と出ています。IP アドレスは伏せています)

setup-kiosk.bat を実行すると、その PC を発車標専用機にできます。

  • 電源を入れると自動でログオンして、デスクトップの代わりに発車標だけ が起動(シェルの置き換え)
  • 起動中は、ゲーセンの筐体みたいな 黒い画面にシステムチェック(SYSTEM / MEMORY / NETWORK / SERVER)と「起動中です。しばらくお待ちください」。サーバーにつながったら発車標へ
  • 発車標が落ちても自動で立ち上げ直す。エラーのダイアログも出さない
  • ログオン中の「設定を読み込んでいます」も消して、背景は真っ黒。選べば Windows のロゴ画面も消せます
  • 保守メニューは Ctrl + Alt + Shift + F12(設定ファイル・コマンドプロンプト・再起動・電源オフなど)
  • 元に戻すときは remove-kiosk.bat

音声について

公開版には音声は入っていません。駅の放送や発車メロディには著作権があるので、配ることはしていません。 使いたい音声(mp3 か wav)を自分で用意して、サーバーの server\sounds フォルダに入れてください。

  • 操作画面の「行先の一覧」で、行先ごとに 接近 / 到着 / 最終・接近 / 最終・到着 の 4 種類を選べます
  • 方面ごとにフォルダを分けられます(sounds\Higashiyama・sounds\Nagoya など)。同じ名前のファイルでも、台ごとに自分のフォルダのものが流れます
  • 「行先名-cu.mp3」という名前で置くと、設定しなくてもその行先の接近放送になります(例: 藤が丘-cu.mp3)
  • 設定していない行先(試運転や自分で作った行先)は、台ごとの「設定のない行先」の音声を流します
  • クライアントはサーバーから音声を取ってくるので、Windows 2000 側に音声を入れる必要はありません

ダウンロード

おうち発車標 v1.0(公開版・約 90KB)

必要なもの

  • サーバー役の PC:Node.js 18 以降(追加のパッケージは不要)
  • 発車標にする PC:Windows 2000(SP4 推奨)以降。サーバーと同じ PC でも OK

使い方

  1. サーバー役の PC で server\start-server.bat を実行して、ブラウザで http://localhost:8020/ を開く
  2. 発車標にする PC に client フォルダをコピーして、hasshahyo.ini の サーバー= をサーバー PC の IP アドレスにする
  3. hasshahyo.exe を起動

くわしくは zip の中の README.txt を見てください。同梱の時刻表はサンプルで、実在の駅の時刻表ではありません。