応用編:サーバpush型のカーナビのプロトタイプを作ってみた

応用編:サーバpush型のカーナビのプロトタイプを作ってみた

これまでの経緯を踏まえ、プロトタイプを作成してみました。せっかくのモバイルサーバですから、走るサーバ「push型配信のカーナビゲーションシステム」をプロトタイピングしてみました。構成は以下のようになります。

図4: カーナビプロトタイプの全体システム構成概要

前述で説明したシリアル通信の部分に、USBタイプのGPSモジュールを接続するようにします。これで、GPS情報をRaspberry Piに取り込んで位置情報を取得できるようになります。サーバとしては取得した位置情報をGoogle Maps上に表示するだけで、アクセスしてきたブラウザ等では自車の位置が表示されるようになります。サーバアプリはGPSからの位置情報を受信すると、そのままクライアントに対してJSON形式の位置データをpush送信するようにしています。500msくらいの間隔で1回の更新が行われます。クライアント側では、位置情報が更新される際に前の位置からラインを引くようにしておき、軌跡が表示されるようにします。

せっかくなのでAndroidアプリも作ってみた

基本的にはAndroidやiPhoneでもChromeなどのブラウザからサーバのURLにアクセスすることで位置が表示されますが、せっかくなのでAndroidアプリを作成してみました。著者が作成したWebSocket用クライアントを利用して改良しました。サーバからJSON形式の位置情報がpushで送信されて来るので、端末のGPSを使うことなくMaps上に位置を表示するだけの非常に簡単なアプリになります。電池の消費量も抑えられますね。完成したプロトタイプを車に乗せるとこんな感じになりました(写真3)。GPSはUSBを延長してダッシュボードの上に貼り付けています。Android端末のケーブルはシガーソケットからの電源供給用です。

写真3: 車載サーバとしての走行試験環境

実走行試験をしてみた結果

さて、準備が整ったので実走行試験してみました。AndroidアプリとPCブラウザでのスクリーンショットと、実走行試験を動画撮影もしてみました。

図5: Androidアプリでの軌跡表示

図6: PCブラウザでの軌跡表示

実際に運転していても比較的安定して更新されますが、さすがに少しの遅延はあります。LTE(Xi)ではあまり接続できず3G通信(FOMA)となっていたようです。走行試験中は2回ほどネットワークが切断されたのか、サーバの反応が無くなってしまいました(リカバリは入れていません)。また、走行試験中にTwitterなどでURLを公開し、第3者にサーバにアクセスしてもらい、どこからでもリアルタイムに位置がバレる(笑)ことも確認できました。

このシステムのメリットは、以下のようなものが考えられます。

  • あくまでサーバが位置情報をpushするので、クライアントアプリとしてのマッシュアップの要素が大きい
  • 位置をキックに周辺情報やルート探索なども実装できる。
  • Android端末の場合はGPSを使用しないので電池消費量を抑えられる
  • 車のように何人かで移動する時でも情報やコンテンツのシェアが可能

このシステムを利用すると、車1台1台にURLが付くという面白いシステムができます。車載サーバとして発展させれば、様々な車両データを記録保存したり、配信したりできるようになります。

まとめ

記事の集大成として、Raspberry Piを使ったモバイルサーバを構築してみました。またそれを使った製品プロトタイプの作成を行いました。

いわゆる通常のPCレベルの性能が小型化することで、汎用技術を使った応用が比較的簡単に行えます。また今回の要素技術にNode.jsがありますが、これはHTML5の広義規格であるWebScoketを用いたpushサーバの実装になります。HTML5というとブラウザ依存がなくなり、Webの世界が広がるイメージがありますが、WebSocketのようなプロトコルを取り出して考えると、組込み機器などへの応用も幅広く考えることができます。特に今回のシステムは、クライアントではなく、サーバにGPSを接続し、サーバ自体が移動体センサーサーバになることで、情報をpush配信する。というところが面白いところです。その他にも3G通信網でのIPv6によるネットワーク・リーチャビリティを確保することで、M2Mとしての応用も考えられます。

クラウドが当たり前になりサーバがデータセンターにある時代から、手元に乗るクラウドサーバが実現できるようになりました。HTML5時代のシステムアーキテクチャを描き直すことで、Webだけではなくデバイスなどの機器も含めた広がりを考えてみることもできます。Raspberry Piはその可能性を十分に示してくれる魅力的なデバイスと言っていいでしょう。

この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30