画面に出た言葉を入力し、速さや正確さを数字で確認する。タイピング練習には、そういう一区切りがあります。「電車でタイピング」でもWPMやスコアを記録しますが、駅名を次々と消化する形にはしたくありませんでした。駅名を一つずつ打つことが、そのまま鉄道の旅になるようにしたかったのです。練習が進むことと、地図の上を進むことを同じ動きにする。電車を実際の地図の上で走らせたのは、このゲームの一番中心にある考えからでした。

キーボードで一文字正しく打つと、画面の中央にいる小さな電車が、次の駅へ向かって少し進みます。現在の駅名をどこまで打てたかという割合が、そのまま駅と駅の間の位置になります。短い駅名なら一打で大きく進み、長い駅名なら少しずつ進む。最後の文字を打ち切ると駅へ到着し、通ってきた区間が路線の色で地図に残ります。「駅名を一つずつ打つことが旅になる」という考えを画面にすると、自然にこの形になりました。電車は、駅名を打ち終わるまで待ってから動くのではありません。一文字ごとに動くので、今押したキーがそのまま車輪を前へ送ったように見えます。入力欄の中で一文字進んだという小さな変化が、地図の上では次の駅へ向かう動きになる。ゲームの内部では入力の進み具合を駅間に割り当てているだけですが、画面では指の動きと電車の動きが切れずに繋がります。駅名を打っている時間そのものが、移動中の時間になります。ここが大事でした。

もちろん、一打が現実の一定距離を表すわけではありません。短い駅間でも長い駅間でも、その駅名を打ち終えたところが到着点です。駅間の距離と問題文の長さは別にして、表示された駅名のうち正しく入力できた割合を、出発駅から到着駅までの位置へ重ねています。打ち間違えたときは先へ進まず、正しいキーが入るとまた動き出す。ここでは、駅名を打つ進み方と、路線を走る進み方を合わせています。

この動きは、プレイ画面に入る前から地図の上で続いています。初めてアドベンチャーを遊ぶときは、全国の収録駅から出発駅を一つ選びます。その駅が地図上の現在地になり、そこから乗れる路線と進行方向を地図の上で決めます。方向を確定すると、地図は選んだ場所へ寄り、そのまま駅名を打つ画面へ移ります。選択に使った地図と走行中の地図は、同じ現在地と同じ路線を見ています。さっき地図で選んだ線の上を、今度はキーボードで進むわけです。全国を遠くから見ていた画面が出発駅へ近付き、一文字目を打つ。そこから、選んだ方向へ電車が発車します。

先日、Redditで「電車でタイピング」を紹介する投稿がありました。そのコメント欄に、「東海道本線の代わりに琵琶湖線と表示されていて、路線の愛称を使っているのが気になる」という指摘がありました。私は開発者だと名乗り、遊んでくれたことへのお礼と一緒に、現在は通称だけを使っていると返答しました。画面に出す路線名として、通称と正式名称のどちらを選ぶかという話です。

線路を実在の場所に重ねる以上、地図の上に出す名前も現実の呼び方と無関係にはできません。一方で、地図の線を正しく描くことと、画面の限られた場所に誰でも読める路線名を置くことは別の作業です。琵琶湖線という文字を見てその区間を探す人と、東海道本線という名称で探す人の両方がいます。Redditの指摘は、どちらかの呼び方を知っていれば十分だと思っていた自分の画面を見直すきっかけになりました。

Osaka Metroの案内でも、利用者が路線を探す入口には「御堂筋線」という名前が使われています。法令上や事業上の名前を調べる場面と、駅で次に乗る路線を見つける場面では、必要な表示が違います。ゲーム内では一瞬で進む方向を読めることも大切なので、普段の案内で見慣れた名前を先に出してきました。ただ、琵琶湖線への指摘を受けた以上、表示名が一つだけでよいと決め切ることもできません。

実在の地図であることも、この繋がりには必要でした。このゲームのアドベンチャーモードでは、現在地から乗る路線と進行方向を選び、駅名を打って次の駅へ向かいます。到着した駅と通過した区間が解放され、そこからまた次の路線を選びます。「次はどの路線へ進むか」「地元からどこまで繋がるか」という目的は、駅と路線が本当にある場所に置かれているから意味を持ちます。地元の駅を出発点に選べば、最初は見慣れた範囲から始まり、路線を乗り継ぐたびに現在地が先へ移っていきます。全国の駅が単なる問題の一覧だったら、何問解いたかは増えても、今どこにいるのかは残りません。地図の上に現在地があることで、次に打つ駅名が、いま乗っている路線の次の駅になります。駅名は一つずつ見ると独立した言葉ですが、路線の上では前後の駅と繋がっています。どの駅名を次に打つかは、現在地と選んだ進行方向が決めます。出題の順番にも、場所の繋がりが残ります。ここは似ているようで、遊んでいるとかなり違います。

