インタラクティブ・カメラ Snappy

iPhone/iPad用の多機能カメラ・アプリSnappyをリリースしている。何が多機能なのかと言えば、シャッターを切る撮影条件(トリガー)が尋常じゃなく多いからだ。現在のバージョン2.1.1での条件は8種類。複雑なようで実は単純。App Storeにも掲載しているデモとして、Vサインでシャッターを切る、猫が来たらシャッターを切る、雷が光ればシャッターを切る、の3種類を紹介するビデオをご覧あれ。

もちろん、当然、是が非でも、このアプリは自転車でも大活躍する。例えば、撮影条件をシェイクにする。これはiPhoneにかかる力であり、加速度センサーで検出する。そこでiPhoneを自転車に取り付けて走ってみる。道路の凸凹が大きく、揺れが強いとシャッターが切られる。その判断の基準となる閾値はスライダーのノブで決める。シェイクは最大12Gなので、今回は6Gに設定した。

スクリーン録画は、地方の駅前通りの歩道を自転車で走っている。常に段差や凹凸で揺れが生じ、何度もシャッターが切られている。一方、後半は同じ道を引き返し、今度は車道を走っている。多少荒れた箇所があるものの、シャッターが切られることはない。そう、自転車で走るには本来の車道が良く、歩道は何かと問題が多い。これは多くの人が感じていることだろう。

それでは、本来そうであるように車道を走れば良いかと言えば、それはそれで辛い。物理的に分離された広い自転車レーンなど(ほぼ)どこにもないからだ。一方、クルマが自転車を追い越す時は十分な間隔を空けるか、十分に速度を落とさなければならない(改正道路交通法第18条第3項)。この遵法を確かめるために、撮影条件を距離にして1m以下で撮影とした。iPhoneのLiDARなら5mまで測定できる。

走行したのは片道1車線の国道2号線。日曜日の午後でトラックなど業務車両は少なく、渋滞もなかった。映像で分かるように、距離が1mに近づくことはあっても、1mを切ることは少ない。右寄りになって自転車との距離を空けるクルマが多し、速度も落としている。ただ、それでも、クルマが接近すると恐怖を覚える。どこまで近づくのか分からないし、安全の保証がないからだ。

最後は趣向を変えて、自転車の写真収集をしよう。撮影条件を物体にして、検出する物体として自転車を選ぶ。スライダーのノブは真ん中あたりで良いだろう。これで自転車が画角に入れば写真が撮影される。数年前ならコンピュータで時間をかけて行っていたことが、今やスマートフォンでリアルタイムだ。標準のVisionフレームワークを使い、現時点で77種類の物体検出に対応している。

撮影場所は公園のBMXコース前。iPhoneを取り付けた三脚をベンチに置いておく。少し離れているので、BMXコースを走る自転車は認識されない。映像でも小さく映っているだけだ。距離にして10mほど先の側道や、より手前の舗装道路ならきちんと検知され、シャッターが切られる。自転車を押し歩きしていても構わないし、二人乗りの自転車も認識されている。もちろん歩いているだけの人は認識されない。

ところで、初代iPhone(2007年)に使われたカメラのCMOSセンサーは読み出しが遅いので、ローリング・シャッター現象が起こりがちだった。これを意図的に引き起こすために、加速度センサーによって撮影する専用のアプリを作った。それが初代Snappyだ。iPhoneを手に持って振ったり、空中に放り投げたりすると、空間や物体が奇妙に曲がりくねった写真が得られた。

その後、iPhoneのカメラは高性能化し、ローリング・シャッター現象が起こらなくなる。となるとSnappyの存在意義がない。成すすべなく長らく放置していたところ、昨今の生成AIのおかげで十数年前のアプリを蘇らせることが簡単になった。そこで、多様なトリガーによって撮影する新生Snappyを作った次第。まだまた絶賛進化中なので、ぜひ意見を聞かせて欲しい。

Snappy 2.1.1での撮影条件

実際の開発としては、ほぼスクラッチから行った。筆者が企画を作成し、Claude Codeでエージェント・チームを組んで仕様を策定し、コーディングとデバッグを繰り返した。最近のClaudeは自律性が高いので、自動的に作業が進むのは良いものの、延々と失敗することも多かった。何やら初歩的なことで躓くこともあった。とんでもなく優秀で仕事も超高速だけど、どこか間が抜けている。

これはこのアプリがカメラやセンサーを通して現実世界と繋がっているからだ。数値や文字だけの閉じた理想郷なら、凄まじい能力を発揮しても、我々の世界の有様は何も知らない。それ故に最近はワールド・モデルやフィジカルAIが切望されている。これはそのまま自転車にも当てはまる。近い将来、AIは自転車に乗り、風になるだろう。その大きな課題の何歩か(何百歩か)手前に、このアプリが位置している。

Leave a Reply

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です