Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GeoFence使って侵入検知作ってみた /aws_basics_location_serv...
Search
Kenichiro Wada
July 17, 2021
Technology
0
210
GeoFence使って 侵入検知作ってみた /aws_basics_location_service_lt
2021.07.17 AWSの基礎を学ぼう 特別編
最新サービスをみんなで触ってみるはじめての位置情報サービス
でのLT資料です。
LT内で出てくるLambdaのソースコードは近日中に公開予定です。
Kenichiro Wada
July 17, 2021
Tweet
Share
More Decks by Kenichiro Wada
See All by Kenichiro Wada
My First Impression Of Kiro / 20250801-kumoben-lt
kwada
0
78
(全日本人)待望のS3トリガーのLambda無限ループ対応について / chibaraki-1
kwada
0
140
AWS Lambdaに出会って人生が変わった1人の10年間 /awslambda10th
kwada
0
96
GPSデバイスを使った簡易位置案内システムの構築をしてみた話。/jawsfesta2024
kwada
0
800
とある航空会社の飛行機の乗り方をお教えします。/20240913-lt
kwada
3
310
Building a Simple Navigation Guide Service Using GPS Devices/jaws-pankration2024
kwada
0
120
IaCジェネレーターを使って、昔に作ったLambda関数をCDK管理下においてみた / jaws-ug-josys-30
kwada
0
140
SORACOM UG Explorer 2023ハンズオンの裏側サービスを紹介 / soracom-ug-online-17
kwada
0
320
(2023.08.17 Update)Detecting and stopping recursive loops in AWS Lambda functionsでAWS Lambdaの無限ループを防ぐ! / jaws-ug-shizuoka
kwada
0
250
Other Decks in Technology
See All in Technology
AIのグローバルトレンド2025 #scrummikawa / global ai trend
kyonmm
PRO
1
260
Evolución del razonamiento matemático de GPT-4.1 a GPT-5 - Data Aventura Summit 2025 & VSCode DevDays
lauchacarro
0
150
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
210
Flutterでキャッチしないエラーはどこに行く
taiju59
0
220
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
11
4.6k
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
340
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
190
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
440
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
290
研究開発と製品開発、両利きのロボティクス
youtalk
1
510
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
260
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
5
1.6k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Statistics for Hackers
jakevdp
799
220k
What's in a price? How to price your products and services
michaelherold
246
12k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Music & Morning Musume
bryan
46
6.8k
Balancing Empowerment & Direction
lara
3
620
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Building Applications with DynamoDB
mza
96
6.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Bash Introduction
62gerente
615
210k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Transcript
(FP'FODFͬͯ ৵ೖݕ࡞ͬͯΈͨ BXTCBTJDT TPSBDPN 2021.07.17 AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる はじめての位置情報サービス 和⽥健⼀郎@Keni_W
⾃⼰紹介 ⽒名:和⽥ 健⼀郎 所属:アイレット株式会社 エンジニア JAWS-UG 千葉 運営メンバー SORACOM UG東京
運営メンバー 昨年共著でサーバーレス本書きました。 Twitter: @Keni_W Facebook : kenichiro.wada.3 好きなAWSサービス : AWS Lambda 2021 APN AWS Top Engineers
ࠓ͢͜ͱ BXTCBTJDT TPSBDPN • とりあえずやってみたで作った • 構成図とか • GeoFenceを作る •
Lambdaで位置情報投⼊ • Lambdaで通知 • こうなる • 感想 (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ͱΓ͋͑ͣͬͯΈͨͰ࡞ͬͨ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • やってみた枠ということで、 完全にLT登壇駆動開発です。 JAWS UG IoT専⾨⽀部の体験会参加して、
思いついた構想を実装したものです。 • 位置情報を⼿軽にクラウド上にアップでき るデバイスを持っていたのも⼤きい。
ߏਤͱ͔ BXTCBTJDT TPSBDPN 構成図 -位置情報取得部- (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ߏਤͱ͔ BXTCBTJDT TPSBDPN 構成図 -通知部- (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ߏਤͱ͔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ソラコムさんが発売している 温度、湿度、加速度センサー、 GPSを搭載したバッテリー内 蔵のデバイス。 •
SORACOMサービスと組み合 わせて簡単に可視化まででき る超絶便利なデバイス。
(FP'FODFΛ࡞Δ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ⼿順の細かい説明は割愛します。 • 今回は、弊社オフィスがある⻁ノ⾨ヒルズ に⾏く機会があった(出社と⾔います)ので、 そこへの侵⼊検知を⾏なっています。
(適切に侵⼊してますよ)
(FP'FODFΛ࡞Δ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • geojson.ioを使って、⻁ノ⾨ヒルズの周囲 の緯度経度を取得し、それをGeoFenceと してアップロードします。
-BNCEBͰҐஔใೖ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • GPSマルチユニットからのデータは、 SORACOM FunkからAWS Lambdaの関数 を実⾏する際のEventオブジェクトにセッ
トされて渡ります。
-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)情報
-BNCEBͰ௨ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ハンズオンでもやったとおり、GeoFence のENTER、EXITのイベントが発⽣すると、 Cloudwatch Logsに格納されるので、それ をトリガーにLambda関数を起動します。
-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'])
͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
͜͏ͳΔ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • 結構簡単にできました。 • GeoFenceを建物ギリギリしたら、In/Out がうまく検知できず(建物内は位置情報取 れにくいため)、ちょっと⼤きめの
GeoFenceにして対応。 • 実際に実機で試していると、通知くるか な?ってドキドキ待つのが楽しかった。
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • はまった点は以下 • 位置情報は配列で経度、緯度の順でセッ ト、返却される。 •
Google Mapの地図を表⽰させる場合、 緯度・経度の順でセットするので注意。 • 前述の通り、GPSの送信間隔によっては、 うまく検知できないこともある。 • ちょっとGeoFenceを⼤きめにして対処
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • はまった点は以下 • geojson.ioで 緯度が4xxとかでて、 GeoFenceとして登録した際、
エラーになりました
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • 他への流⽤としては、 • 家と学校にGeoFenceを配置して、登下 校を⾃動⾒守りとか。 •
デバイス保持者が区域外に出たら通知す るとか(逆もあり)。 • あれ、これって ビジネスになる?w
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ
ײʑ 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円
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ • ちょっと試してみたい・・・ と思ったそこのアナタ。 今ならGPSマルチユニット、 セール中です。 (~2021/07/31まで)
ײʑ BXTCBTJDT TPSBDPN (FP'FODFͬͯ৵ೖݕ࡞ͬͯΈͨ ご静聴 ありがとう ございました