2024年5月30日木曜日

 ICタグとGPS、企業の「所在管理」から得る身近な安全への活用とヒント

こんにちは。

入社して一か月が過ぎた新入社員です。

引き続き、RFID初級編の情報をお届けしていきます。





さっそくですが、「所在管理」って何をするか分かりますか?

言葉からだいたいのイメージはつきますよね。

具体的に説明すると、、

例えば広い工場ではどこに誰がいて、作業状況がどうなっているのか把握することができません。

  • 管理面の問題
  • 安全面の問題

これらを解決するキーワードが「所在管理」です。

とりあえず人を探すだけならGPSが使えそう、と思った方いませんか?

ところが、GPSって建物内で使用できないのですね!


建物内での所在確認に適さないGPS

身近な「所在管理」として知られるGPSですが、建物内ではGPS信号が届かず、精度が低下してしまいます。

お子さんの安全確認のために使用されている方は、その欠点に気づいているかもしれません。

そんな建物内での所在管理に役立つのが、ICタグ(RFIDタグ)です。

ICタグ(RFIDタグ)の利点

ここで、ICタグ(RFIDタグ)について説明します。

RFIDは無線周波数を利用してデータを送受信する技術で、タグには個別の識別情報が記録されています。

この技術を使うことで、建物内での人の位置特定が可能となり、GPSが使えない環境でも問題なく利用できます。

  • リアルタイムでの位置特定: どこに誰がいるかを瞬時に把握できる
  • 高精度: 数メートル以内の誤差で位置を特定可能
  • 建物内外で利用可能: GPSが使えない場所でも問題なく機能する


ICタグの活用方法



例えば、どんなことができるかの活用例を挙げてみましょう。

  • 従業員の所在管理: 各従業員にICタグを持たせることで、どこにいるかをリアルタイムで把握できます。
  • 緊急時の避難確認: 緊急時に全員が安全に避難できたかを即座に確認できます。
  • 来客の管理: 受付でICタグを渡し、訪問者の位置を把握することでスムーズな案内が可能です。
  • 迷子対策: 大規模なイベントや施設で迷子になった人を迅速に発見できます。

素晴らしいシステムです。

しかし、これを実現するにはそれなりの費用がかかります。

なぜなら、高額なリーダーを各所に設置する必要があるからです。

将来的にリーダー価格が下がってくれば、身近なシステムとして利用できるかもしれません。


ICタグの活用シーンを考えてみる

ちょっと遠い存在に感じられてきたICタグですが、身近で利用できる良い方法を考えてみました。

広範囲な建物内での所在管理についてお話してきましたが、使用するエリアが特定されていれば、大きな費用をかけず導入することが可能です。

例えば、園児の名札にICチップをつけておけば、園バスや送迎バスなどの乗降チェックが簡単に行えます。

デイサービスの送迎などでも活用できそうです。

塾や習い事先では、すでにNFCを使った入退室チェックが導入されているところも多いです。

カードをリーダーにかざすと入退室チェックができ、登録したメールアドレスに連絡が届きます。

ICタグ(RFIDタグ)を利用すると通信距離が広くなりますので、小さな子供やお体の不自由な方の所在管理が簡単に行えます。

担当者の目視チェックだけではなく、システムによる所在管理が実現されれば、家族もさらに安心できますね。

ICタグの活用事例、いかがでしたでしょうか。

是非、ICタグの導入を検討してみてください。



2024年5月24日金曜日

NFCタグに実際にタッチしないと表示されない Webサイトを作る

以前に書いた NTAG424 DNA の記事が意外に好評でよくアクセスいただいているのですが、結局さー、何に使うん? みたいな内容が無かったのでこちらに記載したいと思います。

NFCタグの使い方として一番多いのは、URLを書き込んでおいてスマホでタッチするとブラウザが起動してそのURLにアクセスできる所謂スマートポスター的な使い方だと思います。

ただそれだけですと QR と変わらないのですが、NTAG424 の機能を使うと実際にタグにタッチした時しかアクセスできない Webサイトを作ることができます。(ちなみに同様な機能を持つタグは他にもあります)

