カテゴリ: Flutterの機能拡張 更新日: 2026/05/03

Flutterでカメラ機能を使う!写真撮影・動画撮影の基本を初心者向けに解説

280
Flutterでカメラ機能を使う!写真撮影・動画撮影の基本

先生と生徒の会話形式で理解しよう

生徒

「Flutterでカメラを使って写真を撮ったり、動画を撮ったりすることってできますか?」

先生

「はい、Flutterにはcameraパッケージがあって、写真撮影も動画撮影も対応していますよ。ネイティブのカメラ機能をFlutterで簡単に使えるようになっています。」

生徒

「どんな手順でカメラを使うんですか?初心者でもできるように順番に教えてもらえますか?」

先生

「もちろんです。カメラの初期化から写真・動画の撮影、保存の基本までを順に説明しますね。」

1. Flutterでカメラ機能を使うには?

1. Flutterでカメラ機能を使うには?
1. Flutterでカメラ機能を使うには?

Flutterでカメラを使うには、公式のcameraパッケージを利用します。写真撮影や動画録画、プレビュー表示、フラッシュ制御などが可能です。Flutterアプリでスマホのネイティブカメラ機能を活用したいときには必須のパッケージです。

セットアップ手順としては、以下の流れになります:

  • cameraパッケージの導入
  • カメラの初期化処理
  • プレビューの表示
  • 写真や動画の撮影
  • ストレージ保存とパス管理

2. cameraパッケージの導入と設定

2. cameraパッケージの導入と設定
2. cameraパッケージの導入と設定

まずpubspec.yamlcamerapath_providerパッケージを追加します。後者はファイル保存時に使います。


dependencies:
  camera: ^0.10.5+5
  path_provider: ^2.1.2

Android側ではAndroidManifest.xmlに以下のパーミッションを追加します。


<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>

iOSではInfo.plistに以下のキーを追加します。


<key>NSCameraUsageDescription</key>
<string>カメラを使用します</string>
<key>NSMicrophoneUsageDescription</key>
<string>音声を録音します</string>

3. カメラの初期化とプレビューの表示

3. カメラの初期化とプレビューの表示
3. カメラの初期化とプレビューの表示

カメラを使う前に、利用可能なカメラの一覧を取得して、コントローラーを作成する必要があります。初期化後、CameraPreviewでプレビューを画面に表示できます。


List<CameraDescription> cameras = await availableCameras();
CameraController controller = CameraController(
  cameras[0], 
  ResolutionPreset.high,
);
await controller.initialize();

初期化後にcontrollerを使ってプレビューウィジェットを表示できます。


CameraPreview(controller)

Flutterを「実務レベル」で使えるようになりたい人や、 iPhone / Android両対応アプリ開発の流れをまとめて学びたい人には、 定番の実践書がこちらです。

Flutter実践開発をAmazonで見る

※ Amazon広告リンク

4. 写真を撮影して保存する方法

4. 写真を撮影して保存する方法
4. 写真を撮影して保存する方法

写真を撮るにはtakePicture()メソッドを使います。保存先はpath_providerで取得したアプリのドキュメントディレクトリがおすすめです。


final directory = await getApplicationDocumentsDirectory();
final imagePath = '${directory.path}/photo.jpg';
await controller.takePicture(imagePath);

保存後、ギャラリーに表示したい場合は、別途パッケージ(例:gallery_saver)が必要です。

5. 動画を撮影して保存する方法

5. 動画を撮影して保存する方法
5. 動画を撮影して保存する方法

動画撮影はstartVideoRecording()stopVideoRecording()を使って開始・停止します。基本的な流れは写真撮影と似ています。


final videoPath = '${directory.path}/video.mp4';
await controller.startVideoRecording();
await Future.delayed(Duration(seconds: 5)); // 5秒間録画
final file = await controller.stopVideoRecording();
await file.saveTo(videoPath);

録画中は録画インジケーターを表示したり、UIで録画中状態をわかりやすくしておくのが一般的です。

6. カメラ機能でよくあるエラーと対処法

6. カメラ機能でよくあるエラーと対処法
6. カメラ機能でよくあるエラーと対処法

Flutterのカメラ機能を使う際、初心者がよくつまずくポイントも紹介しておきます。

  • カメラが真っ黒:初期化処理が完了していない場合、プレビューが表示されません。initialize()後にsetState()で更新しましょう。
  • パーミッションが足りない:AndroidやiOSの設定ファイルで適切な権限を設定していないと、カメラ起動時にクラッシュします。
  • 録画が保存されない:ファイルのパス指定ミスや保存先のアクセス権限不足が原因です。

このようなトラブルは、ログ出力で確認しながら一つ一つ解決していきましょう。

7. Flutterでカメラを使う応用テクニック

7. Flutterでカメラを使う応用テクニック
7. Flutterでカメラを使う応用テクニック

基本的なカメラ機能を習得したら、以下のような機能追加もおすすめです:

  • フロントカメラとバックカメラの切り替え
  • フラッシュのON/OFF切り替え
  • 録画時間の制限機能
  • 録画中にサムネイル画像をリアルタイムで表示

Flutterのカメラ機能は、UIの自由度が高いため、初心者でも実用的なアプリを作りやすいのが魅力です。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Flutterでカメラ機能を使って写真撮影や動画撮影を実装するには、どのようなパッケージが必要になりますか?初心者がまず導入すべき公式ツールを教えてください。

Flutterでカメラ機能を実装する際には、公式から提供されている「camera」パッケージを利用するのが最も一般的で確実な方法です。このパッケージを使用することで、スマートフォンのデバイスが持つネイティブのカメラ機能にアクセスし、写真撮影や動画録画、プレビュー表示、フラッシュ制御などの高度な操作をFlutterアプリ上で行うことが可能になります。また、撮影した写真や動画をファイルとして保存する場合には、保存先のパスを管理するために「path_provider」というパッケージも併せて導入することが推奨されています。これらを組み合わせることで、初心者の方でもスムーズに開発を進めることができます。
Flutterの機能拡張の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク