LoginSignup
5
1

More than 3 years have passed since last update.

PowerApps ポータルにバーコードリーダー機能追加を検討してみて

Posted at

経緯

今回のいただいた要望は以下でした。

  • 会員申込登録業務をデジタル化したい。
  • バーコード読み取りをしたい。
  • 100~200箇所で使用したい。
  • 費用はなるべく抑えたい。

PowerAppsキャンパスアプリには、バーコードスキャナーの機能があり、キャンパスアプリで実装すればことは足りるのですが、ボトルネックとなるのは使用したい数で、仮に100箇所100人で使用するとなるとそれだけで、PowerAppsのライセンス費用が100必要になり、とても費用を抑えるという要望を満たせない。ということで、ポータルに、バーコード読み取り機能を実装できないのかと検討をしました。

最初に確認したこと

バーコード読み取り機能をポータルでに実装するには、Javascriptで実装するしかないと思い、Javascript,バーコードで調べてみたところ、バーコード読み取りでは以下の3つが有名そうでした。

  • WebCodeCamJS
  • JOB
  • QuaggaJS

WebCodeCamJS、JOB について

 どちらも、JSファイルとして外部ファイルの参照が必要でした。
 @tricogimmickさんが、Power Apps Portal 開発メモに書かれているように、JSファイルは、ポータル管理から外部ファイルとして登録しても、認識してくれません。JSファイルをポータルで使用するためには、外部ファイルとして参照する必要があります。
 私は、すぐに使える外部サーバがなかったので、AzureWEBAppsを一つ作りそれ上に、JSファイルを置いて、参照して使ったり、GIT上のファイルを参照させていただいたりして、検証してみました。

その時に参考にさせていただいたサイト
https://blog.ecbeing.tech/entry/2020/06/30/114023
https://qiita.com/mm_sys/items/6e5e927ef75ab82fa8d3
https://qiita.com/k-murayama/items/048fc557c112537a6b83

結果、上記ライブラリは複数ファイルから成り立っていて、workerの参照の個所でエラーとなってしまいました。私のスキルでは、上手くライブラリを配置したりして、使いこなすことが出来ず断念。

QuaggaJSについて

 こちらは、外部ファイルとして、一つだけのファイルで使用できたため、私でも使用することが可能でした。
ちなみに、外部参照のソースはこちら

<script type="text/javascript" src="https://serratus.github.io/quaggaJS/examples/js/quagga.min.js"></script>

参考にさせていただいたサイト
https://kuroeveryday.blogspot.com/2017/12/barcode-scaner-with-quaggajs.html
https://ameblo.jp/white-rabbit-0925/entry-12579659224.html
https://watchcontents.com/quaggajs-barcode-reader/
https://mam-mam.net/javascript/js_quagga.html

QuaagaJSのリファレンスに関しては、こちらのサイトが非常にわかりやすく助かりました。
https://tech-memo.yonayona.biz/posts/quagga

これらのサイトを参考に、お試しでポータルのホームに、バーコード読み取り機能を実装。

苦労した箇所

小さなバーコードが読み取りできない。
自分のiphoneを使用してテスト。最初320×240の大きさで読み取りテストを実施。
PCの画面上に表示する大きな画像では、正常に読み取りができました。
その後、手元にあるチョコレート等の裏についている小さなバーコードで読み取りをすると、なぜか正常認識をしません。
→ そこで、locatorの項目を変更することで対応できないか検証。

locator:{
        //カメラを離す x-small small medium large x-large近づける
        patchSize: "medium",
        halfSample: false  //trueだと縦横半分にリサイズした画像で解析
    }

結果)phoneのカメラを小さなバーコードに近づけても結局オートフォーカスができずぼけてしまい、離すと小さくて認識できず、locatorを変更してみても読み取り精度は上がりませんでした。

試行錯誤ののち、読み込む画像の解像度が変わっていないからではないかと思い、
constraints にて、大きさを変更。320×480に変更。

 constraints:{
            width:320,height:480
      }

結果)小さなバーコードを読み込むんで認識することが出来ました。

終わりに

  • 単純なことですが、中々気づくことが出来ませんでした。
  • キャンパスアプリみたいに、ポータルにもインテリジェンス機能を部品として組み込んで簡単に実装できるようにしてくれると嬉しいなと思いました。バーコード読み取り機能もそうですが、ポータルでかゆいところに手が届くようになると、ありがたいです。

最後まで、お読みくださってありがとうございます。
誤植や、不適切な記述等ありましたら、ご指摘いただけますとありがたいです。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1