mcpField
B
barcode-capture-rn

barcode-capture-rn

github.com/scandit開発2064 回インストール5 日前に更新
リポジトリ

barcode-capture-rn について

React NativeでScandit BarcodeCaptureを統合、更新、置き換えるためのコーディングスキルです。バージョン別の資料でAPIを確認し、ライフサイクル、カメラ、スキャン処理のよくある問題を避ける方法を示します。

主な機能

  1. 01資料に基づくAPI確認
  2. 02統合と移行のガイド
  3. 03カメラとライフサイクルの注意点
  4. 04スキャンコールバック処理
  5. 05Scanditライセンス設定の案内

活用シーン

  1. 01React Nativeアプリへのバーコードスキャン追加
  2. 02既存のScandit統合の更新
  3. 03別のスキャンライブラリからの置き換え

MCP 対応

リモートのScandit MCPサーバーを使ったスキャナーライセンスの設定と、トライアルキーの取得方法を説明します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scandit/skills --skill barcode-capture-rn

インストール後、Claude Code で/barcode-capture-rnを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
integration.md
migration.md
third-party-migration.md

詳細

BarcodeCapture React Native スキル

重要:内部知識を鵜呑みにしないでください

トレーニングデータに、古くなった、または誤った Scandit SDK API が含まれている可能性があります。BarcodeCapture API は SDK のメジャーバージョン間で変更され、プロパティの名前変更、削除、構成変更が行われることがあります。また、React Native プラグインの仕様(インポート、ネイティブリンク、pod install、パッケージ名)も進化しています。

コードを記述または提案する前に、必ずこのスキルで提供されているリファレンスで API を確認してください。 記憶しているメソッドシグネチャ、パラメーター、プラグイン名、プロパティ名に頼らないでください。提供されているリファレンスに API が見つからない場合は、回答する前に該当するドキュメントページを取得してください。

注意すべき React Native 固有の点:

  • DataCaptureContext.initialize(licenseKey) は、他の Scandit API を使う前に必ず一度だけ呼び出す必要があります。これにより、他のすべてが参照するシングルトンである DataCaptureContext.sharedInstance がセットアップされます。複数のコンテキストを作成しないでください。
  • dataCaptureContext.dispose() は絶対に呼び出さないでください。 コンテキストはプロセス全体で共有されるシングルトンです。これを破棄すると、アンマウント対象の画面だけでなく、アプリ内のすべての Scandit 画面が動作しなくなります。画面のアンマウント時には、dataCaptureContext.removeMode(barcodeCapture) を呼び出し、オーバーレイを削除し、リスナーを削除して、カメラを FrameSourceState.Off に切り替えてください。これでクリーンアップは完了です。dispose() を追加で呼び出さないでください。
  • iOS では、Scandit パッケージをインストールまたはアップグレードするたびに、npx [email protected](または cd ios && pod install)を実行する必要があります。Android では Gradle によって自動リンクされるため、手動での作業は不要です。
  • Metro のバンドラーキャッシュによって、Scandit パッケージのアップグレードが反映されないことがよくあります。プラグインのバージョンを上げた後、再ビルドしても古い動作が見られる場合は、Metro を --reset-cache を付けて起動してください。
  • BarcodeCapture は、単独で動作するビューコンポーネントではありません。コンテキストを渡した <DataCaptureView> をレンダリングし、DataCaptureView.addOverlay(...) を使って BarcodeCaptureOverlay をそのビューに追加し、さらに Camera.default、dataCaptureContext.setFrameSource(camera)、camera.switchToDesiredState(FrameSourceState.On) を使ってカメラを自分で制御する必要があります。アンマウント時にこれらすべてを終了する責任は、インテグレーターにあります。SDK 8.7 以降では、ルートの ScanditProvider 内に配置した BarcodeCaptureAioView が、単独で動作する代替手段です。references/third-party-migration.md の SDK 8.7+: BarcodeCaptureAioView セクションを参照してください。
  • didScan 内では、スキャンごとの処理(画面遷移、ネットワーク処理、UI 更新など)を行う前に、barcodeCapture.isEnabled = false を設定し、次のコードを読み取る準備ができたら再び有効にしてください。リスナーのコールバック中はフレーム処理がブロックされます。モードを無効にしないと、ハンドラーが戻る前に didScan が重複して呼び出されます。
  • iOS(ios/<App>/Info.plist の NSCameraUsageDescription)と Android(PermissionsAndroid による実行時のリクエスト)の両方で、カメラ権限が必要です。プラグインによってマニフェスト権限は自動的に宣言されます。

インテントに応じた参照先

