クロスプラットフォームaed 検索のキモ
TRANSCRIPT
MVP Community Camp 2015 クロスプラットフォームAED 検索のキモ
2015/01/31 初音玲
アジェンダ
AED検索とは
Microsoft Azure Mobile Servicesのキモ
universal Windows appのキモ
Xamarinのキモ
本日のゴール
Microsoft Azure Mobile Servicesが何かが分かる
クラスプラットフォームのゴール形態が分かる
AED検索とは
AEDの現状
国内40万台
一般利用可能20万台
AEDの現状
国内40万台
一般利用可能20万台
使用率 3.7% (2013年)
使用率3.7%
心肺停止者
年間73,023人
うち、目撃者あり
年間23,797人
32.6%
67.4%
目撃者あり 目撃者なし
使用率3.7%
32.6%
67.4%
目撃者あり 目撃者なし
96.3%
3.7%
AED未使用 AED使用
使用率3.7%
目撃者ありの場合の使用率
目撃者ありの場合の使用率
3.7%881人 / 23,797人
すべての心停止者に対する使用率
1.2%881人 / 73,023人
なぜこんなに使用率が低いのだろう
AEDって最近のもの?
認知率が低い?
使い方が分からない?
なぜこんなに使用率が低いのだろう
AEDって最近のもの?
認知率が低い?
使い方が分からない?
なぜこんなに使用率が低いのだろう
AEDって最近のもの?
⇒2014年で10年目
認知率が低い?
使い方が分からない?
なぜこんなに使用率が低いのだろう
AEDって最近のもの?
認知率が低い?
⇒認知率93.6%
使い方が分からない?
93.6%
6.4%
知っている 知らない
なぜこんなに使用率が低いのだろう
AEDって最近のもの?
認知率が低い?
使い方が分からない?
⇒講習受講率50.7%
50.7%
49.3%
ある ない
Why:救命処置をとれない理由
目撃時に救命措置をとれない理由は何ですか?
18
47.7%
30.4%
25.6%
25.0%
22.5%
7.9%
7.4%
4.0%
方法が分からない
対応する自信がない
専門家に任せた方が良い
方法を忘れてしまった
怖くて手が出せない
対応したくない
巻き込まれたくない
その他
AED認知率向上、講習会の実施、
にプラスして何かが必要
19
アプリ作れば解決すると思っていた時期もありました
問題は
問題は
アプリから使えるAED位置情報がない
自治体の公開フォーマットは不統一
二次利用禁止で集めているところはある
問題は
アプリから使えるAED位置情報がない
自治体の公開フォーマットは不統一
二次利用禁止で集めているところはある
なければ作るのが「開発者」
作りました
システム構成
24
Microsoft Azure Mobile Services
Microsoft Azure SQL Database
Microsoft Azure Notification Hub
Windowsストアアプリ / Android & iOSアプリ(Xamarin)
AEDオープンデータプラットフォーム
AzureMobile
Services
AED情報の収集
情報記録
認証
AzureSQL Server
Facebook認証
AED管理用データベース経済産業省 IODD2014
AEDの共通語彙基盤に準拠
心停止者を発見したときには…
該当AED抽出
AzureSQL Server
AzureMobile
Services
Facebook認証
AED管理用データベース経済産業省 IODD2014
AEDの共通語彙基盤に準拠
私のめざしたい姿
使用率3.7%を4%に上げる
私のめざしたい姿
使用率3.7%を4%に上げるだけじゃ満足できない
私のめざしたい姿
使用率3.7%を4%に上げるだけじゃ満足できない
偶然そばに人がいたときだけじゃ満足できない
私のめざしたい姿
すべての心停止者にAEDを
将来想定(M2Mによる119番連携/SOS自動発信)
通知
認証
該当者抽出
該当AED抽出
AED位置表示
SOS位置表示
承諾応答
通知ハブ
AzureSQL Server
AzureMobile
Services
通知
Facebook認証
AED管理用データベース経済産業省 IODD2014
AEDの共通語彙基盤に準拠
ウェラブル/スマホなどからの自動発信
Microsoft Azure Mobile Servicesのキモ
AEDオープンデータAPI
指定した都道府県単位のAED情報一覧
指定した市町村区単位のAED情報一覧
指定した緯度経度の直近AED情報
指定した緯度経度の指定範囲内のAED情報一覧
指定したIDのAED情報
直近AED検索速度<3秒
東アジア 3.23sec ⇒ 国内 2.95sec
サーバー側でfacebook認証およびfacebook投稿
登録/変更時のみ
使いやすさを考えたAPIのアクセス許可設定
GETは緩く、POSTは認証済のみ、削除は管理者
DBアクセス
カスタムAPIによる細かな制御を実施している
テーブルの自動生成は利用していない
プロト開発には有用
実開発までのどこかできちんとしたDB設計で性能担保
今後の改善
直近AED検索の実行プラン
直近を求めるために全件並び替えを実施
「並び替え」の対象レコード数を少なくする
緯度経度でざっくり絞る?
DB破壊からの復旧
AEDオープンデータプラットフォーム公開前に実施済
破壊シナリオ
AED検索用のMobile Serviceの他に、もう1つMobile Serviceを作成
構成画面にて接続先データベースをAED検索用SQL Databaseに切り替え
削除するときに関連するデータベースも削除
復旧シナリオ
データベースで管理⇒構成をえらび自動エクスポートの情報を設定
エクスポートから新しいデータベースを作成
元のサーバーを指定して復旧
universal Windows appのキモ
ロジックは共通
画面が別途
Portable Class Library
42
PCLプロジェクト
Windowsストアプロジェクト
WindowsPhoneプロジェクト
PCLビルド
PCL
PCL
参照設定
参照設定
共有
43
共有プロジェクト
Windowsストアプロジェクト
WindowsPhoneプロジェクト
ソースコード
参照設定
参照設定
ソースコード
ソースコード
for Windows
for Windows Phone
Xamarinのキモ
Portable Class Library
47
PCLプロジェクト
Androidプロジェクト
iOSプロジェクト
PCLビルド
PCL
PCL
参照設定
参照設定
共有
48
共有プロジェクト
Androidプロジェクト
iOSプロジェクト
ソースコード
参照設定
参照設定
ソースコード
ソースコード
iOSとAndroidでコードに差があるとき
49
PCLは「if」で条件分岐・実行時に判定
共有コードは「#if」で条件分岐・コンパイル時に判定
PCL vs 共有コード
PCL方式なら
OS別ロジックがそもそも入り込まない
共有コード方式なら
universal Windows appsは共有コード方式
実行ファイルにOS別ロジックが入らない
OS別ロジックに専用クラスが書ける
50
Xamarin Forms
Android版はもう動いています
Xamarin.Forms.Mapは成長中
Androidのmapに比べると…
まとめ
4OSクラスプラットフォームのゴール
53
PCLプロジェクト
Windowsストアプロジェクト
WindowsPhoneプロジェクト
PCL参照設定
ViewModel
Model
Androidプロジェクト
iOSプロジェクト
固有ロジック 固有ロジック 固有ロジック 固有ロジック
View View View View
AEDオープンデータプラットフォームhttp://hatsunejournal.jp/w8/AEDOpendata/
誰でもが無償で自由に使えるAEDデータ
直近検索、facebook認証などを整備⇒スマホ側アプリが楽に
クライアント
ロジックは可能な限り共通化
画面の見た目はOSごとに別(基本は一緒)