◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-06-29上級

Rork × Vision Camera v4:QR・OCR・ML推論まで本番投入できるカメラ機能を仕上げる実装ノート

Rork のアプリで React Native Vision Camera v4 を本番品質に仕上げる実装手順を、フレームプロセッサ・ML 推論・QR/OCR から、発熱対策・実機テストマトリクス・ストア審査・段階リリースまで通してお伝えします。

Vision CameraReact Native239Rork584フレームプロセッサMLKitQRコードOCREAS Build22

✦ プレミアム記事

カメラ機能を「とりあえず動く」状態から「本番品質」まで引き上げる作業は、Rork でアプリを作るときに最も時間が溶ける工程のひとつではないかと思います。私自身、過去 1 年で 4 本のカメラを使うアプリを App Store に出してきましたが、Expo Camera で組んだ最初のプロトタイプを本番投入できる構成に置き換えるたびに、半日から 2 日分のデバッグが発生していました。

特に厄介なのが、Vision Camera v4 を選んだ瞬間に立ちふさがる「EAS Custom Dev Client・Worklet・iOS の AVAudioSession・Android の Camera2 API 設定」の四つどもえです。どれかひとつでも間違うと、シミュレータでは動くのに実機で黒画面になったり、QR は読めるのに音声付きの動画録画でクラッシュしたりします。

ここではRork のプロジェクトに Vision Camera v4 を導入し、QR/バーコードのリアルタイム検出・TFLite を使った ML 推論・本番品質の写真と動画撮影まで、ひと通り動く構成を順を追って組み上げていきます。途中で出てくる落とし穴は、私が実際にぶつかって解決したものだけを残しているので、そのまま参考にしていただけるはずです。

なぜ Expo Camera ではなく Vision Camera v4 を選ぶのか

Rork のテンプレートには Expo Camera が含まれていることが多く、QR スキャナーや簡単な写真撮影だけならそのままで十分です。それでも本記事で Vision Camera v4 を扱うのは、本番アプリで必要になる「フレーム単位の処理」が Expo Camera では届かないからです。

私が個人的に判断軸にしているのは次の三点です。

  • フレームプロセッサで毎フレームを JS 側に渡せるかどうか:QR・OCR・ML 推論をリアルタイムで動かすには必須です。Vision Camera v4 は Worklet 経由で実装でき、UI スレッドを止めません
  • 撮影パラメータを細かく制御できるかどうか:HDR・ISO・露出・フォーカス距離など、写真品質を左右する設定を ImagePicker レベルで動かしたい場合は v4 が明確に楽です
  • コーデックと解像度の組み合わせを実機ごとに切り替えられるかどうか:低スペック端末で 4K@60fps を強制すると即落ちますが、v4 は getCameraDevice から formats を取得して動的に選べます

逆に「QR を 1 回だけ読みたい」「シャッターを 1 枚切りたい」だけのアプリなら、Expo Camera のほうが導入が一瞬で済みます。トレードオフは明確で、フレームレベルの処理が要らないなら無理に v4 を入れない方が、ビルド時間とトラブルが減ります。

Rork のプロジェクトに Vision Camera v4 を入れる:EAS Custom Dev Client の組み立て

Vision Camera v4 はネイティブモジュールを含むため、Expo Go では動きません。Rork から書き出したプロジェクトを EAS Custom Dev Client に切り替える必要があります。ここが最初の関門です。

# 1. Vision Camera と関連ライブラリを追加
npx expo install react-native-vision-camera
npx expo install react-native-worklets-core
npx expo install vision-camera-code-scanner
 
# 2. EAS Build の設定(eas.json)に Custom Dev Client プロファイルを追加
# 3. 開発ビルドを作成
eas build --profile development --platform ios
eas build --profile development --platform android

ここで react-native-worklets-core を入れ忘れると、フレームプロセッサが起動した瞬間に JSI is not available というメッセージで落ちます。私はこれに最初に踏み抜かれました。Vision Camera v4 は Worklet を前提に動くので、必ずセットで入れます。

app.json には次のプラグイン設定を入れます。マイク使用権限の文言は App Store 審査で必ず読まれるので、丁寧に書いておきましょう。

{
  "expo": {
    "plugins": [
      [
        "react-native-vision-camera",
        {
          "cameraPermissionText": "QRコードや書類のスキャンのためにカメラを使用します。",
          "enableCodeScanner": true,
          "enableLocation": false,
          "enableMicrophonePermission": true,
          "microphonePermissionText": "音声付き動画の録画のためにマイクを使用します。"
        }
      ]
    ]
  }
}

EAS の eas.json 側では、Vision Camera を含むビルドは「ビルド時間が伸びる」ことを織り込んで、最大ビルド時間を 60 分に上げておくと安全です。私は最初の数回、デフォルト 30 分でタイムアウトしました。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦毎フレーム処理を時間ベースで間引き、長時間でも発熱とバッテリー消費を抑える実装
✦iPhone/Android 実機マトリクスとストア審査の通し方まで含めた本番投入の判断軸
✦レシート読み取りアプリで実際に消費電力を約 40% 下げた、計測ドリブンの最適化手順
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 開発ツール2026-05-06
Rork アプリに Expo Dev Client を導入する手順 — ネイティブモジュールが Expo Go で動かなくなったときの最初の一手
Rork で生成したアプリにネイティブモジュールを足したら Expo Go で開けなくなった。そんなときの Expo Dev Client(カスタム開発ビルド)の導入手順と、prebuild の落とし穴・リビルドの判断基準・EAS Update との関係を整理します。
⬡ 開発ツール2026-09-21
exit code 0 で止まるビルド — ログを黙らせていた設定と、空ファイルを通した存在チェック
eas build --local が exit code 0 but produced no further output で止まる件と、0 バイトのスタブが埋め込まれず dyld で落ちる件。どちらも原因は出力を減らす設定でした。自分のスクリプトを棚卸しする手順まで書き残します。
⬡ 開発ツール2026-09-07
.easignore を置くと .gitignore は読まれなくなります — EAS Build に上がるファイルを手元で数える
EAS Build がアップロードする範囲は .gitignore で決まり、.easignore を置いた時点で入れ替わります。同梱ファイルを送信前に数える手順と、親ディレクトリを除外すると感嘆符では戻せないという実測結果をまとめました。