Skip to content
Daisuke Sato edited this page Oct 5, 2021 · 1 revision

最終更新日:2018年8月1日

V1: 3f3193c17c49f15e76a1f33c8a1df097bc7ac539をベースに作成


NavCog設計ドキュメント

基本データ構造

起動画面 WelcomViewController

規約確認 AgreementViewController

  • サーバーに規約を確認済みかどうか必ず確認する
    • サーバーは規約の設定がONの場合は規約確認済み化でレスポンスする。設定がOFFの時は常に確認済みとしてレスポンスする。

サーバー選択 ServerSelectionViewController

  • 接続するMapServiceのサーバーおよびサーバー設定ファイル(server_config.json)のセットをリスト表示する。
    • サーバーリスト決定方法
    • 1つのサーバーで複数の設定をすることがありうる
    • デモ用途には必要
    • サーバー設定はServerConfigが管理
      • selected=trueとしておけば、自動的に選択される。リストの一番最初に出てきたものが選択される。
  • TODO: 配布アプリでは現在地に合わせてサーバーが自動的に選択される方式にしたい

データダウンロード DownloadViewController

  • 選択したサーバー設定に記述されているデータ(src, size)をダウンロードする
  • 位置推定用のモデルファイル
  • 各モード別の設定ファイル
  • すでにダウンロードしているファイルのサイズとsizeを比較して、同じ場合はダウンロードしない
  • サイズが違う場合はsrcのファイルをダウンロード
  • モデルファイルは転送量削減のためにgzip圧縮しておくが、sizeには圧縮していないサイズを記述する

モード選択画面 InitViewController

  • 視覚障害者、車椅子、一般モードの選択
    • NavCogの本流としては視覚障害者だけにしたいが、ビジネス要件的に必要。
  • server_config.json
    • key_for_blind詳細設定を表示するのと同じハッシュの仕組みで生成したキーを設定しておくと、Documentsディレクトリのblind.keyfileのマッチして、視覚障害者モードを表示するかどうかを決定する
      • 視覚障害者モードを限定した人にしか使えなくするための機能
    • default_modeに"user_blind"か"user_wheelchair"か"user_general"を指定しておくと、自動的にモードが選択される
  • TODO: VoiceOverの起動の有無等で切り替えられると良いのではないか

モード共通

処理中画面の表示など

  • NavUtil
    • 指定したビューの上にかぶせて、Loadingなどの表示をする
    • Modalの場合は全画面操作ができなくなる

設定・詳細設定 SettingViewController

  • 基本設定以外の詳細な設定。開発用、デモ用オプション含む
  • 複数階層のテーブルリストのメニューを生成するが、Storyboardのシーンは1つだけで使いまわして使う
    • 視覚障害者モードのルート検索オプションのメニューもここで作る
    • 設定項目は全てNSUserDefaultsに書き込む
    • HLPSetting関連のクラスを利用する
      • VoiceOverで操作できるように
  • server_config.jsonのプリセットで上書き可能(ConfigManager)

データ管理 NavDataStore

  • データ管理 :ナビゲーションに関する情報を保持するHelperクラス
    • 現在位置、方向、目的地リスト、POI、ルート
    • POIをロードして、どのリンクに割り当てるかを計算する

データ構造

評価 StarRatingView

  • ナビゲーションが終わった時に、一定回数間隔で評価画面を表示する
  • サーバー設定ask_enqueteがオンの時のみ

視覚障害者モード BlindViewController

VoiceOver対応

対話(マイクのアイコンのボタン) DialogManager, DialogViewHelper

  • 対話で行き先を決定するための機能。
  • ボタンは地図の上に表示されているがNative実装。
  • ボタンを押すと、行先設定画面、行先リスト画面、対話画面と複数の遷移を実行する
  • 対話から戻ってきた時に行先設定画面からでないとナビをスタートできないので…
  • TODO: 直接対話画面にできたほうが良い。

設定 SettingViewController

  • Native実装。音声読み上げ速度など設定項目の一部のみ表示。

行先(現在地)の選択画面 SearchViewController, DestinationTableViewController

  • 手動で行き先を設定するための画面
  • デモや実験にお用途にスタート地点も現在地以外にリストから選べるようにしている

経路オプション(視覚障害者)SettingViewController

  • 階段、エレベータ、エスカレータ、動く歩道、点字ブロック優先等のオプションを設定できる

ナビゲーション NavNavigator, NavCommander

POI詳細表示 WebViewController

  • POIの詳細をHTMLページとして表示する

プレビュー NavPreviewer

  • 経路を自動もしくは手動(デバイスを振る)でプレビューする機能

車椅子・一般モード ViewController

対話ボタン DialogManager, DialogViewHelper

  • Native実装。視覚障害者モードと基本同じだが、地図画面から直接対話画面を開く。
  • 結果をJSに渡す必要がある。

設定 SettingViewController

  • Native実装。音声読み上げ速度など設定項目の一部のみ表示。

行先設定 Webページ

  • JS実装。接続サーバーによって、ドロップダウンメニュー(コレド以外)だったり、テーブル形式のメニュー(コレド)だったりする。

ルート検索オプション Webページ

  • JS実装。JSの状態に合わせて、Nativeのナビゲーションバーに出ているアイコンを変える。

ナビ Webページ

  • JS実装。位置推定結果をNativeからブラウザに通知。

その他

NavCogTool

  • コマンドラインツール ナビで読み上げられるテキストを確認するためのツール。基本コードをNavCogと共有している

NavCogFP

  • フィンガープリント用のツール 基本コードをNavCogと共有している
Clone this wiki locally