バーコード読み取りの仕組み

RayBarcode Readerアプリを使ってスマートフォンのカメラでバーコードを読み取り、Salesforceと連携する仕組みを説明します。

上の図はクリック(タップ)すると拡大できます。

読み取り操作の流れ

読み取り操作の基本的な流れは以下となります。

  1. Salesforceモバイルアプリから開発した画面(VisualforceやLightningなど)を起動する。
  2. ユーザが画面上の読み取りボタンをタップする。
  3. RayBarcode Readerが起動される。
  4. バーコードを読み取る。
  5. バーコードの読み取りが終わったら、自動でSalesforceアプリへ戻る。

この読み取り操作の流れを、一回読み取り機能と連続読み取り機能のそれぞれの操作に分けて さらに詳しく説明します。

一回読み取り機能の操作の場合

次のシーケンスは、一回読み取り機能の操作の流れを表したものになります。 ユーザがスマートフォンを使ってバーコードを読み取るまでの操作は、開発方法の違いに関わらず基本的に同じです。

sequenceDiagram participant ユーザ participant Salesforceアプリ participant RayBarcode Readerアプリ participant Salesforce ユーザ->>Salesforceアプリ: スマートフォンでアプリを起動 Salesforceアプリ->>ユーザ: Salesforceログイン画面を表示 ユーザ->>Salesforceアプリ: Salesforceにログイン Salesforceアプリ->>ユーザ: Salesforceのホーム画面を表示 ユーザ->>Salesforceアプリ: バーコードの読み取り開始画面を選択 Salesforceアプリ->>ユーザ: バーコードの読み取り開始画面を表示 ユーザ->>Salesforceアプリ: 画面上の読み取りボタンをタップ Salesforceアプリ->>RayBarcode Readerアプリ: RayBarcode Readerアプリを起動 RayBarcode Readerアプリ->>ユーザ: Salesforceログイン画面を表示 ※1 ユーザ->>RayBarcode Readerアプリ: RayBarcode Readerにログイン RayBarcode Readerアプリ->>ユーザ: カメラ画面を表示 ユーザ->>RayBarcode Readerアプリ: バーコードを読み取る RayBarcode Readerアプリ->>Salesforce: 読み取ったデータをSalesforceに渡す RayBarcode Readerアプリ->>Salesforceアプリ: Salesforceアプリに戻る Salesforce->>Salesforceアプリ: 読み取り完了後にonScanComleteの処理

※1 RayBarcode Readerアプリにユーザがログインしていなかった場合のみ、Salesforceログイン画面が表示されます。

連続読み取り機能の操作の場合

次のシーケンスは、連続読み取り機能の操作の流れを表したものになります。 連続読み取りでは、WebServiceを使って読み取りを制御しているため、上記の「一回読み取り機能の操作の流れ」とは少し異なります。 ユーザがスマートフォンを使ってバーコードを読み取るまでの操作は同じですが、その後の読み取ったデータをcontinuousScanCallbackで判定するという相違点があります。

sequenceDiagram participant ユーザ participant Salesforceアプリ participant RayBarcode Readerアプリ participant Salesforce ユーザ->>Salesforceアプリ: スマートフォンでアプリを起動 Salesforceアプリ->>ユーザ: Salesforceログイン画面を表示 ユーザ->>Salesforceアプリ: Salesforceにログイン Salesforceアプリ->>ユーザ: Salesforceのホーム画面を表示 ユーザ->>Salesforceアプリ: Salesforce上のバーコードの読み取り開始画面のアプリを選択 Salesforceアプリ->>ユーザ: バーコードの読み取り開始画面を表示 ユーザ->>Salesforceアプリ: 画面上の読み取りボタンをタップ Salesforceアプリ->>RayBarcode Readerアプリ: RayBarcode Readerアプリを起動 RayBarcode Readerアプリ->>ユーザ: Salesforceログイン画面を表示 ※1 ユーザ->>RayBarcode Readerアプリ: RayBarcode Readerにログイン RayBarcode Readerアプリ->>ユーザ: カメラ画面を表示 ユーザ->>RayBarcode Readerアプリ: バーコードを読み取る RayBarcode Readerアプリ->>Salesforce: 読み取ったデータをSalesforceに渡す Salesforce->>RayBarcode Readerアプリ: 読み取ったデータをcontinuousScanCallbackで判定 RayBarcode Readerアプリ->>ユーザ: 判定結果を読み取り中のカメラ画面に表示 ユーザ->>RayBarcode Readerアプリ: 再度の読み取り(繰り返し) RayBarcode Readerアプリ->>Salesforce: 読み取ったデータをSalesforceに渡す(繰り返し) Salesforce->>RayBarcode Readerアプリ: 読み取ったデータをcontinuousScanCallbackで判定(繰り返し) RayBarcode Readerアプリ->>Salesforceアプリ: Salesforceアプリに戻る Salesforce->>Salesforceアプリ: 最後の読み取り完了後にonScanComleteの処理

※1 RayBarcode Readerアプリにユーザがログインしていなかった場合のみ、Salesforceログイン画面が表示されます。

読み取り可能なバーコードの種類

スマートフォンのバックカメラを使う場合、次のバーコードおよび二次元コードの読み取りに対応しています。フロントカメラ(インカメラ)の場合はQRコード(QRCode)読み取りのみ対応します。

  • Code39
  • Code93
  • Code128
  • DataMatrix
  • NW7(別名:CodabarまたはCodeabarまたはCode2of7)
  • ITF
  • JAN8(別名:EAN8)
  • JAN13(別名:EAN13)
  • QRCode
  • GS1DataBar OmniDirectional(別名:RSS-14)
  • GS1DataBarExpanded(別名:RSS-Expanded)

