【京都のバス走行位置開発】Recap of 2024

GTFS

Recap of 2024

ついに2024年も終わりですね。

これを書いているのは、ちょうど2024年最後の更新分(Ver.3.1.0 2024/12/31)の作業を終えて、あとはデプロイ作業だけという感じです。

せっかくなので「京都のバス走行位置」の2024年をざっと振り返ってみます。

1月1日

一応2024年になった瞬間システムが壊れるんじゃないか、と思って確認してました。(2024年ごときでそんなこと起こるわけない)

大丈夫でした。

1月15日

この日突如、京都市交通局から京都市営バスのGTFS-JPを公開するとのお知らせがあり衝撃でした。

京都市交通局でもGTFSの整備が進んでいるとは知っていましたが、まさかこんなにタイミング良く公開されるとは・・・

1月19日

京都市営バスのGTFS-JPが公開されました。

バイト先からスマホで確認して、初版にしては京都バスとは比べ物にならないデータの質の高さに驚きました。

1月24日

公開された京都市営バスのGTFS-JPを使って、擬似的に時刻表通り動いた場合のGTFS-RTを内部生成して地図に表示してみました。ここまでわずか5日間。暇すぎる。

結構苦労して処理を作ったんですが、結局台数が多くて負荷にしかならず、またMapLibre GL JS移行のタイミング(後述)でレイヤー管理の処理でこけて、いろいろあった結果4月以降は実装していません。

この更新以降、春分の日運行までを目処により近代的な地図ライブラリ「MapLibre GL JS」に移行するべく作業をしていました。

3月19日夜

実はここまでWordPress用サーバー(コアサーバー)でなんとか動作させていましたが、利用者がそれなりに増えたこと、これからも継続的に運営を行っていくこと、より様々な機能を実装していくため、VPSに移行しました。

開発を進めていたMapLibre GL JS版の更新分も適用しなければならないため、3月15日から数日かけてちまちまとVPSに環境を構築していき、春分の日(3月20日)を前に一気に作業を進めていました。

3月20日(春分の日)

無事に移行作業が終わり、早朝4時からGTFS-RT取得処理が動作しているのを確認しつつリリースしました。

懸念していた春分の日運行のデータもしっかりGTFS-RTで配信され、正しく表示されました。

ここから数ヶ月は「だいたい付けたい機能は付けた」ということでサボり期に入ります。

3月24日

京都市営バスの表示が不評すぎて廃止になりました。

5月

このころから本格的にデータをMySQLに保管して、Djangoのモデルで管理することを考え出しました。

GTFS-JPをcsvでただディレクトリに置くだけで更新管理は楽でしたが、処理のたびにcsvをpandasで読むというのはあまり不効率で、それによりデータの矛盾が起こることもよくあった覚えがあります。

特急の大原行きなのに岩倉村松方面行きと表示されてしまっている

5月3日

ゴールデンウィーク真っ最中のこの日、10系統(比良線)の続行と初めての32系統(花背線)の続行が走りました。

2023年8月から2024年12月までで、32系統の続行が出たのはこの日だけなような気がします。

5月13日

大学経由で京都バスに連絡を取ってもらい、京都バスの本社でバスロケに関して話を伺いに行く機会がありました。

詳細は伏せますが(とはいえ7月のランチタイムトークで結構喋ってますが)、社員の方に長時間に渡り丁寧に対応いただきました。ありがとうございました。

京都バスにおけるバスロケーションシステムの仕組みの事情を知ることができたので開発に関してとても助かりました。

7月11日

通っている京都産業大学の情報理工学部が毎週木曜日の昼休みに開催しているランチタイムトークでライトニング(40分)トークをしました。

先生によれば春学期で一番学生が多かったらしいです。うれしい。

それなりに反響も大きく、主に平#先生のせいで本人が知らないうちに情報理工学部のすごい人の間では名前が知れ渡っていくようになりました・・・

情報理工学部には何かしらで手伝ってもらうか関わりを持ちたいんですけど、なかなか機会が無いですね。

ちなみに、この日の上賀茂シャトルはなぜか143号車が走っていました。

8月12日

退院してすぐ、Django単体運用からDjango+Next.js+MySQLでゼロから再構築するために作業を始めていました。腕が動かないと外に出てもやることないんですよね。

今回はむやみに作り出しても仕方ないので、頻繁に扱うデータを全てMySQLに保存するため、Djangoのモデル構造からdraw.ioに書いてまとめてから実装に取り組んでいました。

8月16日

3日で原形のような状態まで至っています。

まだ情報表示が簡易なデザインだったり、上部のNavbarができてなかったりしてますね。

8月25日

Navbarがほぼ現在に近い状態のデザインになり、でかい情報OffCanvasもできています。

