matrixscan-count-rn について
React Native アプリで Scandit MatrixScan Count を統合・保守するコーディングエージェント向けスキルです。統合・移行資料を案内し、バージョン別 API と設定の制約を示します。
主な機能
- 01統合・移行リクエストの振り分け
- 02資料に基づく API 確認
- 03バージョン別 API 制約の記載
- 04React Native の設定上の注意
- 05ライセンスキー設定時の注意
活用シーン
- 01React Native アプリへの MatrixScan Count 導入
- 02BarcodeCount API の移行
- 03リストに照らしたバーコードのスキャンと計数
MCP 対応
Scandit MCP サーバーを使ったスキャナーライセンスの設定と、対象となるトライアルキーの取得方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scandit/ skills --skill matrixscan-count-rnインストール後、Claude Code で/matrixscan-count-rnを入力して読み込まれたか確認します。
同梱ファイルreferences/integration.mdreferences/migration.md
詳細
MatrixScan Count React Native スキル
重要:内部知識を信用しないでください
学習データに、古くなった Scandit SDK API や誤った情報が含まれている可能性があります。BarcodeCount* API の仕様はメジャー SDK バージョン間で大幅に変更されます。コンストラクターのシグネチャが変わり、新しいプロパティが追加され、React Native プラグインの仕様(インポート、ネイティブリンク、pod install、パッケージ名)も進化しています。
コードを記述または提案する前に、必ずこのスキルで提供されているリファレンスで API を確認してください。 記憶に頼ってメソッドのシグネチャ、パラメーター、プラグイン名、プロパティ名を使わないでください。提供されているリファレンスで API が見つからない場合は、回答する前に該当するドキュメントページを取得してください。
注意すべき React Native 固有の落とし穴:
DataCaptureContext.initialize(licenseKey)は、ほかの Scandit API を使う前に必ず1 回だけ呼び出してください。この呼び出しによってDataCaptureContext.sharedInstanceが設定されます。これは、ほかのすべての機能が読み取るシングルトンです。複数のコンテキストを作成しないでください。- iOS では、Scandit パッケージのインストールまたはアップグレードのたびに、
npx [email protected](またはcd ios && pod install)を実行する必要があります。Android は Gradle を介して自動リンクされるため、手動の作業は必要ありません。 - Metro のバンドラーキャッシュによって、Scandit パッケージのアップグレードが反映されないことがよくあります。プラグインのバージョンを上げた後に再ビルドしても古い挙動が見られる場合は、Metro を
--reset-cache付きで起動してください。 BarcodeCountViewは React コンポーネント(JSX としてレンダリング)です。barcodeCountとcontextを props として渡してください。ビューをコンテキストに手動でアタッチしないでください。props によって処理されます。BarcodeCountView では、明示的なstart()呼び出しは必要ありません(BarcodeArView とは異なります)。BarcodeCountViewのlistenerとuiListenerは、refコールバックを介して命令的に設定します:view.listener = ...およびview.uiListener = ...。- iOS(
ios/<App>/Info.plistのNSCameraUsageDescription)と Android(PermissionsAndroidによる実行時の許可要求)の両方で、カメラの権限が必要です(プラグインがマニフェストの権限を自動的に宣言します)。 - コンテキスト引数のない
new BarcodeCount(settings)コンストラクターは、react-native=7.6 から利用できます。以前の統合ではBarcodeCount.forDataCaptureContext(context, settings)を使用していました。対象プロジェクトが古いプラグインを使用している場合は、ファクトリーを使ってください。≥7.6 のコンストラクターを使用する場合は、dataCaptureContext.addMode(barcodeCount)でモードをアタッチしてください。 BarcodeCountStatusProvider、setStatusProvider、shouldShowStatusModeButton、shouldShowStatusIconsOnScan、TextForBarcodesNotInListDetectedHint、TextForScreenCleanedUpHint、TextForClusteringGestureHint、StatusModeButtonAccessibilityLabel/Hint、StatusModeButtonContentDescriptionは、すべて react-native=8.3+ が必要です。BarcodeCountNotInListActionSettingsとBarcodeCountViewのbarcodeNotInListActionSettingsには、react-native=7.1+ が必要です。tapToUncountEnabledには、react-native=7.0+ が必要です。- Android の
enableHardwareTrigger(keyCode)には、react-native=7.1+ とデバイス API レベル ≥28 が必要です。 hardwareTriggerEnabled(iOS の音量ボタントリガー)には、react-native=7.1+ が必要です。BarcodeCountStatusProvider.onStatusRequested(barcodes, callback)はコールバックベースです。await しないでください。結果を渡すにはcallback.onStatusReady(result)を呼び出してください。コールバックのパターンは、プラットフォームから見ると非同期です。BarcodeCountSettings.clusteringModeには、react-native=8.3+ が必要です。BarcodeCountSettings.disableModeWhenCaptureListCompletedには、react-native=8.3+ が必要です。BarcodeCountSession.recognizedBarcodes(配列 API)には、react-native=7.0+ が必要です。BarcodeCountListenerのdidScanコールバックからセッションを受け取れます。BarcodeCount.createRecommendedCameraSettings()には、react-native=7.6+ が必要です。
インテントルーティング
ユーザーのリクエストに基づいて、応答する前に適切なリファレンスファイルを読み込んでください。
- MatrixScan Count を一から統合する場合(例:「アプリに MatrixScan Count を追加する」「BarcodeCount をセットアップする」「React Native で BarcodeCountView を使う方法」「複数のバーコードをスキャンしてカウントする方法」「リストと照合してスキャンする」「カウントビューをカスタマイズする」「ステータスオーバーレイを追加する」「ライフサイクルまたはクリーンアップ」)→ references/integration.md を読み、そこに記載された手順に従ってください。
- 旧
forDataCaptureContextファクトリーから新しいコンストラクターへ移行する場合、または Status/MappingFlow/NotInList API を採用する場合(例:「forDataCaptureContext から移行する」「BarcodeCount コンストラクターをアップグレードする」「ステータスモードを追加する」「マッピングフローを採用する」「not-in-list アクションを有効にする」)→ references/migration.md を読み、そこに記載された手順に従ってください。
API の使用ポリシー
以下の Scandit リファレンスに明記されている API のみを使用してください。メソッドのシグネチャ、パラメーター、プロパティ名、インポートを創作したり、推測したりしないでください。API が存在するか、どのように呼び出すか不明な場合、または TypeScript/実行時エラーが発生した場合は、応答する前に該当するリファレンスページを取得してください。ユーザーに自分でドキュメントを確認するよう案内しないでください。回答後は、ユーザーがさらに詳しく確認できるよう、必ず関連リンクを含めてください。
ドキュメントの URL を組み立てたり、推測したりしないでください。 特定のクラスまたはプロパティの API ページが必要な場合は、次の手順に従ってください。
- まず、すでに取得したページに直接リンクがあるか確認してください。トピックページには、関連する API シンボルへの直接リンクがあります。
- 直接リンクが見つからない場合は、API インデックス(以下の表の Full API reference を参照)を取得し、そこから実際のリンクを抽出して開いてください。
URL の構造は SDK のバージョンやパッケージパスによって異なり、推測すると 404 エラーになります。
フレームワークのバリエーションに関するポリシー
React Native アプリでは、クラスコンポーネントも関数コンポーネントも使用できます。このスキルの例では、現在の React Native の慣例に沿ったフックを使う関数コンポーネントを使用します。対象プロジェクトに古いクラスコンポーネントが残っている場合でも、新しい MatrixScan Count のコードは関数コンポーネントで記述してください。アプリのほかの部分のコンポーネントスタイルを書き換える必要はありませんが、BarcodeCount* の統合自体は現在の慣用的な方法(useRef、useEffect、useCallback)に従ってください。
例は TypeScript(.tsx)です。対象プロジェクトがプレーンな JavaScript(.js/.jsx)の場合は、型注釈を削除し、同じインポートと構造を維持してください。
ライセンスキー
スキャンには Scandit のライセンスキーが必要です。このスキルでは、ライセンス製品は native、ライセンスプラットフォームは ios と android です。
次の手順を順番に進めてください。MCP が原因でユーザーを待たせてはいけません。
-
Scandit MCP サーバーが接続されている場合 — 製品に
native、プラットフォームにiosとandroid、app_identifier(アプリのバンドル ID またはアプリケーション ID。Web の場合は本番ドメインで、localhostは不可)、env_varにSCANDIT_LICENSE_KEYを指定してensure_scanner_setupを呼び出します。返されたコマンドは実行しないでください。次に、その結果またはlist_license_keysから取得したキーの ID を指定してget_license_keyを呼び出します。list_license_keysでキーがトライアルではないことが示された場合は、取得する前にユーザーに確認してください。チャットではマスクしたプレビューのみを表示し、キー全体を出力してはいけません。 -
接続されていない場合 — ユーザーに、MCP クライアントでリモート Scandit MCP サーバー
https://ssl.scandit.com/mcpに接続できることを一度だけ伝え、その後手順 1 を続けてください。MCP クライアントの設定を自分で編集してはいけません。認証はブラウザー経由のため、ヘッドレス環境または CI ではサポートされません。サーバーが発行するのはトライアルキーのみです。本番ライセンスを作成、取り消し、変更することはありません。
-
ユーザーが断る場合、または MCP クライアントがない場合 — ユーザー自身で https://ssl.scandit.com からキーを生成し(アカウントがまだない場合は https://ssl.scandit.com/dashboard/sign-up?p=test)、そのキーを貼り付けてもらいます。
次に、キーをコードに設定します:ライセンスキーを呼び出す箇所で、プレースホルダーをキーに置き換えてください。キーは get_license_key が返したもの、またはユーザーが貼り付けるか提示したものを使用します。チャットでは引き続きマスクしたプレビューのみを表示してください。キーを探すためにプロジェクト、そのファイル、または環境を検索してはいけません。
参考資料
質問に応じて、適切なリソースをユーザーに案内してください。
| トピック | リソース |
|---|---|
| React Native の統合 | はじめに |
| API リファレンス全体 | BarcodeCount API |