見出し画像

Chromebookで作るPWAアプリ日記8

こんにちは、junkawaです。

バーコードを読み取り、商品検索を行うPWAアプリを検討しています。

画面スケッチをGoogleスライドで作っています。

バーコード読み取り (バーコード→JANコード)

バーコード(JANコードを)を読み取れる、軽量なJavascriptライブラリJOBを使います。

webpackでバンドルするためにコードに少し手を加えました。

商品検索 (JANコード→商品名)

Amazon Product Advertise API を使いたかったのですが、アソシエイト・プログラムの審査に通りそうになかったので、Yahoo デベロッパーネットワークのWeb APIを使うことにしました。

https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid=<あなたのアプリケーションID>&jan=4959127006128

将来的にAmazonや楽天のAPIも試してみたいので、Web API呼び出しの処理をクライアント上(フロントエンド)で実行しないことにしました。

これには、アプリケーション・キーやシークレット・キーをユーザから隠蔽できるという利点もあります。

JANコード→商品名は単純な処理なのでわざわざサーバを立てる必要もないため、サーバレスアーキテクチャを検討します。

AWS LambdaやGoogle Cloud Functionsも使ってみたいですが、まずは使い慣れたGoogle Apps Scriptで実装します。

Google Apps Script

GASを「ウェブアプリケーションとして導入」すると、指定されたURLにGET,POSTした時に処理を実行することができます。

例)
https://script.google.com/macros/s/.../exec?jan=4959127006128
function doGet(e) {
  const params = JSON.parse(JSON.stringify(e));
  if (!('jan' in params['parameter'])) return HtmlService.createHtmlOutput('invalid params');

  const jan = params['parameter']['jan'];
  const appId = '<アプリケーションID>';
  const url = 'https://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch?appid='+appId+'&jan='+jan;

  const response = UrlFetchApp.fetch(url);

  return ContentService.createTextOutput(response.getContentText());
}

このような感じでGET時のパラメタjanを使って商品を検索できます。

ご覧下さりありがとうございます。いただいたサポートは図書館への交通費などに使わせていただきます。