このページの本文へ

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の標準機能としての写真撮影が可能になります。

イメージピッカー(UIImagePickerController)を利用して、考えられる限り最小限のプログラムでSwift Playgrounds 1.6から利用可能になったカメラによって写真を撮影する機能を実現しました。ただし、写真は撮りっぱなしで、結果を見ることさえできません

 これが、おそらくiOS上でカメラを使う世界最小のプログラムでしょう。変数名を短縮すれば、あと数バイトは短くできますが、せいぜいそんなところです。このプログラムを起動すると、プログラムが「カメラへのアクセスを求めています」というアラートが表示されるので、「OK」ボタンをタップして許可します。

プログラムから内蔵カメラにアクセスしようとすると、アラートが表示されてユーザーに確認を求めます。これが今まで同様のアプリレベルからだけでなく、Swift Playgrounds上のプログラムからも可能になったのが今回のアップデートの大きな変更点の1つです

 これでプレイグラウンドの右側のライブビュー全体がカメラ画面になり、iOSのカメラアプリ同様に撮影できます。

いったんカメラが動き出せば、iOSの標準アプリと同様のインターフェースも表示され、簡単に写真撮影が可能となります。右下のボタンをタップすれば、フロントとリアのカメラを切り替えて「自撮り」もできます

 画面にタッチしてピントを合わせるポイントを指定したり、フロントとリアのカメラを切り替えることもできます。もちろんシャッターボタンをタップすれば写真撮影もできますが、このままではそれで終わりです。撮ったはずの写真を保存することはおろか、表示することさえできません。それではまったく役に立たないので、もう少しプログラムを書き足して、カメラアプリとして動作するようにしていきましょう。

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!