Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日:

Swiftプログラミング講座 カメラアプリを作る③(写真撮影機能を付ける)

著者: 沼田哲史

Swiftプログラミング講座 カメラアプリを作る③(写真撮影機能を付ける)

写真を撮影して保存できる

「カメラアプリを作ってみよう」というテーマでここまで第1回、第2回と進めてきました。最終回となる今回は、これまで作ってきたアプリに、さらに10行ほどのコードを追加することで、写真を撮影してその画像を保存できるように改良してみましょう。

今回のカメラアプリの基本となるのは、「AVCaptureSession」というクラスで表される「セッション」と呼ばれる機構です。入力元としてカメラを接続することでカメラからのデータがセッションに流れるようになり、出力先としてQRコードの認識システムを接続して、QRコードが読み取れるようになります。

今回は出力先として写真撮影のシステムを接続することで、カメラから流れてきた画像データを写真として保存できるようにします。そして、撮影した写真は、標準のカメラアプリと同じように写真アプリ内に保存されるのです。これは画像データが用意できた時点で専用の関数を1つ呼び出すだけで実現できます。それでは実装してみましょう!

【STEP 1】セッション設定のコードを追加

前回作ったプロジェクトを開いて、ViewController.swiftを編集します。

13行目のQRコード認識のためのデリゲート宣言を写真撮影用のものに変更します。またセッション変数の下に写真出力の変数を追加しましょう。ここに写真撮影用のデータを流し込みます。

QRコード認識用のAVCaptureMetadataOutputクラスを出力として設定していたコードを、写真撮影用のAVCapturePhotoOutputクラスを使用するように変更します。これでセッションの設定は完了です。

【STEP 2】プロジェクトの設定

iPhoneの写真ライブラリにアクセスするためには、ユーザに許可してもらわなければいけません。[Info.plist]を選択して、[Privacy – Photo Library Usage Description]という設定を追加し、許可してもらうための文字列を図のように設定します。

こうして設定した文字列は、最初の写真を撮影しようとしたときに、ユーザへのメッセージとして表示されます。

【STEP 3】 実装コードを書く

QRコードの認識に使用したAVCaptureMetadataOutputの代わりに、今回のアプリはAVCapturePhotoOutputをAVCaptureSessionに接続して、写真撮影の機能を実装しています。

画面がタッチされると呼ばれるtouchesBegan()メソッドを図のようにViewController.swiftの一番下に追加して、このタイミングで写真を撮影するメソッドを呼び出します。

ViewController.swiftの一番下に、さらにcapture()メソッドを追加します。このメソッドは写真撮影用のカメラのデータが用意できると呼び出されるので、それを画像データに変換して、それを引数に写真ライブラリに保存するための関数を呼び出します。以上で実装は完了です。

アプリを実行して、画面をタッチして写真を撮ってみましょう。カメラで撮った写真データが、セッションを経由して写真ライブラリに追加される流れを思い描きながら撮影すると、自分で写真撮影機能が実装できた喜びを実感できると思います。

【まとめ】

この連載では、スウィフトを使うと短い行数でバラエティに富んだアプリが作れることを紹介してきました。これからもぜひ皆さんのアイデアをスウィフトで実現していってください!

 

最終回

今までありがとうございました!

※今回のソースコードはMac Fan WEB上の本連載記事内に記載されたURLよりダウンロードできます。こちらを参照して、ぜひXcodeにチャレンジしてみましょう。

【冒険記】

スウィフト冒険記も今回で最終回となりました。これまでスウィフトを使ったいろんな種類のアプリケーションの作り方を紹介してきましたが、お楽しみいただけましたでしょうか。スウィフトを使うことでiPhoneの機能をフルに活用して、自分のアイデアを形にすることができます。

【冒険記】

スウィフトは登場してたった3年で急激な進化を遂げてきました。年末には新しいバージョン4が登場する予定です。これからもユーザの声を取り入れて、より使いやすい言語になっていくことでしょう。スウィフトを使いながら、これからの成長を楽しみに見守っていきましょう!

Dr.さざめき(aka.沼田哲史)

1978年1月生まれ。某大学でプログラミングを教えつつ、ふらっとヨーロッパ旅行に出かけて美味しいものを食べ歩いたり、時折、iOSプログラミングの本を出したり。Mac歴16年。いつかアメリカ西海岸でお昼から美味しいIPAビールを飲みながらプログラミングするのが夢です。Twitter @sazameki