Slide 1

Slide 1 text

(FP'FODF࢖ͬͯ ৵ೖݕ஌࡞ͬͯΈͨ BXTCBTJDT TPSBDPN 2021.07.17 AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる はじめての位置情報サービス 和⽥健⼀郎@Keni_W

Slide 2

Slide 2 text

⾃⼰紹介 ⽒名:和⽥ 健⼀郎 所属:アイレット株式会社 エンジニア JAWS-UG 千葉 運営メンバー SORACOM UG東京 運営メンバー 昨年共著でサーバーレス本書きました。 Twitter: @Keni_W Facebook : kenichiro.wada.3 好きなAWSサービス : AWS Lambda 2021 APN AWS Top Engineers

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ BXTCBTJDT TPSBDPN • とりあえずやってみたで作った • 構成図とか • GeoFenceを作る • Lambdaで位置情報投⼊ • Lambdaで通知 • こうなる • 感想 (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

Slide 4

Slide 4 text

ͱΓ͋͑ͣ΍ͬͯΈͨͰ࡞ͬͨ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • やってみた枠ということで、 完全にLT登壇駆動開発です。 JAWS UG IoT専⾨⽀部の体験会参加して、 思いついた構想を実装したものです。 • 位置情報を⼿軽にクラウド上にアップでき るデバイスを持っていたのも⼤きい。

Slide 5

Slide 5 text

ߏ੒ਤͱ͔ BXTCBTJDT TPSBDPN 構成図 -位置情報取得部- (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

Slide 6

Slide 6 text

ߏ੒ਤͱ͔ BXTCBTJDT TPSBDPN 構成図 -通知部- (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

Slide 7

Slide 7 text

ߏ੒ਤͱ͔ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • ソラコムさんが発売している 温度、湿度、加速度センサー、 GPSを搭載したバッテリー内 蔵のデバイス。 • SORACOMサービスと組み合 わせて簡単に可視化まででき る超絶便利なデバイス。

Slide 8

Slide 8 text

(FP'FODFΛ࡞Δ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • ⼿順の細かい説明は割愛します。 • 今回は、弊社オフィスがある⻁ノ⾨ヒルズ に⾏く機会があった(出社と⾔います)ので、 そこへの侵⼊検知を⾏なっています。 (適切に侵⼊してますよ)

Slide 9

Slide 9 text

(FP'FODFΛ࡞Δ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • geojson.ioを使って、⻁ノ⾨ヒルズの周囲 の緯度経度を取得し、それをGeoFenceと してアップロードします。

Slide 10

Slide 10 text

-BNCEBͰҐஔ৘ใ౤ೖ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • GPSマルチユニットからのデータは、 SORACOM FunkからAWS Lambdaの関数 を実⾏する際のEventオブジェクトにセッ トされて渡ります。

Slide 11

Slide 11 text

-BNCEBͰҐஔ৘ใ౤ೖ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • Eventオブジェクト内にlat(緯度)とlon(経 度)が⼊っているので、 location.batchUpdateDevicePositionの パラメータにセット(Positon)して投⼊しま す。 const devicePostion = { DeviceId: deviceId, Position: [ event.lon, event.lat ], SampleTime: moment(date).toISOString() } GPSマルチユニットからの緯度 (event.lat)、経度(event.lon)情報

Slide 12

Slide 12 text

-BNCEBͰ௨஌ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • ハンズオンでもやったとおり、GeoFence のENTER、EXITのイベントが発⽣すると、 Cloudwatch Logsに格納されるので、それ をトリガーにLambda関数を起動します。

Slide 13

Slide 13 text

-BNCEBͰ௨஌ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • Base64エンコードされているので、それを デコードおよびバイナリ展開して、メッ セージを取り出して整形して、LINE Notify に送信します。 # CloudWatchLogsからのデータはbase64エンコードされているのでデコード decoded_data = base64.b64decode(event['awslogs']['data']) # バイナリに圧縮されているため展開 json_data = json.loads(gzip.decompress(decoded_data)) logger.info("EVENT: " + json.dumps(json_data)) message = json_data['logEvents'][0]['message'] json_message = json.loads(message) message = create_message(json_message['detail'])

Slide 14

Slide 14 text

͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

Slide 15

Slide 15 text

͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

Slide 16

Slide 16 text

͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

Slide 17

Slide 17 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • 結構簡単にできました。 • GeoFenceを建物ギリギリしたら、In/Out がうまく検知できず(建物内は位置情報取 れにくいため)、ちょっと⼤きめの GeoFenceにして対応。 • 実際に実機で試していると、通知くるか な?ってドキドキ待つのが楽しかった。

Slide 18

Slide 18 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • はまった点は以下 • 位置情報は配列で経度、緯度の順でセッ ト、返却される。 • Google Mapの地図を表⽰させる場合、 緯度・経度の順でセットするので注意。 • 前述の通り、GPSの送信間隔によっては、 うまく検知できないこともある。 • ちょっとGeoFenceを⼤きめにして対処

Slide 19

Slide 19 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • はまった点は以下 • geojson.ioで 緯度が4xxとかでて、 GeoFenceとして登録した際、 エラーになりました

Slide 20

Slide 20 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • 他への流⽤としては、 • 家と学校にGeoFenceを配置して、登下 校を⾃動⾒守りとか。 • デバイス保持者が区域外に出たら通知す るとか(逆もあり)。 • あれ、これって ビジネスになる?w

Slide 21

Slide 21 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ

Slide 22

Slide 22 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円 Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円 Map tiles retrieved (Vector or Raster) $0.04 per 1,000 = $0.04 = 4.4円 Resource create, read, update, delete, or list requests $0.01 per 1,000 = $0.01 = 1.1円 Geofences created, deleted or described $0.05 per 1,000 = $0.01 = 5.5円 Geofence list requests $0.05 per 1,000 = $0.01 = 5.5円 Positions evaluated $0.20 per 1,000 = $0.20 = 22円 Positions written $0.05 per 1,000 = $0.05 = 5.5円 Batch positions read $0.05 per 1,000 = $0.05 = 5.5円 Resource create, read, update, delete, or list requests$0.01 per 1,000 = $0.01 = 1.1円

Slide 23

Slide 23 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ • ちょっと試してみたい・・・ と思ったそこのアナタ。 今ならGPSマルチユニット、 セール中です。 (~2021/07/31まで)

Slide 24

Slide 24 text

ײ૝౳ʑ BXTCBTJDT TPSBDPN (FP'FODF࢖ͬͯ৵ೖݕ஌࡞ͬͯΈͨ ご静聴 ありがとう ございました