ユーザーのリクエストに基づき、回答する前に適切なリファレンスファイルを読み込んでください。

  • BarcodeCapture を新規に統合する(例:「アプリに BarcodeCapture を追加する」「バーコードスキャンをセットアップする」「React Native で BarcodeCapture を使うには」「ビューファインダーを追加するには」)→ references/integration.md を読み、そこに記載された手順に従ってください。
  • 既存の BarcodeCapture 統合を移行またはアップグレードする(例:「v6 から v7 にアップグレードする」「BarcodeCapture を移行する」「Scandit パッケージを v8 に上げる」「SDK バージョン間で何が変わったか」)→ references/migration.md を読み、そこに記載された手順に従ってください。
  • サードパーティ製スキャナーを BarcodeCapture に置き換える(例:「react-native-vision-camera の useCodeScanner を Scandit に置き換える」「vision-camera v5/expo-camera の CameraView から Scandit に移行する」「バーコードスキャナーライブラリから BarcodeCapture に切り替える」)→ references/third-party-migration.md を読み、そこに記載された手順に従ってください。

API 使用ポリシー

以下の Scandit リファレンスに明示的に記載されている API のみを使用してください。メソッドシグネチャ、パラメーター、プロパティ名、インポートを推測したり、作り出したりしないでください。API が存在するか、どのように呼び出すかが不明な場合、または TypeScript/ランタイムエラーが発生した場合は、回答する前に該当するリファレンスページを取得してください。ユーザーに自分でドキュメントを確認するよう伝えてはいけません。回答後は、ユーザーがさらに調べられるよう、必ず関連リンクを含めてください。

ドキュメントの URL を決して組み立てたり、推測したりしないでください。 特定のクラスやプロパティの API ページが必要な場合は、次の手順に従ってください。

  1. まず、取得済みのページ(例:Advanced Configurations ページ)に、そのページへの直接リンクが含まれているか確認します。トピックページには関連する API シンボルへの直接リンクがあります。取得時のプロンプトでは、コンテンツと併せてリンクも必ず要求してください。
  2. 直接リンクが見つからない場合は、API インデックス(下表の完全な API リファレンスを参照)を取得し、そこから実際のリンクを抽出して、そのリンク先を開いてください。

URL 構造は SDK のバージョンやパッケージパス(例:api/ui/ サブディレクトリ)によって異なります。推測すると 404 エラーになります。

フレームワークのバリエーションに関するポリシー

React Native アプリは、クラスコンポーネントまたは関数コンポーネントで記述できます。このスキルの例では、公式の React Native サンプルと現在の React Native の慣例に沿った、フックを使う関数コンポーネントを使用します。対象プロジェクトのほかの場所にレガシーなクラスコンポーネントが残っていても、新しい BarcodeCapture コードは関数コンポーネントで記述してください。アプリのほかの部分のコンポーネントスタイルを書き換える必要はありませんが、BarcodeCapture の統合部分では現在のイディオム(useRef、useEffect、useFocusEffect、useMemo)を使用してください。

例は TypeScript(.tsx)です。対象プロジェクトがプレーンな JavaScript(.js/.jsx)の場合は、型注釈を削除し、インポートと構造はそのままにしてください。

ライセンスキー

スキャンには Scandit ライセンスキーが必要です。このスキルでは、ライセンス製品は native、ライセンスプラットフォームは ios と android です。

次の手順を順番に進めてください。MCP のためにユーザーを待たせてはいけません。

  1. 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 でキーがトライアルではないと示された場合は、取得する前にユーザーに確認してください。チャットでは、マスクされたプレビューのみを表示してください。キー全体を決して表示してはいけません。

  2. 接続されていない場合 — ユーザーに、MCP クライアントでリモート Scandit MCP サーバー https://ssl.scandit.com/mcp に接続できることを一度だけ伝え、その後は手順 1 から続けてください。MCP クライアントの設定を自分で編集してはいけません。

    認証はブラウザー経由のため、ヘッドレス環境または CI ではサポートされていません。サーバーが発行するのはトライアルキーのみです。本番ライセンスの作成、取り消し、変更は行いません。

  3. ユーザーが希望しない場合、または MCP クライアントを持っていない場合 — ユーザー自身で https://ssl.scandit.com からキーを生成し、貼り付けてもらってください(アカウントをまだ持っていない場合:https://ssl.scandit.com/dashboard/sign-up?p=test)。

その後、キーをコードに設定します。プレースホルダーの代わりに、ライセンスキーを指定する呼び出しへキーを記述してください。使用するのは get_license_key が返したキー、またはユーザーが貼り付けるか提供したキーです。チャットでは引き続き、マスクされたプレビューのみを表示してください。キーを探すために、プロジェクト、そのファイル、または環境を検索してはいけません。

参考資料

質問に応じて、ユーザーを適切なリソースに案内します。

トピックリソース
React Native の統合はじめに · サンプル
高度なトピック(カスタムビューファインダー、位置の選択、スキャン意図、複合コード、フィードバック)高度な設定
メジャー SDK バージョン間の移行6 → 7 · 7 → 8
API リファレンス全文BarcodeCapture API

コメント