【NFC】モバイルSuicaを利用した認証システムを作ってOMMFに出展してきた話【アドベントカレンダー2024】
いきなりですが、駅の改札口と同じぐらいの速度感で認証されたらうれしいなと思ったことはないですか?
またモバイルSuicaのようにモバイルでデジタルキーを管理できれば物理キーも減らせるし、社員証や鍵を忘れる事もないのに・・・と思ったことはないですか?
筆者はいつも頭の片隅に上記が解決できないかなと思ってました。
ということでモバイルSuicaで認証できるシステムを作ってOgaki Mini Maker Faireに出展してきました!という話です。
はじめに
この記事は、エンジニアと人生 Advent Calendar 2024のDay5 記事です!
前日のDay4はyugo.sugiyama (sugiy)さんのLTで惹きポイントを作るです!
開発したもの
概要ですが、NFC/FeliCaリーダーモジュールであるRC-S660/SにモバイルSuicaを近づけると、カードの情報を読み取り、接続しているESP32に送信します。ESP32は、その情報とサーバーに登録されているモバイルSuicaの情報と照合します。登録されていれば認証し、登録されていなければ認証しない仕組みとなります。
以下は上記の仕組みを利用して、モーターでドアが開くことを擬似的に表現したものとなります。

上記を達成するために開発したものは
・サーバーに登録するためのアプリ
・モバイルSuicaが登録されたものか認証チェックするNFCリーダー
の2つです。
サーバーは今回、一般の方にでも伝わりやすいようにと、スプレッドシートをサーバー代わりに使用しました。
サーバーに登録するためのアプリ
アプリの機能は以下の通りです。
・Suicaの情報を読み取る機能
・サーバーにある情報をGETしたり、読み取った情報をポストしたり、削除できる機能
動作は以下のGIFの通りです。

登録に成功するとスプレッドシートに日時とモバイルSuicaのIDmが書き込まれます。

モバイルSuicaが登録されたものか認証チェックするNFCリーダー
NFCリーダーモジュールはSONYのRC-S660/Sを使用しました。
現在は個人でもスイッチサイエンスより購入することができます。
NFCモジュールを制御するマイコンはESP32を使用しました。
理由はWi-FiとBLEモジュールが標準で付いているからです。
ESP32とRC-S660/Sを接続した様子です。

RC-S660/SでモバイルSuicaを読み取り、ESP32で認証チェックをします。認証が通れば黄色のLEDが点灯し、失敗すれば赤のLEDが点灯する仕様です。
Suicaを用いてアプリとNFCリーダーを検証した様子は以下の通りです。

このシステムのいいところ
本来はNFCのカードエミュレーションを利用して、専用のデジタルカードを発行したいところですが、現状個人開発レベルではNFC付きのPassを発行することができないので、既存のNFC付きのPassを利用することにしました。これはこれでエコシステム的な感じで、変に新しくカードを発行したりしなくて良いですし、IDmだけでなく、料金などの情報も組み合わせることで、セキュリティをモバイルSuicaに乗っかることができます。そのため、カードの登録から認証までをモバイル端末や、安価なマイコンで実現する事ができるのでコストを抑えて開発する事ができます。
またサーバーも既存のものやスプレッドシートで代用する事で開発費用やランニングコストをかけずに運用する事もできます。
つまり
低コスト・低リスクな導入
既存技術に依存することで初期投資が少なく、柔軟な運用が可能。
カードの開発や運用コストがゼロ。
汎用性の高い設計
物理カード・デジタルカードを問わず活用できる。
既存サーバーやクラウドサービスとの統合が容易。
という事があげられるので、個人や中小企業でも導入が可能です。
以下一例です。
来客者へ一時的に自宅の鍵やオフィスへの入退室を許可したい
→ アプリで一時的に登録から削除まで可能入退室の記録やタイムカードとして使用したい
→ サーバー構築は不要でGoogleアカウントさえあれば即座にスプレッドシート上で記録が可能
以上開発して出展したものの紹介でした!
続いて参加した感想です。
初めてOMMFに参加
きっかけはエンジニアコミュニティで一緒に出展しないかお声がけいただいた事でした。それまでMaker Faireの存在すら知りませんでしたが、このイベントのおかげでハードからソフトまで自分で一貫して開発して出展する事ができました!
また展示に関しても事前に資料を用意したりといい体験になりました!

さいごに
実際に出展して反省点もたくさん出ました。例えば
・プロポーザルを出す時点は何もアイデアがなく適当に出したのでもう少しゴールをイメージして出せばよかった
・簡潔に説明できるように説明する文章をあらかじめ考えておけばよかった・通信状況が良くなくてもローカルでサクッと動くものが見せられるようにしておけばよかった(二日目は対応した)
などなどです。
ただiOSエンジニアである堤さんのエンジニアと人生コミュニティで なべっつさんに誘ってもらわなければきっとまだできてなかった「モバイルSuicaを利用した認証システム」を出展できて本当に良かったと思います。
また他の出展者の作品もとても面白く、とても刺激になったので今後も楽しんで個人開発を続けたいと思いました!
最後まで読んでいただきありがとうございます!
いいなと思ったら応援しよう!
いいねと思えたらよろしくお願いします😋