アドベンチャーでは、現在地から繋がっている路線を選び、その先の駅名を順番に打ちます。終点や乗換駅に着けば、そこで改めて方向を決める。実在する鉄道網をゲーム盤にしたのは、この「繋がっている」という性質を、そのまま練習を続ける理由に使いたかったからです。今日は一駅だけでも、その一駅は地図と進捗に残ります。次に遊ぶときは、前回の現在地からまた路線を選べます。少しずつ路線が伸びるので、終わり方にも続きがあります。

旅を進めるうちに、入力する言葉の方も勝手に変わっていきます。駅名は地域によって長さも読み方も違い、拗音や促音、長音を含む名前もあります。電車が次の土地へ進むと、さっきまでとは違う名前が出てきます。短い音が続く区間もあれば、一つの駅名を打ち切るまでに時間が掛かる区間もある。そのばらつきを消さず、路線を進む中で出会う形にしています。

地図は、現在地を示す背景であると同時に、解放の範囲を見る場所でもあります。区間の両端の駅が解放されると、その間の線に路線の色が付きます。暗い破線の中に色が増えていくので、次にどの辺りへ進めるかを地図で考えられます。ただ、この色は通った線路そのものの履歴ではありません。別の経路で両端の駅を解放した区間にも色が付く場合があります。自分が何駅まで到達したかを示す地図として見るのが正確です。次に開いたときは、保存された現在地からまた路線を選べます。

地図の進捗を確かめたいときは、左上の統計欄を押すと、解放駅と走破路線について現在数だけでなく全体数と達成率も見られます。最初は数だけを出し、母数は必要になったときに開く形です。全国の駅数が大きいので、始めたばかりの一駅をいきなり巨大な分母と並べないためでもあります。現在地も同じ欄で確認できます。地図はドラッグで動かし、ホイールや画面の+と-で拡大縮小できます。色の付いた区間を眺めるだけでなく、今どこにいて、全国のどこまで進んだかを自分で確かめられます。

この割合は、走った線路の総延長に対する割合ではありません。駅は解放済みの駅数、路線は全ての駅を解放して走破扱いになった路線数を、それぞれの総数で割っています。線路の色が長く延びていても、駅数が同じなら駅の達成率は変わりません。短い路線を一つ終えても、長い路線を一つ終えても、走破路線数では一つです。地図で見た広さ、駅の数、路線の完了数が違う尺度であることを知っていると、自分の進み方を読み違えにくくなります。

路線名を確かめるときにも、画面の文字だけで決めないようにしています。同じ通称がいくつかの基幹路線の区間にまたがる場合、名前だけを一件ずつ置換すると、どの区間の話なのかが失われます。まず地図上の区間と駅の順序を確かめ、次に画面で読みやすい呼び方を選ぶ必要があります。路線の正式名称をたくさん並べるほど正確になるわけでも、通称だけなら全員に分かるわけでもありません。地図の線と表示名を対応付ける作業として扱うことが、今後の修正の前提になります。

JR西日本の紹介では、東海道本線の京都から米原を琵琶湖線として案内しています。さらに米原から長浜は北陸本線でありながら同じ愛称を使います。「琵琶湖線は東海道本線の別名」と一対一に置き換えるだけでは、区間の違いが消えてしまいます。名称を二つ持つ列を全路線へ自動的に作る前に、その名前がどの区間を指すかも確かめる必要があります。

Redditの返答では、「高速電気軌道第1号線(大阪メトロ御堂筋線)」、「JR東北本線(宇都宮線)」、「横浜市高速鉄道1号線・3号線(ブルーライン)」と、正式名称の後ろに括弧で通称を書きました。この形だと、御堂筋線の例は二十一文字、ブルーラインの例は二十二文字になります。通称だけなら「大阪メトロ御堂筋線」は九文字、「ブルーライン」は六文字です。併記すると、名前の部分だけでそれぞれ十二文字、十六文字増えます。

正式名称と通称を両方表示する案も考えました。琵琶湖線の横に東海道本線と出せば、Redditで出た指摘にも応えられます。御堂筋線なら、「大阪メトロ御堂筋線(高速電気軌道第1号線)」と表示することになります。ブルーラインなら、「ブルーライン(横浜市高速鉄道1号線・3号線)」です。この時点でも路線名はかなり長くなります。

