LoginSignup
2
2

SAP BTP Free TrialでSAP Build Appsを使ってモバイルアプリを作成してみよう(後編)

Posted at

こちらの記事の続きになります。

引き続き、こちらのTutorialを参考にしています。

スマホ搭載カメラからのQR/Barcode読み取り設定

前回作成したスキャナアプリを開いて、Scanボタンを押してから、Add Logic to BUTTON 1をクリックします。
スクリーンショット 2024-03-16 13.47.46.png

コアロジックコンポーネントを使用して、Device - Scan QR/barcodeコンポーネントまでスクロールダウンし、これをロジックエディタにドラッグアンドドロップします。これはSAP Build Appsによって提供されている、SAP Build Appsアカウント内で利用可能な多くのコンポーネントの中の1つである、事前に設定されたQRまたはバーコードスキャナーコンポーネントです。
スクリーンショット 2024-03-16 14.07.31.png

Deviceコネクタ(出っぱっている部分)をクリックし、Component tapまで引っ張り接続します。Component tapから引っ張っても同じです。
スクリーンショット 2024-03-16 14.08.29.png

このコネクタは単にフローの方向を示しており、この場合はボタンがタップされ、それがカメラデバイスの起動をトリガーとすることを意味しています。
スクリーンショット 2024-03-16 14.10.34.png

QR/バーコードスキャナーが動作していることをテストするために、アプリケーションにアラートコンポーネントを追加します。これは単にバーコードがスキャンされた後にポップアップアラートを表示し、バーコード番号を画面に返すだけです。

これを行うには、コアロジックオプションに戻り、Alertまでスクロールして、Scan QR/barcodeロジックの横にドラッグアンドドロップします。
スクリーンショット 2024-03-16 14.11.53.png

上部のScan QR/barcodeオプションとAleatエレメントの間にコネクタを追加し、再びフローの方向を示します。
スクリーンショット 2024-03-16 14.12.58.png

現在、アラートは静的なテキスト応答のみを表示するように設定されていますが、ここで動的バインディングを追加したいと思います。これにより、アプリに代わり提供すべき情報を指示できるようになり、この場合はスキャンされているバーコードです。

これを行うには、Alertエレメントを選択し、PROPERTIESパネルを使用して、「Currently bound to: static text」をクリックし、バインディングオプション画面を開きます。
スクリーンショット 2024-03-16 14.14.13.png

Output value of another nodeをクリックします。
スクリーンショット 2024-03-16 14.15.00.png

Select binding typeの画面で、
スクリーンショット 2024-03-16 14.16.11.png

以下の設定を選択し、SAVEボタンを押します。
Select logic node – Scan QR/barcode
Select node output – Scan QR/barcode / QR barcode content
スクリーンショット 2024-03-16 14.16.23.png

画面右上のSAVEボタンを押します。
スクリーンショット 2024-03-16 14.17.54.png

スマホのSAP Build Apps Previewアプリで、食品のバーコードを使って機能をテストします。
IMG_2931.jpeg

Scanボタンをタップします。
IMG_2932.jpeg

Tutorial STEP5に記載されているバーコードのサンプルをスキャンすると、こちらの画面が結果として返されました。
IMG_2933.jpeg

Public APIへの接続

Scanner Applicationの画面に戻り、Scanボタンをクリックしてから、DATAタブをクリックします。
スクリーンショット 2024-03-16 14.38.33.png

REST APIに接続を追加します。

SAP Build Appsを使用している場合は、SAP Build Apps classic data entities > Create Data Entityをクリックし、次にREST API direct integrationを選択します。
スクリーンショット 2024-03-16 14.49.07.png

REST API direct integration resourceの画面が表示されますので、
スクリーンショット 2024-03-16 14.51.00.png

以下を各項目に入力します。
Resource ID OpenFoodFacts
Short description Data from Open Food Facts API
Resource URL https://world.openfoodfacts.org/api/v0
スクリーンショット 2024-03-16 14.51.39.png