正直いまとデザインほとんど一緒ですね。

8月31日

Next-PWAを入れてPWAに対応させてデバッグをしていたようです。

これでブラウザのナビゲーションエリアを無くし、画面領域をフルに使って情報を見ることができます。

このころになるとほとんど完成しています。ただ、ところどころの細かいバグや実装が難しく、秋学期で時間も無くなるため開発スピードが落ちます。

9月上旬

kyotobus.turutaru.comを公開し始めてから1年が経ちました。

9月24日

バスロケ開発とは関係ないですが、この日は116号車が上賀茂シャトルを運用する前代未聞の大事件が起こっていました。

やっぱり産大シャトルにもバスロケ欲しいですね〜

10月4日

開発終盤でグラフを実装しました。

取得したGTFS-RTを全てMySQLに保存するようになったおかげで、過去のデータを素早く抽出して履歴を辿れるようになりました。

10月5日

滋賀県のピエリ守山でバスまつりがあったこの日、62号車がピエリ守山に表示されていました。

県外からバスロケが飛んでくるのは珍しい?

10月6日

引き続き作業を進めています。

見た目良い感じですがはみ出してますね。

10月15日

新バージョンリリースを翌日に控えたこの日、突如新車のバスロケが飛んできました。タイミングが良すぎる。

新車は9,12,25,139と、どれも先代の印象が強い番号ばかりだったこともありオタクの間ではちょっとした騒ぎになったそうです(?)

10月21日

ついに正式リリースとなりました。

10月22日(時代祭・鞍馬の火祭り)

この日は市内で時代祭と鞍馬地域で火祭りでした。

時代祭では迂回、火祭りでは臨時の直行バスの運転が行われるため、この日にトラブルを起こさず動作していればほぼ完璧と言って間違いないベンチマークとなる日です。

お遊びとして実装していた60分以上の遅れでレインボー(ゲーミング)になる仕様も無事見ることができました。

そしてなんと、京都バスがGTFS-RTを公開し始めて以来初と思われるAlertが飛んできました!急いで深夜に対応作業をしていました。(アホ)

ちなみにこのツイートは京都バスの中の人に見られてたらしいです。恥ずかしい。

GTFS-RT Alertに対応

しっかり鞍馬の火祭りを現地で見て、自分のウェブアプリで位置を見ながら帰りました。

11月3日

本格的に京都バスが秋の臨時便を走らせはじめたこの日、Google Adsenseの審査が通ったということで実験的に11月いっぱいWeb広告を貼ってみることにしました。

本来金儲けでやっているわけではないので、サイトに広告を貼ることはできる限り避けたいと考えています。でも実際に貼ってみないとどれだけの収益が得られるかわからない訳で。

結果的に11月は約1500円とコスト(700円)の2倍超の収益がありました。これなら収益でサーバー強化とかもできるので広告を貼り続けることにしました。

11月の紅葉シーズン

11月3日から本格的に始まった紅葉シーズンは葉っぱの色づきの遅さもあり、12月を過ぎてもシーズンが終わらない珍しい年となりました。

通常時は1日あたり200回のアクセスのところ、シーズン中は少なくとも400回、多い日は900回以上のアクセスがありました。1日で1週間分の収益を上げた日もありました。

これでも今年は116・123号車が走った日が少なく、去年のように毎日走っていればもっとアクセス数は多かったかもしれません。去年は旧25号車による特急19系統もありましたね。

いくらオタクにしてもアクセス数が多すぎじゃ無いか?と思いましたが、おそらくこのアクセスの大半は中の人「達」でないかと予想しています。しょっちゅうこの画面を見ているのを目撃しています

11月に入ると、就職活動や学業、教習所などいろいろ忙しくこれ以降は一切開発を進めていませんでした。

12月29日

そろそろ年越しのタイミングですが、年末休業やらでやることがなく開発をちょっと進めました。

この更新は明日12月31日適用の予定です。

おわりに

開発を始めてから約1年4ヶ月が経っていますが、まだまだ進化を遂げている・・・という感じです。

今年はLeafletからMapLibre GL JSへの移行、コアサーバーからXserver VPSへの移行、Django単体からNext.jsとの併用、とシステム周りでも大きく変わっています。かなりモダン仕様になったのではないでしょうか?

まだまだChatGPT/Claudeは手放せませんが、自分の経験値が増えるのと一緒にAIも日々進化していて、できることはどんどん増えています。特にCursorを使い始めたのはかなり大きかったと思います。

2025年は4回生、就職活動やらで半年はあまり進められないと思いますがバスロケ以外にも何かやってみたいですね。もしくはこのシステムを応用した何かを。

コメント

タイトルとURLをコピーしました