headerAd

2014年1月9日木曜日

何をどのように作っていくのか

今現在、私が作成しているアプリは最も基本的且つありふれたアプリともいえるiPhone内蔵のカメラを用いるアプリである。
アプリのシーンを大きく分けると以下のようになる。
・通常のカメラ及びビデオカメラ
・各種設定と状態表示・拡大鏡(ルーペ)

カメラ機能に対してフィルタはリアルタイムに適用され、撮影結果及び録画結果はフィルタ適用済みとなる。
フィルタにはOpenGLをベースとしたGPGPUライブラリGPUImageを用い、高速なリアルタイム処理が可能である。
本アプリにおける売りの機能としては
・リアルタイム動的色域
 カメラ・ビデオともに適用される明度調整
・ビデオにもリアルタイムでフィルタが適用される
・静穏シャッター
 バイブレーションを動作させているが審査ではねられる可能性あり
・フレーム/秒の制限を設けることによる省電力機能
 ルーペの使用可能時間が延長される
・ルーペにおけるフォーカスロック
 ロック前に使いやすいところでフォーカスを合わせることにより本物のルーペのように扱える
また、一つのアプリにまとめて使えると便利かもしれない機能としては
・電灯(iOS6以降で4段階程度の照度の変更ができる)
・CPUおよびメモリの消費状態の表示
上記の中でも特にリアルタイム動的色域とは機能の一つとしてナイトビュー(風味)の機能を持ち、夜間でも星明りによりある程度の撮影が可能となる。しかし、明度は自動制御されるものの白飛びする可能性があるためスライドバーによる限界値調節が可能なかたちとした。また、この処理を応用することにより露出の違う画像を仮想的に作り出し、それらを合成することによりHDR(風味)の画像を作り出すことができる。これはカメラだけではなくビデオに対してもリアルタイムに適用させることが可能である。

しかしながら、旧機種(iPhone4s以前および、それの性能に相当するもの)ではメモリの不足およびGPU性能の不足から
・撮影時の解像度を抑える
・オプション画面の透過処理を止める
・明度を抑える(撮影セッションをPhotoではなくVideoの設定にする)
など、一部の機能をオミットする必要がある。

手元にはiPhone5s及びiPad Airしかないため、iPhone5以前の実機におけるテストは行えないが、可能な限り使用メモリを削減する作業を行っている。