Open Food Facts APIから取得する情報を設定する必要があります。このアプリケーションでは、デバイスのカメラでスキャンされているものがバーコードであるため、このバーコード情報を取得するように設定する必要があります。これはGet Recordリクエストを使用して達成できます。

これを設定するには、Get Record (Get)をクリックします。
スクリーンショット 2024-03-16 15.06.07.png

Relative pathフィールドには、/product/{barcode}.jsonと入力します。
スクリーンショット 2024-03-16 15.07.26.png

URL placeholderのid等が表示されているフィールドをクリックし、
スクリーンショット 2024-03-16 15.08.50.png

画面右側のPROPERTIESを行います。(LabelとKey以外はデフォルト)
Label Barcode
Key barcode
Value type Text
Description Resource ID to retrieve
Is encoded Enabled
Is static Disabled
Is optional Disabled
スクリーンショット 2024-03-16 15.10.27.png

データリソースが適切に設定され、情報を取得できるかどうかをテストするには、TESTタブをクリックし、Barcodeの下のCurrently bound to: static textをクリックします。
スクリーンショット 2024-03-16 15.11.55.png

Static textをクリックします。
スクリーンショット 2024-03-16 15.12.27.png

テキストフィールドに6416453061361を入力し、RUN TESTをクリックします。
これは、菓子の包装から取られた例のバーコード番号です。
スクリーンショット 2024-03-16 15.13.30.png

テストが実行され、Test API call responseが表示されます。このレスポンスでは、製品に関する情報が見られます。これには、製品カテゴリー、アレルゲン情報、製品を製造したブランドが含まれます。
スクリーンショット 2024-03-16 15.14.27.png

テストが成功した後、データスキーマを設定する必要があります。これにより、URLからのデータ構造が保存され、アプリケーションが取得している情報の種類を容易に識別できるようになります。

これを行うには、「Set Schema from Response」をクリックします。
スクリーンショット 2024-03-16 15.16.43.png

Save Data Entityをクリックし、
スクリーンショット 2024-03-16 15.18.26.png

SAVEボタンをクリックします。
スクリーンショット 2024-03-16 15.18.49.png

Public APIからSAP Build Applicationへのデータ取得

ここまでは、アプリケーションをパブリックAPIに接続する方法を学びました。ここからは、バーコードがスキャンされた後にそのAPIから特定の情報を読み取るようにアプリケーションを設定する必要があります。これもまたGet Record HTTPSリクエストを使用しますが、今回はそのリクエストがロジックフローでトリガーされます。

もはやアプリケーションにアラートを送信する必要がないため、ロジックフロー内のアラートコンポーネントを削除することから始める必要があります。

これを行うには、Scanボタンをクリックしてから「Show Logic for Button1」をクリックします。
スクリーンショット 2024-03-16 15.22.41.png

ロジックパネルからAlertコンポーネントを「✖」で削除します。
スクリーンショット 2024-03-16 15.23.29.png

バーコードがスキャンされた後に何が起こるべきかの新しいロジックフローを追加する必要があります。バーコードスキャナーがデータリソースからデータを取得するようにします。

これを行うには、コアロジックオプションを使用して、DATA – Get Recordまでスクロールダウンし、それをロジックエディタにドラッグアンドドロップします。
スクリーンショット 2024-03-16 15.25.24.png

アプリケーションのロジックの流れを示すために、上部のスキャン Scan QR/barcodeから Get Record オプションへコネクタを追加します。
スクリーンショット 2024-03-16 15.26.10.png

ロジックフローが設定されたら、スキャナーノードの出力に情報をバインドする必要があります。

これを行うには、Get Recordエレメントを選択し、PROPERTIESパネルを使用して「Currently bound to: Static text」をクリックし、バインディングオプション画面を開きます。
スクリーンショット 2024-03-16 15.26.48.png

