Swift Playgroundsで学ぶiOSプログラミング 第59回
Swift Playgrounds 1.6で利用可能に
内蔵カメラを使ったカメラアプリを作る
2017年11月06日 17時00分更新
前回にも触れましたが、iPad版Swift Playgroundsは、iOS 11と同時にバージョン1.6がリリースされました。このバージョンの基本的な特徴は、プログラミング言語としてはSwift 4.0に、フレームワークとしてはiOS 11に対応したことです。もともとSwift Playgroundsは、iOSのすべてのフレームワークに対応しているわけではありませんが、今回の1.6は、iOS 11のウリの1つであるフレームワーク、ARKitも利用可能になったことが、新たな特徴として挙げられています。
私自身も、まだSwift PlaygroundsのARKitは試していません。そのため、それがどの程度使えるのか、言い換えればプレイグラウンド内に書くプログラムとして、現実的にiPadでどの程度の効果が実現できるのかは把握できていません。これについては、十分に調査してから、状況に応じておいおい取り上げたいと思います。
もう1つ大きな特徴として挙げられているのは、iPadの内蔵カメラが使えるようになったことです。これは考えてみればARの実現には不可欠なので、これまで漏れも少なくなかったiPadハードウェアのサポートの中で優先的に実現されたものと考えられます。その結果、ARKit以外からもカメラが使えるようになったのは、うれしい副産物です。そこで今回は、とりあえずこのカメラを使えるようにするプログラムに取り組むことにします。
iPadのカメラを利用するための最も簡単な方法
通常のネイティブなiOSアプリでも、iPadのカメラを使う方法はいろいろと考えられます。原始的なほうから考えると、すぐに思いつくものとしては、前々回まで取り組んでいたAVFoundationを使う方法です。これは、おおざっぱに言って、映像や画像を取り込む機能だけを提供しているので、オーディオプレーヤーがそうであったように、UIは全部自分で用意しなければなりません。
もう1つ、その対極にあるのはイメージピッカー(UIImagePickerController)を使う方法です。これは本来「画像を選択する」機能を提供するものなので、そこからカメラが使えるというのは意外に思われるかもしれません。しかし、その画像選択のソースの1つとして、あらかじめ撮影されたり、ほかから読み込んだ写真のライブラリ以外に、その場で画像を撮影できるカメラも含まれるのです。そう考えると、カメラを使うのも自然な機能であることがわかるでしょう。今回は、このイメージピッカーを使って、とりあえず写真を撮影する機能までを実現します。
そのための第1歩は、イメージピッカー(UIImagePickerController)をセットアップして、そのソースタイプをカメラに設定することです。そのコントローラーをプレイグラウンドのライブビューに設定するだけで、iOSの標準機能としての写真撮影が可能になります。
これが、おそらくiOS上でカメラを使う世界最小のプログラムでしょう。変数名を短縮すれば、あと数バイトは短くできますが、せいぜいそんなところです。このプログラムを起動すると、プログラムが「カメラへのアクセスを求めています」というアラートが表示されるので、「OK」ボタンをタップして許可します。
これでプレイグラウンドの右側のライブビュー全体がカメラ画面になり、iOSのカメラアプリ同様に撮影できます。
画面にタッチしてピントを合わせるポイントを指定したり、フロントとリアのカメラを切り替えることもできます。もちろんシャッターボタンをタップすれば写真撮影もできますが、このままではそれで終わりです。撮ったはずの写真を保存することはおろか、表示することさえできません。それではまったく役に立たないので、もう少しプログラムを書き足して、カメラアプリとして動作するようにしていきましょう。
この連載の記事
- 第100回 SceneKitの物理現象シミュレーションとアニメーションをARKitに持ち込む
- 第99回 「物理学体」と「物理学場」を設定して物理現象をシミュレーション
- 第98回 SceneKitのノードに動きを加えるプログラム
- 第97回 いろいろな形のノードをシーンの中に配置する
- 第96回 SceneKitの基礎シーンビュー、シーン、ノードを理解する
- 第95回 現実世界の床にボールや自動車のモデルを配置する
- 第94回 ARKitを使って非現実世界との融合に備える
- 第93回 ARKitが使えるiPadを識別するプログラム
- 第92回 Swift Playgrounds 2.1での問題点をまとめて解消する
- 第91回 iPadの内蔵カメラで撮影した写真を認識するプログラム
- この連載の一覧へ