本文へ移動
BenriWorks Lab

新幹線つながりマップ測定

プロトタイプ

新幹線に乗車中のAndroid端末で、LTE・5Gの電波情報とHTTP通信の可否を記録し、どの区間で通信できたかを路線上に可視化するための測定アプリ。現在開発中で、一般提供はしていません

公開日

現在は公開準備中です
新幹線の窓側の席に座った乗客が、両手でスマートフォンを操作している。窓の外には晴れた田園風景が流れている

対象ユーザー

  • 新幹線での移動中に通信環境が気になるビジネスパーソン
  • Androidでの電波情報取得や移動体測定の実装に関心がある開発者

新幹線でオンライン会議に出たことがある人なら、あの不安を知っているはずです。トンネルに入る前に一言断っておくべきか、この区間は持ちこたえてくれるのか。つながるかどうかは乗ってみないとわからず、乗って得た経験も記憶の中にしか残りません。新幹線つながりマップ測定は、その経験を測定データに変えるためのAndroidアプリです。乗車中の端末で電波状況と通信の可否を記録し、あとから「どの区間で通信できたか」を路線上に対応付けて可視化することを目指しています。

現在は開発の初期段階で、一般向けの提供はしていません。このページは、何を作ろうとしているか、どんな方針で作っているかの記録です。

解決したい課題

移動中の通信品質については、通信事業者のエリアマップという公式情報があります。ただ、エリアマップが示すのは提供エリアの範囲であって、時速200kmを超える車内から、実際にビデオ会議を続けられるかという問いには答えてくれません。

利用者の実感に近い情報として速度測定の結果もありますが、一地点の速度だけでは「なぜそこでつながらなかったのか」がわかりません。電波が弱かったのか、電波はあるのに通信が失敗したのか。原因の層が区別できないと、傾向として整理することも難しくなります。

記録する2つの層

このアプリの設計の中心は、性質の違う2つの層を同じ時間軸で記録することです。

ひとつは無線・端末層です。LTEか5Gか、電波の強さや品質を表す指標(RSRP、RSRQ、SINR)、接続しているセルの情報、接続状態を記録します。もうひとつは利用者体感層で、実際にHTTP通信を試みて、成功、失敗、タイムアウト、応答時間を記録します。

電波の数値がよいのに通信が失敗する区間もあれば、数値が悪いのに意外と粘る区間もありえます。2つの層を突き合わせて初めて、「つながらない」の中身を区別できます。位置情報と合わせて記録し、あとから新幹線の路線上へ対応付けることで、区間ごとの傾向として可視化する計画です。

開発の進め方

このプロジェクトは、実機での試行より先に、仕様、テスト、CI(自動ビルドと検査)をGitHub上で整備する進め方を採っています。測定ロジックは端末に依存しない純粋なKotlinのコードとして切り出し、偽の測定データを流し込んで動きを検証できるようにしてから、実機のセンサーや電波情報につなぐ段取りです。

この進め方には約束事があります。コードが完成してCIが通っていても、実機で検証していない機能は「実装済み・実機未検証」と記録し、「動作確認済み」とは表現しない、というものです。電波情報の取得や位置情報のような実機依存の部分は、現時点ですべてこの「実装済み・実機未検証」の状態にあります。

技術と設計

Kotlinで実装するAndroidネイティブアプリで、UIはJetpack Compose、記録の保存にはRoomを使う構成です。測定データはサーバーへ送るより先に端末内のデータベースへ保存する、ローカルファーストの設計を採っています。

プライバシーの方針は仕様の最初に固定しました。端末固有のID、電話番号、IMSI、連絡先、広告IDは収集しません。バックグラウンドでの常時位置取得も行わない設計判断を記録しています。測定というテーマは位置情報と隣り合うため、「記録しないもの」を先に決めることを、機能の追加より優先しています。

現在の状態

開発初期のプロトタイプ段階で、配布できるアプリはまだありません。実機依存の機能はすべて実装済み・実機未検証であり、実際の新幹線での測定(フィールド検証)はこれからです。

電波を測って可視化するという関心は、地デジの受信環境を推定する「地デジエリアマップ」と地続きです。また、電波の強さが距離でどう減るかという基礎は、ガイド「自由空間伝搬損失の計算」で扱っています。検証が進んだら、このページに結果を追記していきます。

分野・使用技術

関連記事

関連アプリ