Output value of another nodeをクリックします。
スクリーンショット 2024-03-16 15.27.30.png

Select binding typeの画面で、以下を設定し、SAVEボタンをクリックします。
Select logic node – Scan QR/barcode
Select node output – Scan QR/barcode / QR barcode content
スクリーンショット 2024-03-16 15.28.17.png

アプリケーションが受け取ったデータを保存するように設定する必要があります。これを行うには、データ変数を追加する必要があります。

これを行うには、VARIABLESビューに切り替えます。
スクリーンショット 2024-03-16 15.29.41.png

Data Variablesをクリックします。Welcome to variablesの画面は✖︎で閉じておきます。
スクリーンショット 2024-03-16 15.30.17.png

Add Data Variableをクリックします。
スクリーンショット 2024-03-16 15.31.10.png

Open Food Factsをクリックします。
スクリーンショット 2024-03-16 15.32.11.png

バーコードは単一の製品に対するものなので、Data variable type – Single data recordを選択します。
スクリーンショット 2024-03-16 15.33.14.png

データ変数には、新しい情報を5秒ごとに取得するデフォルトのロジックが付属していますが、アプリはバーコードがスキャンされたときにのみ情報を取得するべきです。その結果、デフォルトのロジックを削除する必要があります。

これを行うには、画面の赤枠内のロジックを選択して✖︎で削除します。
スクリーンショット 2024-03-16 15.39.09.png

削除できましたら、SAVEボタンをクリックします。
スクリーンショット 2024-03-16 15.39.44.png

「View」をクリックしてアプリケーションインターフェイスビューに戻ります。

ここから、取得したデータをデータ変数に保存するというロジックフローの最終ピースを追加する必要があります。
スクリーンショット 2024-03-16 15.49.36.png

Scanボタンをクリックしてから、コアロジックオプションを使用して、「Variables – Set Data Variables」までスクロールダウンし、それをロジックエディタにドラッグアンドドロップします。
スクリーンショット 2024-03-16 15.50.52.png

上部の「Get record」オプションから「Set data variable」オプションへコネクタを追加し、Currently bound to: object with propertiesをクリックします。
スクリーンショット 2024-03-16 15.52.32.png

Output value of another nodeをクリックします。
スクリーンショット 2024-03-16 15.53.20.png

Select binding typeの画面から、以下を選択します。
Select logic node: Get record
Select node output: Record
スクリーンショット 2024-03-16 15.53.57.png

Select node output: Recordを選択した時点で、画面がフリーズして、しばらくすると警告の画面が表示される場合があります。私の場合は警告の画面が表示されされましたので、待機ボタンを押して少し待ちました。
スクリーンショット 2024-03-16 16.04.11.png

しばらく待つと、この画面になりますので、SAVEボタンをクリックします。
スクリーンショット 2024-03-16 16.04.46.png

画面右上のSAVEボタンもクリックします。
スクリーンショット 2024-03-16 16.06.01.png

SAP Build Applicationへ取得したデータの表示

ここまでは、バーコードがスキャンされた後にAPIから特定の情報を読み取るようにアプリケーションを設定する方法を学びました。最後に、取得した情報をアプリケーションインターフェイスに表示する方法を学びます。

コアコンポーネントパネルから、アプリ内のScanボタンの下にTitleコンポーネントをドラッグアンドドロップします。
スクリーンショット 2024-03-16 16.22.19.png

Titleコンポーネントをクリックし、コンテンツをProduct Informationに変更します。
スクリーンショット 2024-03-16 16.23.28.png
スクリーンショット 2024-03-16 16.24.00.png

コアコンポーネントパネルから、このタイトルの下にTextコンポーネントをドラッグアンドドロップします。
スクリーンショット 2024-03-16 16.24.40.png

