2 ポイント 投稿者 GN⁺ 2024-10-25 | 1件のコメント | WhatsAppで共有
  • サンフランシスコに住んでいて公共交通機関をよく使うようになったが、多くのアプリは到着通知を経路全体に対してしか提供していない
  • 現在地に近い到着通知だけをKindleに表示するようにして、出かける前に確認できるようにした
  • Kindleを脱獄してUSBNetを有効化し、SSHでアクセスできるように設定した。
  • これにより、ディスプレイを更新するcronジョブを設定できる。
  • Kindleに画像を表示するための第一段階として、BARTのリアルタイム出発ページのスクリーンショットを取得してKindleに送信した。
  • 初期の試行では、画像がひどく歪んで表示された。
  • 画像のサイズと色深度を調整して問題を解決した。

役に立つ画像を提供する

  • Node.jsサーバーを構築し、Puppeteerを使ってBARTページのスクリーンショットを撮影し、Kindleに適したサイズと色に調整してHTTPエンドポイント経由で返すようにした。
  • Raspberry Piにサーバーを設置し、cronを使って毎分画像を取得するように設定した。

最初からやり直す - アーキテクチャ

  • RustとAxumを使って新しいHTTPサーバーを構築した。
  • 511.orgのAPIを使ってBay Area内のすべての停留所の到着時刻を取得した。
  • Skiaグラフィックスライブラリを使ってPNG画像を直接レンダリングした。

データを取得する

  • 511.orgのAPIを使ってSF MUNIの到着時刻を取得した。
  • JSONレスポンスを解析し、必要な停留所の到着時刻だけをフィルタリングした。
  • 到着時刻を並べ替え、各方面ごとに表示した。

GN⁺の要約

  • このプロジェクトは、古いKindleを活用してリアルタイムの公共交通情報を表示するシステムを構築する過程を扱っている。
  • RustとSkiaを使って効率的で信頼性の高いシステムを構築している。
  • 公共交通情報をリアルタイムで提供することで、ユーザーに役立つ情報を届けられる。
  • 類似の機能を持つプロジェクトとして、Raspberry Piベースのスマートディスプレイプロジェクトが推奨されている。

1件のコメント

 
GN⁺ 2024-10-25
Hacker Newsのコメント
  • OneBusAwayはオープンソースプロジェクトで、多くの人々が毎日バス、電車、トラム、ケーブルカーの位置と到着時刻を確認するために利用している

    • OneBusAwayサーバーがある都市では、新しいSDKを使ってカスタムアプリを開発できる
    • サーバーがない都市では、DockerイメージとOpenTofu設定を通じてGTFSおよびGTFS-RTフィードをREST APIに変換できる
    • 米国のすべての交通機関は、新しい連邦規則に従って少なくとも静的な時刻表データをGTFSで公開しなければならない
    • ソフトウェア開発に関心のある開発者は常に必要とされており、あらゆるレベル・言語の開発者を歓迎している
    • 特にiOS開発者は、25万人の日次ユーザーに必要な改善を提供するために求められている
  • 別のユーザーは、OneBusAwayと似た機能を提供するÖffiというアプリに言及している

  • BARTとMUNIはGeneral Transit Feed Specificationをサポートしており、標準的な方法でデータを取得できる

  • ボストンで車なしで暮らしていたユーザーは、さまざまな経路で目的地に到達する方法を見つけており、「次の出発」ビューが便利だったと述べている

  • イギリスでは、駅の発車案内板を模した出発ボードを購入できる

  • ワシントンD.C.では、バスでは動作するが電車では動作せず、電車との互換性のための支援が必要である

  • Kindleを脱獄しなくても、ウェブブラウザを使って天気、交通、ニュース画面を簡単に作成できる

  • サンフランシスコ在住のユーザーは、周辺の停留所の出発時刻を表示し、交通を予測可能かつ把握しやすくするiOSアプリ「A Better Ride」を開発した

  • ユーザーはGoogle Mapsのような代替手段を求めており、電車が故障したり路線が遮断されたりした場合に代替経路を提示してほしいと考えている

    • たとえば、東京で渋谷から麻布十番へ行くさまざまな経路と、それぞれの長所・短所を説明している
  • Lenovo ThinkSmart Viewタブレットを使い、地域の交通機関との統合を通じてさまざまな機能を提供するシステムを構築した