NTAG424 は NTAG213 などでも実装されている、UIDミラーとカウンターという機能があります。これはタグに書き込んだURLのパラメータ部分に、自身の UID と タッチされた回数 を自動で埋め込んでくれるというすばらしい機能です。

例)
書き込まれたURL
https://www.hayato.info/tag?uid=00000000000000&ctr=000000
スマホで読み取ったときのURL
https://www.hayato.info/tag?uid=04C767F2066180&ctr=000010

NTAG424 では、さらにこのパラメータ部分を AES暗号化してくれます。

スマホで読み取ったときのURL
https://www.hayato.info/tag?id=sja0tVH8IK3Y2NnpJlPDhq0HDKQcwxMucecXCvFYYb4=

こんな感じ

カウンタも含めて暗号化するというのがミソで、そのおかげでタッチする度に毎回異なるコードが生成されます。

ここからはサーバ側の処理になります。送られてきたパラメータ部分を復号し、UIDとカウンタの値を取得します。サーバ側ではアクセスしてきたUIDとカウンタをセットで記録するようにしておきます。

で、記録してあるカウンタと今送られて来たカウンタの値を比較して、記録してある値と同じか低い値であれば、今タグにタッチしてアクセスしてきたのではなく、過去にタッチされたときのURLでアクセスしてきたことがわかります。

上記を実際にAWSで実装した場合が以下になります。AWSで実装したらこうなるという話で、AWSじゃないと実現できないということではありません。


S3: ここに最終的に表示させたいコンテンツを格納します。CloudFrontのOACを利用して、CloudFront経由でのみアクセスできるように設定しておきます。

CloudFront: スマホからのアクセスはここで受けるようにします。Lambda@Edgeを使って、アクセス時にLambda関数を走らせます。

Lambda: 上記の復号とチェックを行います。古いURLとわかれば、それ用のHTMLを返すようにします。

DynamoDB: UIDとカウンタの値を保存します。

これでタッチしないと表示されないWebサイトの完成です。もちろんタッチしてURLにアクセスせず、そのURLを他の場所に送ってそちらでアクセスするという抜け道もありますが、その場合でも実際にタッチしていることに変わりはありません。

2024年5月21日火曜日

新しいチャレンジ、そしてICタグとの出会い

こんにちは。4月に入社しました新入社員です。

社員が気軽に発信できるBLOGがあるなんて、いいですよね!

早速ですが、入社してICタグの可能性を目の当たりにしたとき、真っ先に浮かんだこと、ICタグの魅力についてお話ししたいと思います。

私はこれまで、ずっとWEB関連の仕事をしてきました。

その中で携わった、ERPシステム開発時の出来事が真っ先に思い浮かんだのです。


クライアントの多くが月末の棚卸に頭を悩ませていました。

業務を数日間停止して棚卸を行うことも珍しくないということでした。

このような状況は、会計処理にも大きな影響を及ぼし、月末で締めた会計システムを遡って変更する際の課題も多く、会議が長引くこともよくありました。

ICタグを使えば、物品の管理が格段に楽になります。

例えば、棚卸の際に手作業で一つ一つ確認する必要がなく、一瞬で在庫状況を把握できます。

ICタグは無線通信を利用して、タグが付けられた物品の情報を瞬時に読み取り、システムに自動的に反映されるため、広い倉庫内でも短時間で正確な在庫確認ができます。

毎月のように棚卸にかけていた労力を考えると、呆然としてしまう事実です。

さらに、リアルタイムで物品がどこにあるのか、いつ移動したのかを把握することもできます。

防犯対策としても有効ですね。

これまで、図書館やユニクロなどでICタグを使ったことはありましたが、実際に具体例を見てみないと業務にどのように活用できるかは、ピンとこないものですね。

しかし、何でも開発してしまう技術者って本当にすごいと思います!

こんな便利なツールを目の当たりにすると、効率を求めてシステム化されているはずの社会が、急にアナログの手作業で運用されているように感じてしまいます。

まだまだ世の中は変わっていくのだろうと、改めてICタグの可能性に感動した、RFID猛勉強中の私でした。


これからも、初心者目線で気づいたこと、ICタグの最新情報や活用事例など、ブログを通じて発信していきますので、どうぞよろしくお願いします! 

2024年5月2日木曜日