通称の「つくばエクスプレス」が、括弧の外と中に一度ずつ出てきます。通称だけなら九文字ですが、併記すると括弧も含めて二十八文字になります。そのうち十八文字分は、二度書かれた通称です。正式名称の「首都圏新都市鉄道つくばエクスプレス」の末尾に、通称の九文字がそのまま入っています。正式名称と通称の二つの欄を順番に出しただけで、この表示になります。

つくばエクスプレスの例では同じ語の重複が目立ちますが、琵琶湖線では一つの愛称が複数の基幹路線の区間にまたがります。二つを単純な別名として扱う方式では、表示の重複を避けられても、どの区間を指すかは解けません。路線名の表記を整える作業は、短い文字列を選ぶだけでなく、実際の区間と対応を確かめる作業でもあります。

JR西日本の東海道本線の記事は京都―米原間を琵琶湖線と記し、北陸本線の記事は米原―長浜間を同じ愛称で呼んでいる。この例を知ると、一つの路線に別名を一つ付ければ終わる、という見方も変わります。地図上で選んだ線がどの区間かを保ったまま、その場所で読める名前を出す必要があります。

御堂筋線と高速電気軌道第1号線のように別々の名前になっている組み合わせもあれば、つくばエクスプレスのように通称が正式名称の中に入っている組み合わせもあります。ブルーラインのように、一つの通称に対して正式名称の方に1号線と3号線が入っている例もあります。併記したときの文字列は路線ごとに違い、そのまま並べると名前が重なる例もあります。

現在のゲームデータには表示用の日本語名と、ある場合は英語名が入っています。正式名称と愛称を別の欄で全国一律に管理しているわけではありません。日本語画面では表示用の名前を一つ出し、英語画面では英語名があればそれを使います。そのため、見た目だけ括弧を足して「正式名(愛称)」へ変えることもできません。名前と区間を一つずつ確認する作業が先です。

実際の地図を使うと決めたことで、駅を緯度と経度の点として置くだけでは足りなくなりました。ゲーム内の駅名、読み、路線内の隣接関係を組み立て、線の形はOSMの路線データ、設定済みのPMTilesの実線路形状、国土数値情報の鉄道データを順に照合します。対応を確認できない区間は駅の代表座標同士を直線で結びます。画面に見える線は測量精度の線路図ではなく、構内配線やトンネルまで再現するものでもありません。実在の資料で確かめられた範囲と、駅の位置から補った範囲が混在するからこそ、ゲームの地図を乗換案内と同じものとして扱わないようにしています。

地図の線形には国土交通省の国土数値情報(鉄道データ)を照合しています。これは旅客鉄道・軌道の路線や駅を対象とするデータで、駅名、路線名、線形などの属性があります。一方、駅名の読みをこの線形データだけから得ることはできないので、ゲームの入力に使う読みや駅同士の順序は別に整えています。実際の鉄道データをそのまま画面に貼ればタイピングの問題まで完成するわけではありません。

出典を示すときも、国土数値情報の鉄道データを元にゲーム用へ編集・加工した地図だと分けて書くのが正確です。実在する駅の位置や線形を借りながら、入力用の読み、ゲーム上の接続、移動の演出をこちらで加えています。見た目が本物の路線図に近くても、運賃や乗換時間を案内するための地図ではありません。

一方で、実在する鉄道網をそのまま写せば全国を一続きに遊べるわけでもありません。離島や索道、独立した路線網など、物理的に離れたまとまりもあります。このゲームでは全国を進められるように、そうした場所へゲーム用の橋渡しを作る場合があります。近い駅同士の徒歩乗換も、決めた条件に合う組み合わせだけを接続しています。これは乗換案内ではなく、実在の駅と路線を材料にして、一つのゲーム盤として歩ける形へ整えたものです。現実の地理から得た接続と、全国へ進むために加えたゲーム用の接続は、同じものとして扱っていません。

プレイ中の画面では、電車を中央付近に置き、その周りの地図が進行に合わせて流れます。正しいキーを押すと、電車は直後の位置へ急に飛ばず、そこへ追い付くように少し滑らかに動きます。進んだところまで路線に色が付き、駅へ着くと小さな波紋が広がります。ミスをすると電車が赤く揺れる。入力したことが地図の側で起きたこととして返ってくるように、それぞれの動きを置いています。

Redditでは、英語が得意ではないことを断った上で、機械翻訳を使って返答しました。その短い返答の中で「for now」を二度使っています。一度目は通称だけを使うと書いた文、二度目は正式名称と通称の併記を採用しないと書いた文です。

今のデータには、路線ごとに画面へ出す名前が一つあります。正式名称と通称を併記する案はまだ採用していません。Redditの返答では、より良い案があれば教えてほしいと書きました。時間を取って見直すときは、まず区間と名前の対応を一つずつ確かめたいです。