AsReader製品サイト

English Site

検索

製品情報

AsReaderブログ

Swiftでカメラアプリを作るときに最初にハマるポイント

カテゴリー:
最終更新日:2026年03月23日
Swiftでカメラアプリを作るときに最初にハマるポイント

こんにちは。
株式会社アスタリスク IT事業部の松井です。

IT事業部では、スマートフォンアプリや業務システムの開発を行っています。
今回は、iOSアプリ開発の中でもよくある 「カメラ機能の実装」 について、最初にハマりやすいポイントを紹介します。

最近は、業務アプリでも
• バーコード読み取り
• 書類撮影
• 商品撮影
• AI解析用の画像取得

など、カメラを使う機能が増えています。

iOSではカメラ機能を実装する際、主に AVFoundation を使用しますが、最初に実装するときに多くの人がつまずくポイントがあります。

① カメラ権限を設定していない

iOSアプリでカメラを使用する場合、Info.plist に権限説明を追加する必要があります。

これを忘れると、アプリがクラッシュします。

追加する項目はこちらです。
///
Privacy - Camera Usage Description
///

例:
///
カメラを使用してバーコードを読み取るために使用します
///
この設定がないと、カメラを起動した瞬間にアプリが終了してしまいます。

② セッション設定を忘れる

カメラは AVCaptureSession を中心に構成されます。

基本的な流れは次のようになります。
///
swift

let session = AVCaptureSession()
session.sessionPreset = .photo
///

その後、カメラデバイスを取得します。
///
swift

guard let device = AVCaptureDevice.default(for: .video) else { return }

let input = try AVCaptureDeviceInput(device: device)
session.addInput(input)
///

ここまででカメラ入力が設定されます。

③ プレビューが表示されない

「カメラが動いているのに画面に何も表示されない」

これは AVCaptureVideoPreviewLayer を追加していないことが原因である場合が多いです。
///
swift

let previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer.frame = view.bounds
previewLayer.videoGravity = .resizeAspectFill

view.layer.addSublayer(previewLayer)
///

このレイヤーを追加しないと、カメラの映像は画面に表示されません。

④ セッションを開始していない

これも意外と忘れがちなポイントです。
///
swift

session.startRunning()
///

この処理を実行して初めてカメラが動きます。

まとめ

Swiftでカメラ機能を実装する際は、次の4つを確認するとスムーズに開発できます。
• カメラ権限(Info.plist)
• AVCaptureSessionの設定
• PreviewLayerの追加
• startRunning()の実行

カメラ機能は一度仕組みを理解してしまえば、バーコード読み取りや画像解析など、さまざまな機能に応用できます。

今後もIT事業部では、開発の中で得られた知見や技術情報をブログで発信していきたいと思います。

最後まで読んでいただきありがとうございました。

● Apple、Apple のロゴ、iPhone、iPod touchは、米国および他の国々で登録されたApple Inc.の商標です。
※iPhoneの商標は、アイホン株式会社のライセンスにもとづき使用されています。
※iOS商標は、米国Ciscoのライセンスに基づき使用されています。
● Androidは、Google LLCの商標です。 ● Windowsは米国 Microsoft Corporationの米国およびその他の国における登録商標です。
● QRコードはデンソーウェーブの登録商標です。
●その他、各社の会社名、システム名、製品名などは、一般に各社の登録商標または商標です。 
当社サイト内に記載されている社名、製品名、サービス名及びサイト名には、必ずしも商標表示「®」「(TM)」を付記していません。
※iOSデバイスと接続して使用する当社製品は、MFi認証を取得しています。 ※ 形状・色など予告なく変更する場合があります。

PAGE TOP