Swiftでカメラと写真ライブラリを使う方法!UIImagePickerController入門
生徒
「先生、iPhoneアプリでカメラを使ったり、アルバムから写真を選んだりする機能を作れますか?」
先生
「はい、SwiftではUIImagePickerControllerという仕組みを使えば簡単に実装できます。これはカメラや写真ライブラリを扱うための便利なクラスです。」
生徒
「難しい設定とかが必要なんですか?」
先生
「基本的な使い方を覚えれば大丈夫です。順番に解説していきましょう!」
1. UIImagePickerControllerとは?
UIImagePickerControllerは、iOSに標準で用意されている写真や動画を扱うための仕組みです。これを使うと、アプリの中でカメラを起動したり、ユーザーの写真ライブラリから画像を選んでもらうことができます。
例えば、プロフィール画像を登録するアプリや、写真編集アプリ、日記アプリなど、さまざまな場面で利用されています。
2. カメラと写真ライブラリの違い
カメラと写真ライブラリは役割が違います。カメラは「今から撮影する」ために使う機能で、写真ライブラリは「すでに保存されている写真や動画」を取り出すために使います。
- カメラ:ユーザーがその場で写真や動画を撮影してアプリに取り込む。
- 写真ライブラリ:iPhoneに保存されている既存の写真や動画を選ぶ。
この二つを選択肢として出せるので、アプリの用途に合わせて柔軟に使い分けられます。
3. 基本的なコード例
ここでは、ボタンを押したときに写真ライブラリを開いて、選んだ写真を表示する簡単な例を見てみましょう。
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imageView: UIImageView!
// 写真ライブラリを開く処理
@IBAction func selectPhoto(_ sender: Any) {
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .photoLibrary
present(picker, animated: true, completion: nil)
}
// 写真を選んだときの処理
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[.originalImage] as? UIImage {
imageView.image = image
}
dismiss(animated: true, completion: nil)
}
}
このコードを使うと、ボタンを押すと写真ライブラリが開き、選んだ写真がUIImageViewに表示されます。
4. カメラを使う場合のコード
写真ライブラリではなくカメラを使うときは、sourceTypeを.cameraに変更します。ただし、シミュレーター(Mac上で動かすテスト環境)ではカメラは使えないので、実機(iPhoneやiPad)で試してください。
@IBAction func takePhoto(_ sender: Any) {
if UIImagePickerController.isSourceTypeAvailable(.camera) {
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .camera
present(picker, animated: true, completion: nil)
}
}
このコードで、ボタンを押すとカメラが起動し、その場で撮った写真をアプリに取り込めます。
5. 権限設定が必要
カメラや写真ライブラリを使うには、ユーザーからの権限(パーミッション)が必要です。権限とは「このアプリがカメラを使っていいですか?」と確認することです。これをしないとアプリはクラッシュしてしまいます。
権限を設定するには、XcodeのInfo.plistに以下を追加します。
<key>NSCameraUsageDescription</key>
<string>カメラを使います</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>写真ライブラリにアクセスします</string>
この設定をしておくと、アプリを起動したときに「このアプリがカメラを使おうとしています」といった確認ダイアログが表示されます。
6. 写真編集や動画の扱い
UIImagePickerControllerは写真だけでなく動画の撮影や選択にも対応しています。また、編集を有効にすると写真を切り抜いたりトリミングしたりすることも可能です。
- 動画の撮影:
mediaTypesにkUTTypeMovieを指定。 - 編集機能:
allowsEditing = trueを設定。
これにより、アプリの目的に合わせて柔軟に機能を追加できます。
7. UIImagePickerControllerの使いどころ
この仕組みはさまざまなアプリで利用されています。例えば:
- プロフィール画像を登録するSNSアプリ。
- 日常を記録する日記アプリ。
- 撮影した写真を加工するカメラアプリ。
初心者の方でも基本を押さえれば、自分のアプリに「写真を扱う機能」を簡単に追加できるようになります。