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
KASHIKOIHAKO
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ufoo68
October 16, 2021
Technology
0
610
KASHIKOIHAKO
ufoo68
October 16, 2021
Tweet
Share
More Decks by ufoo68
See All by ufoo68
文法で学ばないJavaScript
ufoo68
0
42
Cookieとは?
ufoo68
1
60
今更ながら、開発現場での生成AI活用について
ufoo68
0
60
28歳独身エンジニア 婚活してみた
ufoo68
0
22
OpenAIでクッキー型を作る
ufoo68
1
56
初めて開発リーダーをやってみた話
ufoo68
0
130
M5Stack用の指紋認証デバイスを試す
ufoo68
0
860
結婚式のクイズアプリを自作した話
ufoo68
0
660
M5Stack Core2とAlexaでインターフォンに自動で対応してくれるIoTデバイスを作りたかった話
ufoo68
0
720
Other Decks in Technology
See All in Technology
What's new in Go 1.26?
ciarana
2
270
技術キャッチアップ効率化を実現する記事推薦システムの構築
yudai00
2
160
【PyCon mini Shizuoka 2026】生成AI時代に画像処理やオーディオ処理のノードエディターを作る理由
kazuhitotakahashi
0
220
インシデント対応入門
grimoh
7
5.7k
組織のSREを推進するためのPlatform EngineeringとEKS / Platform Engineering and EKS to drive SRE in your organization
chmikata
0
160
Lookerの最新バージョンv26.2がやばい話
waiwai2111
1
150
AWS Bedrock Guardrails / 機密情報の入力・出力をブロックする — Blocking Sensitive Information Input/Output
kazuhitonakayama
2
190
OCI技術資料 : 外部接続 VPN接続 詳細
ocise
1
10k
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
15
6k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
6
1.7k
AI活用を"目的"にしたら、データの本質が見えてきた - Snowflake Intelligence実験記 / chasing-ai-finding-data
pei0804
0
850
AIエンジニア Devin と歩む、自律型運用プロセスの構築
a2ito
0
480
Featured
See All Featured
Designing for Timeless Needs
cassininazir
0
150
The untapped power of vector embeddings
frankvandijk
2
1.6k
エンジニアに許された特別な時間の終わり
watany
106
240k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
120
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
370
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The browser strikes back
jonoalderson
0
750
The SEO identity crisis: Don't let AI make you average
varn
0
400
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
280
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
150
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
RailsConf 2023
tenderlove
30
1.4k
Transcript
KASHIKOIHAKO PWAで作るIoTアプリケーション
自己紹介 • SNSでの名前 ◦ ufoo68(@ufoo_yuta) • 出身 ◦ 温泉じゃない方の草津 •
すきなこと ◦ シンプルなものづくり
ある日のこと こんな景品をもらいました
この箱なにかに使えそう
さらにある日のこと スイッチサイエンスにてあるものを購入した
これでなにか作れないだろうか ・・・・・・・・
それでつくったもの これをスマートボックスのプロトタイプと勝手に定義した 180度回転するサー ボアーム サーボアームが回転すると 箱がロックされる
スマートボックスとは • 箱の開閉をスマートに制御できる ◦ PC・スマホのアプリを用いた開閉制御 ◦ 箱の開閉者の認証 • 箱の状態管理ができる ◦
GPSを使った位置情報のトラッキング ◦ 内包物の状態の確認 つまりは、より賢い(KASHIKOI)ことができる箱のことをいう
イメージ図(つくりたいもの) スマホを用いた認証機能で開く箱 1. スマホアプリでログイン 2. 箱のロック解除 認証されたユーザー以外は箱を開くこ とができない
最初にやったこと • ロック機構の実装 ◦ サーボモータを使用 • セキュアな通信 ◦ M5Stack Core2
for AWSに内蔵されたセキュア通信の機能を使用 ◦ MQTT + TLSでAWS IoT coreと通信
サーボモータの動かし方 PWMの波形の形がサーボモータの角度と連動する https://monoist.atmarkit.co.jp/mn/articles/0708/22/news116.html
セキュアな通信 X.509を使用した証明書認証をデバイスとAWS IoTの間で行う デバイス AWS IoT core 認証された(証明書を持っている)デバ イス以外は通信できない
MQTT over TLSを用いた通信 openとcloseのトピックをサブスクライブする
次にやったこと • ユーザー認証との連携 ◦ CognitoとIoT Coreを組み合わせる • UIの実装 ◦ AmplifyライブラリでAWSリソースと連携
ユーザー認証との連携 やりたいことのイメージ
Cognitoとはなにか • AWSが提供する認証サービス • Apple、Facebook、Google、Amazon などのソーシャル ID プロバイダー、SAML 2.0 および
OpenID Connect によるエンタープライズ ID プロバイダーを使用した サインインをサポート • 早い話がログインとかパスワード管理とかの機能を作りたいときに使うサービス
AWS IoTと連携する 1. Cognitoでユーザーを作成する 2. 以下のコマンドを実行する aws iot attach-policy --policy-name
{{policy name}} --target {{cognito identity id}} policyは証明書を持ったデバイスが持つ権限。Cognitoのユーザーをpolicyにア タッチすることで、証明書と同じ権限をユーザーが持つことができる。
具体的な実装内容は こちらのQiita記事を参照してください
UIをつくる Amplifyを使えば認証機能を楽々実装できる
その次にやったこと AWS IoTのデバイスシャドウを使って、 箱の開閉状態を管理してみた
今までの課題 例えば箱の開閉を操作するとき、 目の前に箱があるときは 「開」「閉」の どちらを押せばいいのかがわかる
今までの課題 しかし、 箱が目の前にないときは「開」「閉」 のどちらを押せばいいのかがわからない (これはあまりかしこくない)
そして考えたこと 箱とアプリの間で箱の開閉状態を管理するものを立ててみる ?
デバイスシャドウを使ってみた デバイスの状態を管理するためのAWS IoTの機能 { "desired": { "boxStatus": "open" }, "reported":
{ "boxStatus": "open" } } desired: { “boxStatus”: “open” } reported: { “boxStatus”: “open” }
デモ動画 使用技術 • ハードウェア ◦ M5Stack Core2 for AWS ◦
Free RTOS • バックエンド ◦ AWS Cognito ◦ AWS IoT • フロントエンド ◦ Amplify ◦ React ◦ Material UI
おまけにやったこと アプリをPWAに対応してみた WEBマニフェストを記述してスタートアイコンを作り、 ネイティブアプリのように起動させてみた。
ソースコード https://github.com/ufoo68/kashikoihako-ui https://github.com/ufoo68/kashikoihako-device デバイス側 アプリ側
さいごに • まとめ ◦ AWS IoTとAmplifyを組み合わせることで、手軽に IoTのウェブアプリケーションをつくることができた ◦ M5Stack core2
for AWSを使うと手軽にデバイスと AWS IoTとの連携が実現できる(ただし FreeRTOSでの開発となる) ◦ PWAを導入することでネイティブアプリのような動きを実装できた • 今後やってみたいこと ◦ プッシュ通知をなにかに活かしたい ◦ 箱をもう少しかっこよくしたい ◦ ロック機構とかも本格的なものを作ってみたい
というわけで より賢いスマートボックス、 KASHIKOIHAKOの製作を今年はやっていきたいと思っています