カメラ機能の基礎を学ぼう
今回からは、iPhoneのカメラを使うアプリを作ってみましょう。iPhoneのカメラ機能はとても強力で、カメラで撮影した映像を画面に表示するだけではなく、映っている内容をリアルタイムで解析したり、動画ファイルとして保存したりと、さまざまな機能が簡単なコードを書くだけで実現できます。
iPhoneアプリにはカメラ機能を応用したものがたくさんあります。iPhoneをドライブレコーダとして利用するアプリや、人の顔を認識して眼鏡やイヤリングなどの絵を重ねた写真を作るアプリ、自宅の写真を撮った上に家具の画像を重ねてリフォームプランを考えたりできるアプリもあります。カメラ機能は、アイデア次第でいろんな応用が考えられる面白い機能なのです。
今回は、撮影した映像をiPhoneの画面上に表示するだけの、とても簡単なアプリを作成します。これだけの機能であれば、なんと10行足らずで実装できてしまいます。これからの連載では、その上に機能を追加して、いろんなアプリを作っていきたいと思います。
【STEP 1】プロジェクトを作ろう
まずはXcodeのメニューから[File]→[New]→[Project]を選んで、新しいプロジェクトを作成します。プロジェクトの種類には[Single View Application]を選択して、右下の[Next]ボタンを押しましょう。
[Product Name]には[CameraApp]と入力して、[Organization Identifier]には[mytest]と入力し、[Language]には[Swift]を、[Devices]には[iPhone]を選択し、下の3つのチェックボックスはチェックを外した状態にして、右下の[Next]ボタンを押してください。最後に保存場所を選んでプロジェクトの作成を完了させます。
【STEP 2】実装の準備
(1)ウインドウ左側のプロジェクト名の部分を選択して、プロジェクトの設定画面を表示させましょう。
(2) [Info]タブを選択して、[Custom iOS Target Properties]の最後に[Privacy – Camera Usage Description]という設定項目を追加し、「このアプリはカメラを使用します。」という文字列を入力しておきます。
(3)画面左側のファイル一覧から[View Controller.swift]を選択します。図のように、カメラを扱うためのAVFoundationフレームワークのimport文を追加します。
【STEP 3】実装コードを書く
(1)ViewControllerのクラス宣言のすぐ下に、図のように「セッション」という名前の変数を追加します。セッションというのは、iPhoneのカメラからアプリに映像データを入力したり、入力されたデータを処理したりといった、映像処理の基本機能を提供するオブジェクトです。
(2)viewDidLoad()関数に、図のようなコードを書きます。最初に「AVCaptureSession」というクラスで表されるセッションを作成して、最後にセッションの実行を開始するstartRunning()メソッドを呼び出しています。その間に、セッションにカメラを追加するコードと、カメラからセッションに入力された画像を確認するためのプレビュー画面を追加するコードが書かれています。この10行足らずのコードだけで、カメラの画像を入力して画面上に表示する基本的なカメラ機能が利用できるようになります。
(3)このアプリを実機上にインストールして実行すると、初回起動時に、アプリからカメラにアクセスして良いかを問い合わせる画面が表示されます。STEP2で設定した文字列がここで表示されますので、[OK]ボタンを押してカメラ利用を許可します。
(4)カメラで撮影した映像が、iPhoneの画面上に表示されるようになりました!
【まとめ】
今回はiPhoneのカメラを利用するための基本的なプログラムを作成しました。これから数回に渡って、このプログラムを改良しながら、いろんな機能を追加して遊んでみたいと思います。
次回のテーマ
カメラアプリを作ってみよう②(QRコードの読み取り)
※今回のソースコードはMac Fan WEB上の本連載記事内に記載されたURLよりダウンロードできます。こちらを参照して、ぜひXcodeにチャレンジしてみましょう。
【冒険記】
最近、自宅をリフォームして、プログラミングするためのPCデスクを新調したのですが、そこで悩んだのが天板の高さです。高すぎると肘の位置が上がって肩が凝りますし、低すぎると足がぶつかって窮屈です。
【冒険記】
オーダーメイドの家具などをいろいろ探しながら、悩んでいる時にイケアで見つけたのが、電動昇降式のデスクでした。これなら細かく調整して最適な高さに設定できます。皆さんはどんなPCデスクを使っていますか?
Dr.さざめき(aka.沼田哲史)
1978年1月生まれ。某大学でプログラミングを教えつつ、ふらっとヨーロッパ旅行に出かけて美味しいものを食べ歩いたり、時折、iOSプログラミングの本を出したり。Mac歴16年。いつかアメリカ西海岸でお昼から美味しいIPAビールを飲みながらプログラミングするのが夢です。Twitter @sazameki