次のバーコードの読み取りに試験的に対応しています。

  • Aztec
  • PDF417

日本語の読み取り

RayBarcode Readerアプリで読み取るQRコードに漢字、全角ひらがな、全角カタカナ、全角の英数字などを含む場合、QRコードの値がShift-JIS(シフトJIS)またはUTF-8でエンコードされている必要があります。

バーコードの読み取りにあたっての仕様と制限

RayBarcodeのバーコードの読み取り機能の仕様と制限です。

  • オフラインでは使用できません。Salesforceに接続して読み取ったデータを保存するために、スマートフォンまたはタブレットはインターネットに接続している必要があります。
  • RayBarcode ReaderアプリのiOS版とAndroid版には機能の違いはありません。
  • RayBarcdoe Readerアプリはポートレート(縦長)のみ対応です。ランドスケープ(横長)には対応していません。
  • 複数のバーコードをカメラ画面に収まるように並べて撮影し、1回の操作で取り込むことはできません。1つのバーコードにつき、1回ずつ読み取りの操作が必要です。ただし、連続読み取り機能を使うと毎回「読み取り」ボタンをタップせずに読み取れます。
  • バーコードを撮影して写真として保存することはできません。
  • バーコードの読み取り成功時と失敗時の音は、カスタマイズできません。
  • 読み取り音の音量を変更することができます。ただし、使用端末の機種やOSバージョンによって次の設定方法と違う場合があります。
    • iOSの場合、「設定 > サウンド > 着信音と通知音」で変更します。「ボタンで変更」をオンにすることで、ボリュームボタンで調節するのも可能です。
    • Androidの場合、「設定 > 音 > 着信音の音量」で変更します。
  • 読み取り可能な距離はスマートフォンのカメラ性能に依存します。
  • RayBarcode Readerアプリの「設定」と「アカウント管理」の表示は、スマートフォンの言語設定が反映されます。Salesforceの言語設定は反映されません。
  • RayBarcode Readerアプリ自体はSalesforceのAPI要求数を消費します。さらに連続読み取りを制御するためにWebServiceを実装すると、WebServiceの呼び出し回数だけAPI要求数が消費されます。参照:WebServiceを使った連続読み取り機能の開発
  • 暗所での読み取りのため、LED(フラッシュライト)を自動点灯する機能はありません。LEDの動作は、ユーザが読み取りのカメラ画面でFlashアイコンをタップして手動で切り替えます。
  • フロントカメラでの読み取りには制限があり、QRコードのみに対応します。QRコード以外の読み取りはバックカメラを使用してください。
  • RayBarcode Readerアプリは、読み取った結果を一時的にSalesforceのScanResultオブジェクトに格納しますが、Salesforceアプリ側へ読み取った結果を正常に送信すると、そのデータは消去されます。Salesforce画面がリロードされてしまうなど結果を正常に送信できなかった場合、ScanResultオブジェクトからデータは消去されません。この場合、次回別のスキャンがトリガーされると、期限切れの読み取り結果は1時間後にすべて消去されます。
  • バーコードを1回スキャンすると、RayBarcode Readerは読み取ったデータを判定するためSalesforce側にデータを送信します。Salesforceのサーバーやネットワークのエラー発生が原因でデータの送信に失敗した場合は、エラーダイアログが表示されます。
  • Android端末で、読み取りを行う前に自動回転機能をオフに設定してください。自動回転機能をオンにすると、Salesforceモバイルアプリの仕様上読み取り後の挙動が不正になる場合があります。その結果として、画面表示やオブジェクトの更新が不正になる場合があります。
  • RayBarcode Readerアプリを起動した後、通信環境が一時切断され再接続した場合、読み取り後の挙動が不正になる場合があります。その結果として、画面表示やオブジェクトの更新が不正になる場合があります。この現象の原因は、インターネットへ再接続によりSalesforceアプリが強制敵にページをリフレッシュさせて、読み取りが完了した後の処理などが正常に行われないからです。 もし、インターネットへの再接続を行った場合は、Salesforceアプリへ戻って再読み取りしてください。
  • iOS端末でLightningアプリを使用し読み取り操作を行う場合、Salesforceの仕様上、Salesforceモバイルアプリがバックグラウンドになってから一定の時間が立つと、Salesforce画面がリフレッシュされ、スキャンに成功しても読み取った結果が表示できなくなります。Coummunity Cloudの場合は5秒前後、それ以外のSalesforce環境の場合は10~15秒が目安です。 連続読取りなど長時間の読み取り作業を行う場合は、Visualforceを使った読み取りアプリの開発、または、Android端末を利用するようにしてください。
  • 手動でRayBarcode ReaderアプリからSalesforceアプリに切り替えてRayBarcode Readerアプリが待機状態になっている場合や、インターネット接続不良などが原因でSalesforceアプリ側へ読み取った結果を送信するのに時間が掛かる場合に、Salesforceアプリに黄色の点滅が表示されます。 この点滅表示は、RayBarcode Readerアプリがバックグラウンドで実行中であることをユーザーにお知らせするためのもので、読み取り動作には影響ありません。また、RayBarcode Readerアプリが終了されたりデータが準備出来たら画面から自動に点滅表示が消えます。
  • 連続読み取りの途中使用するカメラを切り替えする場合は、iOS端末を利用するようにしてください。Android端末だと、カメラ切り替え前に読み取ったスキャン結果がクリアされてしまいます。
Copyright © 2020 GrapeCity inc. All rights reserved.