スマホカメラへの不満
カメラが趣味で、ミラーレスも何台か持っている。Sony NEX-6やα7。撮るのは好きだが、持ち歩くのが億劫で持ち歩かない日が増えて来た、スマホでも撮る。撮れる。撮れるんだけど、撮影しても楽しくないと感じてしまう。何故だろう。
何が違うのかを考えた。最初は画質じゃないかと思ったが、違う。最近のスマホは十分きれいに撮れる。足りないのは操作感だと思った。
ミラーレスはグリップを握って、ファインダーを覗いて、半押しでフォーカスを合わせて、そのまま押し込んで撮る。全部が片手の中で連続している。 スマホは画面をタッチして、別のところをタッチして、ぐらぐらする本体を支えながらもう一回タッチする。体の動線が切れている。
「半押し」がないという問題
市販のスマホ用グリップも買って試したがBluetooth接続のものがほとんどで、やれることはシャッターを切るだけ。AFロックに対応しているものがない。
「半押し」は小さな機能に見えるかもしれないが、カメラ操作の核心にある気がしている、フォーカスを合わせてからフレーミングを微調整して切る、というリズムは半押しがないと成立しない。 タッチAFでフォーカスポイントを指定してからシャッターを押す、というスマホの操作モデルとは根本的に違う。
色々探した。iPhone用のものは見つけたが、Android用で半押し対応のカメラグリップは見つけられなかった。では自分で作るか、と言った感じで構想を考え始めた。
内部のマイコンや基盤の実装
マイコンはRP2040 Zeroを選んだ。小さくて驚くほど安い。CircuitPythonでUSB HIDが簡単に書ける。Bluetoothを使わなかったのは遅延の問題と実装が複雑になるしバッテリー問題もあるので有線接続にした。
半押しでAFを制御するのに数十msの遅延が入るとフィーリングがかなり変わると思う。 USB-C有線接続ならHIDキーボードとして即認識されるしレスポンスもいい、ドライバや設定も不要。
何気に一番苦労したのは半押し対応のスイッチを探すところだった、ほとんど市販されておらず、マルツでようやく見つけた。
グリップを3Dプリントする
筐体は3Dプリンターで作ることにした。 最初のプロトタイプは普段使っているNothing Phone 3専用で作った。 自分が使えればいいのでケース込みの寸法でぴったり合わせたものを作った。 文章で書くと簡単だが、ぴったりのものを作るまでに10個は試作した、CADはまだAIにやってもらうわけには行かないので苦労した。
他にも悩んだのが固定方法。スマホグリップの固定は大きく分けてクランプ式(バネで挟む)とMagSafeでの固定がある。 クランプ式は汎用性が高いが嵩張る。MagSafe型はスマートだが固定強度やIphoneしか使えないという問題がある。
結局、スマホの下部3分の1を差し込むだけの構造にした。最初は内側にTPUのライナーを入れる構造を考えていたが、ピッタリ作ればそう言った工夫無く固定出来た、一旦自分で使うだけなのでプロトタイプはこれで良しとした。
アプリ作成
アプリ側はKotlin + Jetpack Compose。カメラAPIはCamera2を使った。CameraXの方が簡単だが、半押しAFロックのような細かい制御には不安が残るらしい、ここはほとんどAIに言われるままの構成だ、アプリ系はまだまだ勉強が必要だ。
アプリ側の実装はほとんどAIがやってくれたが、一番厄介だったのはデバッグだ、アプリの状態、どうなっているかをAIに言葉で伝えるのが大変だった。エラーメッセージが出ればそれを伝えればいいが、動作するが少しおかしいとか、UIの崩れなどはどう伝えればいいか苦労した。
XMBを撮影UIに持ち込んだ理由
もう一つ、苦労したのが、撮影画面のUIをどうするかで結構考えた。 既存のカメラアプリは大体2パターン。パラメータを変更するときにメニューやダイアログを開くか、画面下部にスライダーが出るか。どちらもライブビューが邪魔になるか、一度に1つのパラメータしか見えないかのどちらか。 グリップにロータリーエンコーダを付けている以上、回転操作で値を変えられるUIが必要。かつ全パラメータが一覧できて、ライブビューの邪魔にならない。
ここでPS3のXMB(クロスメディアバー)を思い出した。横軸で値選択、縦軸でカテゴリ切り替え。これをL字型に画面の端に寄せれば、ライブビューを矩形のまま大きく確保できる。
実装してみると、このUIの面白い性質に気づいた。「対象を切り替える」と「値を変更する」が直交する1次元の軸になっている。ロータリーエンコーダ(1次元)でもスティック(2次元)でもタッチスワイプ(2次元)でも、同じ操作モデルで動く。入力デバイスを選ばない。
やりたいことは「ミラーレスの再現」ではない
作りながら方針が固まったことがある。このプロジェクトは「スマホでミラーレスを再現する」のではなく「スマホカメラの操作を作り直す」プロジェクトだということ。
たとえば、P/A/S/Mモードは入れていない。スマホは物理絞りが固定のものが多く、これらのモードは形だけになる。代わりに計算写真の強度(HDR、夜景モード的なもの)やレンズ切り替えを撮影パラメータとして第一級に扱う。これはミラーレスにはない操作軸だとおもう。 モード概念もアプリ側には持たせていない。グリップ側で物理的にモードを切り替えたければ、モードごとに別のキーコードを送ればいい。アプリは来たキーコードに対してマッピングされたアクションを実行するだけ。
こうしておけば、市販のゲームパッドでもそこそこ使えるし、自作グリップのボタン構成が変わってもアプリ側は改修不要。
次にやること
今はNothing Phone 3専用のグリップで自分だけが使っている。次はCADデータを公開できる形で整理して公開したい。 さらに、別の機種にも対応できるようにクランプがたの固定でのモデルも作り始めている。
アプリはStep 3(RAW・手動露出)まで完了。残りはキーマッピングプロファイルの保存と、HDR・フォーカスピーキングの表示あたりをやりたい。 ただアプリ側はデバイス差異でのエラーや設定できない項目などがいろいろあると思うのでそのあたりの対応も考えていかないと汎用的に使えるアプリにはならないと考えている。