iOS用のSDKを.NET MAUIで使えるようにしてみる

 RFIDを使ったシステム開発ではスマートフォンでリーダを制御することが多いですが、iOSで使いたいという要望がとても多いです。iOSに対応しているリーダも少ないながらありますのでそのリーダのSDKを使って開発するわけですが、iOSでの開発というものは何と言うか、こう、いろいろ大変ですよね。

ちょこっとしたアプリなら問題無いですが、業務用のアプリになると画面数多いしそれはそれは大変なわけです。そこで少しでも開発を楽にしたいということでXamarinを使うという手があります。

XamarinならC#で書けますので開発は楽です。しかしXamarinのサポートが終わり、.NET MAUIに移行という流れになっています。

そのような事で MAUI で開発していこうと思うのですが、ここで先ほどの SDK が問題になってきます。そう、SDK はネイティブな Framework になっていることが多いのでそのままではMAUIで使用できません。バインディングというものを作成する必要があります。

チュートリアル: iOS Swift ライブラリをバインドする

この資料に沿って作業します。この資料のポイントは、SDKをそのままバインディングするのではなく、必要なメソッドだけラッパー的なライブラリを作ってSDKを後ろに隠し、バインディングはラッパーの部分だけにすることでバインディングに関するややこしい作業を省こうというところです。資料は Xamarin用ですが、まぁ、何とかなるかなと思ってやってみます。

ちなみに MAUI だと Mac がなくても iOS の開発ができるみたいな感じですが、さすがにバインディングのプロジェクトはビルドできなかったのでライブラリを作るところまでは Mac で作業します。

早速問題があって手元にある Mac mini が古くて OS が Catalina までしか上げられないので必然的に Xcode が Version 12.4 までしか入りません。

上記資料に沿って作業を行い、何とか「ネイティブライブラリをビルドする」の章まで完了しました。

次の章「メタデータを準備する」でコケます。Objective Sharpieというツールを使って、バインディングライブラリに必要な ApiDefinition.cs と StructsAndEnums.cs を作成する必要があるんですが、OSが古いせいか sharpie がエラーで起動すらしてくれません。困った。どうしよう。ただどちらのファイルもライブラリの定義情報を記載してるだけのようなので手作業で作ることにします。手作業と言っても、作成するのはラッパーの部分だけなので楽勝です。

次、「バインドライブラリをビルドする」の章、資料では Visual Studio for Mac で作業してます。Visual Studio 使うんなら Windows でもよくね?と思って試しに Windows の Visual Studio 2022 でやってみます。

ネイティブ参照などはうまくいって何かうまくいきそうな気配がする。画面見る限り何の文句も言ってこないしこれはこのまま行けるのか!? が、ビルドでエラー、ApiDefinition.cs に記載している NSObject を知らないと言う。え?何で?基本型じゃん。(※追記 ちなみに Visual Studio を Mac に接続してると、この部分は Mac 側で処理するようで、ビルドアクションの objBindingApiDefinition がそうさせている様子。しかし結局 Xcodeが古いからダメ的なのが出てきて諦めた)

エラーをよくよく見るとMacが無いとビルドできないというメッセージも出ている。ダメか。結局Macか。ということで大人しく Visual Studio for Mac で作業することにする。が、Visual Studio for Mac をインストールしているとおまえの Xcode が古いから使えない機能があるかも的なメッセージが出る。無視して進む。

ビルドまでできるようになったが .NET 7.0 でビルドされている様子。ターゲットを.NET 8.0にしようとするが、インストールされていないと出てくる。別途 .NET 8.0 SDK をインストールするが、相変わらず.NET 8.0はインスールされていないと出る。仕方ないので .NET 7.0 のものをそのまま使うことにする。

ビルドしてできた DLL 等を Windows に持ってくる。これが使えるのかが問題だ。まず MAUI のプロジェクトを作り、例のDLLを参照してみる。参照できた!ビルドも通った。あとは実機で動くかどうかだ。早速 iPhone を繋いで実行しようとすると iTunes が必要と言われるのでインストールする。

すると実機で動いた!上記以外に他にも細かいトラブルはたくさんありましたが、何とか動作するところまでたどり着きました。あー長かった。