Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

モダンなアルゴリズム開発 ~ SparkNotebookを使って

187 views

Published on

Notebookを使ったエッジコンピューティングなモバイルアプリ開発フローの紹介。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

モダンなアルゴリズム開発 ~ SparkNotebookを使って

  1. 1. モダンなアルゴリズム開発  ~ spark-notebookを使って 奥村康樹
  2. 2. 自己紹介 ● 奥村康樹 ● Scala歴5年くらい ● Tameccoってところで働いています
  3. 3. 今回話すこと、話さないこと ● アルゴリズム開発のフロー ○ 失敗したフロー ○ 成功したフロー ● 実際のアルゴリズム自体の話はしません ● Sparkの話はしません
  4. 4. 作ったものの説明とチーム構成 ● インドアナビゲーションシステム ○ GoogleMapのインドアヴァージョン ● チーム構成 ○ サーバーエンジニア 一人 ○ アンドロイドエンジニア 一人 ○ iOSエンジニア 一人
  5. 5. ● Trilateration(三遍 測量) ● Finger Print ● Dead reckoning ● etc.. ● シグナル/電波 ● 音波 ● 光 ● EMF ● アクセロメーター ● etc.. インドアナビゲーション データ ● RSSI ● ToA ● TDoA ● etc.. 距離測定方法 アルゴリズム
  6. 6. デモで使うアルゴリム ● Bluetoothシグナル ● RSSI ● Trilateration(三遍測量) : Bluetooth発信機 : 人/アプリ(測定したい場所)
  7. 7. : Bluetooth発信機 : 人/アプリ(測定したい場所) BluetoothID x y A 0 0 B 3.5 7 C 9 10
  8. 8. モダン? ● エッジコンピューティング ● Notebook
  9. 9. Notebook ● Jupyter ● Spark notebook * Video内でNotebookの簡単なデモしてますので要参照(videoのリンクは後 日)
  10. 10. 失敗した開発方法 クライアント側アプリごとアルゴリズム開発 1. 毎回フィールドテスト 2. 評価が難しい 3. 原因究明困難 a. アルゴリズム自体がよくない b. アルゴリズムの実装バグ c. アプリバグ d. ハードウェア要因 e. 外部要因 アイディア テスト 実装 外部要因 ハードウェア要因 アプリバグ アルゴリズム実装バグ アルゴリズム自体
  11. 11. アイディ ア テスト 実 装 外部要因 ハードウェア要因 アプリバグ アルゴリズム実装バグ アルゴリズム自体 アルゴリズム開発 アイ ディ ア テ ス ト 実 装 外部要 因 ハードウェア要因 アプリバグ アルゴリズム実装バグ アルゴリズム自体 アプリ開発
  12. 12. 成功した開発方法 アルゴリズム開発 アイ ディ ア テ ス ト 実 装 アプリ開発 アルゴリズム実装 ユニットテスト フィールドテスト データ収集 データ収集アプリ作成 データ収集 Notebook使用
  13. 13. データ収集 ● なるべく多くの端末で ● なるべく多くのデータ ● 加工してない生のデータ ● 集めたデータはCSVに
  14. 14. アルゴリズム開発 ● トライアンドエラー ● 結果をビジュアリゼーション ● アプリにあった評価関数を作る ● ビジュアライゼーションと数値評価は両方必要 * Video内でNotebook使ったデモしてますので要参照(videoのリンクは後日)
  15. 15. アルゴリズム開発 ---> アプリ開発 ● アルゴリズムのシェア ● ユニットテスト
  16. 16. アルゴリズムのシェア ● パイプライン作成 ● ドキュメント作成 ● 口頭で説明
  17. 17. Input: 1. RSSI List 2. B Location List 3. 現在時刻 RSSI Filtering 0utput: 1. Array( ( (x, y), rssi ) ) Filter: • 現在時刻 - 20秒 < 対象 データ < 現在時刻 • 0 > rssi > -100 Reduce: • Average( rssi ) Input: 1. Array( ( (x, y), rssi ) ) RSSI Conversion 0utput: 1. Array( ( (x, y), distance ) ) Map: RSSIを距離に変換 Input: 1. Array( ( (x, y), distance ) ) Location Calc 0utput: 1. (x, y) • Sort by distance • Take 3 shortest data • Trilateration
  18. 18. ユニットテストのデータ作成 ● Notebookで作成してシェア ○ ドキュメント ○ 実行可能なコード ○ ビジュアライズと数値評価でテスト * Video内でNotebook使ったデモしてますので要参照(videoのリンクは後日)
  19. 19. アプリ開発 ● テストデータを元にユニットテスト作成 ● 必要であればメモリ、計算量の最適化を行う ● フィールドテストは必要
  20. 20. まとめ ● クライアント側でアルゴリズム開発はやらない ● アルゴリズム開発とアプリ開発は分けよう ● データ収集してアルゴリズム開発を行おう ● ヴィジュアルと数値評価両方必要 ● ユニットテストデータを作成してあげよう ● アプリ開発ではアルゴリズムのユニットテストは必須
  21. 21. ありがとうございました。

×