ここから、データ変数にバインドする必要があります。これにより、APIから取得した後に表示する食品情報を定義できます。なぜなら、各食品項目に利用可能なすべての情報を表示したいわけではないかもしれないからです。

この例では、製品名とエネルギー(kcal/100g)フィールドを表示する方法を示します。

製品名を表示するには、Textコンポーネントをクリックし、次に「Currently bound to: Static text.」をクリックします。
スクリーンショット 2024-03-16 16.25.55.png

Data and Variablesをクリックします。
スクリーンショット 2024-03-16 16.26.44.png

Data Variablesをクリックします。
スクリーンショット 2024-03-16 16.28.02.png

「Open food facts」変数をクリックします。
スクロールダウンして「product_name」フィールドを選択します。これには、ブラウザの検索機能を使用することをお勧めします。
スクリーンショット 2024-03-16 16.29.08.png

product_nameを選択した時点で、画面がフリーズする可能性があります。フリーズしてもしばらく待ちます。警告画面が表示された場合は待機ボタンを押します。
スクリーンショット 2024-03-16 16.30.11.png

しばらく待つとこちらの画面になりますので、SAVEボタンをクリックします。
スクリーンショット 2024-03-16 16.30.51.png

次に、製品名の情報に提供された同じ手順を使用して、アプリにカロリー情報を追加します。再びTextコンポーネントをドラッグし、先ほど追加したテキストの下にドロップします。
スクリーンショット 2024-03-16 16.32.47.png

Textコンポーネントをクリックし、次に「Currently bound to: Static text」をクリックします。
スクリーンショット 2024-03-16 16.33.37.png

Data and Variablesをクリックします。
スクリーンショット 2024-03-16 16.34.16.png

Data Variablesをクリックします。
スクリーンショット 2024-03-16 16.36.12.png

「Open food facts」変数をクリックします。
スクロールダウンして「energy」フィールドを選択します。これには、ブラウザの検索機能を使用することをお勧めします。
スクリーンショット 2024-03-16 16.37.01.png

energyを選択した時点で、画面がフリーズする可能性があります。フリーズしてもしばらく待ちます。警告画面が表示された場合は待機ボタンを押します。
スクリーンショット 2024-03-16 16.37.56.png

しばらく待つとこちらの画面になりますので、SAVEボタンをクリックします。
スクリーンショット 2024-03-16 16.38.25.png

次に、製品の画像を表示します。
前のステップで追加したカロリーテキストフィールドの下にImageコンポーネントを追加します。
スクリーンショット 2024-03-16 16.39.55.png

PROPERTIESペインで「Currently bound to: static image」をクリックします。
スクリーンショット 2024-03-16 16.40.56.png

Formulaをクリックします。
スクリーンショット 2024-03-16 16.41.25.png

Formulaフィールドに、data.OpenFoodFacts1.product.image_front_urlを上書きで入力します。
スクリーンショット 2024-03-16 16.41.54.png

SAVEボタンをクリックします。
スクリーンショット 2024-03-16 16.42.18.png

Set preview valueが自動入力されますので、再びSAVEボタンをクリックします。
スクリーンショット 2024-03-16 16.42.45.png

最後に、SAVEボタンをクリックします。
スクリーンショット 2024-03-16 16.43.15.png

スマホのSAP Build Appsに戻り、こちらのTutorialのSTEP5のバーコードをスキャンします。

こちらのクランベリーソースの画像と、カロリーが表示されました。
IMG_2934.jpeg

Tutorialでは100kg毎のカロリーを表示させると説明がありますが、数値が異なりましたので、カロリー表示の変数に戻り、今度はenergy-kcal_100gを選択してみました。
スクリーンショット 2024-03-16 16.50.54.png

すると、Tutorilと同様に157が表示されました。
IMG_2935.jpeg

Tutorialと同様に「Calories per 100g: 157」とは表示されませんでしたが、今回はこれで終了したいと思います。おつかれさまでした!

2
2
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
2
2