遠鉄バスどこ!?って何?
この記事を読む前に...
- 遠鉄バスについて既にご存じの方はこの章をスキップ!
- 動作画面だけ見たい方は、ページの一番下までスキップ!
静岡県では「遠鉄バス」(遠州鉄道株式会社)が広く普及しています。静岡県で暮らしている方なら、一度は乗ったことがある(はずの)バスですね。
そんな遠鉄バスには「遠鉄バスどこ!?」というモバイルアプリがあります。
モバイルアプリ「遠鉄バスどこ!?」
乗車バス停と降車バス停を入力すると、そのルートを通るバスが、あとどのくらいで乗車バス停に到着するのかを確認できるアプリです。
しかし、このアプリはモバイル専用なので、PCでは利用できません。公式ホームページにもPC向けの確認ページはありますが、アクセスするのにやや手間がかかります。
さっそく作っていく
本記事では、コードの細かい説明よりも、どのような仕組みで実装したかの概要を説明していきます。
全体概要図
まずは基本設計から。このシステムには2種類のAPIが必要です。
- 遠鉄バス公式HPのページに自動入力して運行情報を取得し、JSON形式に整形して返すAPI
- 地域を入力すると、その周辺のバス停をリストアップし、JSON形式に整形して返すAPI
こうすることで、「バス停の入力が手間」「正確なバス停名を覚えていない」といったユーザーの不便を解消でき、利便性が向上します。
API作成
作成したAPIは以下の2つです:
- 遠鉄バスHPから最新のバスの運行状況を取得するAPI
- 任意の地域のバス停を取得するAPI
前者は遠鉄バスHPから、後者はNAVITIMEから情報を取得しています。
- 遠鉄バスHP:
- NAVITIME:
以下はFastAPIで作成したAPIコードの一部です。
from fastapi import FastAPI
from _getbustable import GetBusTable
from _getbusstop import GetBusStop
from starlette.middleware.cors import CORSMiddleware
app = FastAPI()
# CORS対策
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"]
)
# 遠鉄バスHPから最新のバスの運行状況を取得するAPI
@app.get("/latest")
def read_bustable(from_station:str, to_station:str):
try:
getbustable = GetBusTable()
result = getbustable.get_bustable(from_station=from_station, to_station=to_station)
return result
except:
return None
# 任意の地域のバス停を取得するAPI
@app.get("/busstop")
def read_busstop(erea:str):
try:
getbusstop = GetBusStop()
result = [getbusstop.get_busstop(erea=erea)]
return result
except:
return None
APIはGitHubのリポジトリに公開しているので、詳細が知りたい方はそちらをご覧ください。また、GitHub Railwayにデプロイして、誰でも使えるWebアプリケーションとして公開しました。
HTMLを作成
APIが完成したら、HTMLファイルを作成してAPIを実際に叩いてみます。
具体的には、乗車バス停と降車バス停をセレクトボックスで選択し、検索ボタンを押すと、現時点での運行状況が表形式で表示されるページを作成しています。コードはGitHubに公開しています。
Koyebにデプロイ
完成したAPIをKoyebにデプロイしました。
(詳細な手順は時間があれば後ほど紹介予定です)
実際の動作画面
- セレクトボタンで選択し、検索する様子
GitHubリンク
2024/7/2 更新
7月1日に遠鉄バスの公式HPがリニューアルされ、PC版の「遠鉄バスどこ!?」が使いやすくなりました(少し複雑な気持ちです...)
- 遠鉄バスPC版:
- NAVITIME遠鉄バス:
マイページ紹介