iPhoneで定期撮影できるカメラアプリは、どういう訳か無料ではなかなかいいものがない。あっても大抵はタイムラプス動画用で、それ以外はかなり古いものが多い。標準カメラアプリのタイムラプスなんて謎仕様もいいところで、定期撮影には全く使えない。
また、iOSにはAndroidのAutomagicのようなまともなオートメーションアプリがない。いくつかのオートメーションアプリを検討したが、今はないか今一つだった。
- Workflowは良さそうだったが、Appleに吸収されてiOS 13の「ショートカット」アプリ(以下、ショートカット: それにしても混乱させるひどい名前だ・・・: 英語版では"Shortcuts"(アプリ名)と"a shortcut"(ショートカット)と、どうにか区別できていたのだろう)になってしまったようだ。
- 有名なIFTTTは、僕が詳しくないせいか、作れる処理が余りにも単純で(条件 → 処理(1個)の実行だけ?? しかも、処理はネットサービスだけ??)、この作業には使えなさそうだった。
それで、iOS 13に更新してショートカットを使うことにした。が、ショートカットの出来のひどさ(今気付いたが、これは元のWorkflowに由来していそうだ。他に、iOSの不自由さにもよるのだろう)に苦労し、イライラした。
やりたいのは、以下の処理である。
- バックグラウンドで動き
- 一定時間(例: 30分)ごとに撮影し、
- 画像をPCに転送する。
ショートカットとそのオートメーションでは、上のどれも容易にはできなかった。
まず、ショートカットやオートメーションはバックグラウンドで動かない。詳しくは試していないが、それらの画面が表示されていないと実行が停まってしまうようだった。更に、画面をロックしたら、オートメーションが自動実行する時にコード入力画面になってしまう。
→ そのため、画面を自動ロックしないように設定し、ショートカットの画面を隠さないように注意して使うことにした。画面を自動ロックしないということは、アイドル状態でも画面が暗くならないから焼き付きが心配なので、画面の輝度を最低(0)にするようにした。まあ、こんなに使いにくいiPhoneなんて滅多に使わないから、焼き付いたっていいけど、気分が悪いので一応配慮する。
その後、画面は液晶なので、いくらバックライトを暗くしても焼き付くかどうかには関係ないと思われるので、画面の輝度を最低にするのは余り意味がなさそうなことが分かった。まあ、バックライトの寿命を伸ばすとか寝ている時の眩しさを減らす意味はありそうだ。 (7/25 4:38)
次に、一定時間ごとに処理を実行できない。あるのは、指定時刻に起動するトリガ(1個しか指定できない)だけで、しかも、それは自動的には実行できない(指定した時刻には、起動するための通知・確認が出る)という素晴らしさ。。。(→ 参照) 「オートメーション」の機能にも関わらず、自動で起動しないって「アホですか?」と言いたい(海外の掲示板でも嘆かれていた)。
→ そのため、スクリプティングの繰り返し機能を使って、撮影間隔の時間分(30分)待つようにした。なお、撮影・処理や転送に意外に時間が掛かるようで、毎回30分待つと撮影時刻が段々遅れるので、1回の処理時間(約25秒)分短く待つようにした。
本来は、処理開始時刻を保存し、処理が終わってから少し(例: 10秒)待ち、その時の時刻から経過時間を計算するのを繰り返して確実に30分待つべきで、そうしたかったが、ループから脱出する方法がないなど、余りにも使いくく・分かりにくくてくじけ、安直な方法にした。そのため、今度は早目に撮影されることも起こるようになった。。。
→ やっぱり、決め打ちの待ちをすることや撮影時刻がずれるのは気に入らないので、上記の処理をどうにか実装した(下のショートカット「1日分の撮影」中の[撮影間隔(30分)を空ける]の部分)。 (ループから脱出の代替手段の参考)
→ 更に調べた結果、今までは定数しか指定できないと思って居た待ち時間に、変数を指定する方法が分かり※、上記のループは不要になった。これができたおかげで撮影間隔の精度がかなり上がった。
※待ち時間の数値を長押しするとオプションが出る(繰り返しの回数も同様; 参照)。分かりにくいことこの上ない。数字すら直接入れられず、▲▼のボタンでしか値が変えられないフィールドに変数が指定できると思えたり、そこを長押しするとオプションが出るなんてことを思い付く人は、まさに超能力者だ。普通はオプションは「歯車」じゃないかなあ、あるいは、その部品の地の部分を長押しでもいいけど、フィールド長押しは掟破りだ・・・
また、制限は多いものの、確認なしでオートメーションを実行できる方法(裏ワザ?)を見付けた。それは、「おやすみモード」をトリガにするもので、一日1-2回なら、固定時刻に自動的に起動できる。例えば、トリガをおやすみモードがonになった時にすれば、毎日1回、おやすみモードの開始時刻に自動実行できる。
まあ、普通に使う方だと、昼夜関係ない時におやすみモードになるのは困るだろうから、余り汎用性はなさそうだ。
最初はそうしていた(1日分の撮影をおやすみモードで毎日開始するようにした)。が、良く考えると不便(一旦停めたら、起動時刻を調整しないと翌日まで開始しない)で馬鹿らしいので、1年分の撮影をするショートカット(1日分の撮影を約365回繰り返す)を作って、それを手で起動するようにした。スクリプティングでは無限に繰り返すことができないので、とりあえず1年にしたが、さすがに1年間も停めずに撮影することはないので、これで充分だ。
ショートカットやオートメーションがバックグラウンドで動かないのや、多くのオートメーションが自動で起動しないのも、Appleがセキュリティにうるさいからだと思う。元々Workflowは社外のアプリだったので できなかったのだろうし、Appleに吸収されてショートカットになっても、まだそういう改良はしていない(する予定もない??)のだろう。ガチガチで不便この上ない。
画像を(自分の)PCに転送するのは、いろいろ頑張ればできそうだが、ここまでで呆れ果てたので、安直にDropboxに送るようにした。その機能はあったので助かった。
最初は画像をメールで送ろうとしたのだが、なぜか、画像が添付されずに空のメールしか送れなかったので、Dropboxにした。結果的に、メールより手軽でいい。
他の問題は、カメラで撮影する時にシャッター音が出てうるさいことがある。
→ 撮影に無音カメラアプリを使えばいいのかも知れないが、できるか不明だったので※、とりあえずテープでスピーカーを塞いだ(イヤフォンジャックにプラグを挿しても効かないようだ)。ただ、まだ音は聞こえて、時々ちょっと驚いたり、盗撮されているような気分になるw
※別のカメラアプリは ショートカットからは起動しかできず、撮影できないので使えなかった。まったく不便だ・・・ あと、iPhoneのスピーカーは下と上(耳に当てる部分)にあるということを知って、愕然とした。美しさ()を自慢するiPhoneが そんなんでいいのかよぉ。そういう訳で、シャッター音を小さくするには両方を塞ぐ必要があるそうだ。 (7/25 12:43)
結局、以下のような処理(ショートカットのプログラム)を作った。
1日分の撮影
- [1日分の繰り返し] 以下を48回(24時間/30分= 48回)繰り返す。
- 現在の時刻を変数t0に格納する。
- 画面の輝度を最低(0)にする。: 手で明るくした場合に備えて。
- 背面カメラで撮影する。
- 撮影した画像のサイズを小さく(幅: 750画素)する。
- それを左に90°(-90°)回転させる。: iPhoneを横に倒しているため(回転方向は左か右かあやふや)。
- それをライブラリに保存する。
- 最新の画像をDropboxに送る。: 本来は上で保存した画像を指定すべきだが、この処理が外部のショートカットのため、方法が今一つ分からなかった。
- [撮影間隔(30分)を空ける]
- 現在の時刻を変数t1に格納する。
- t1とt0の差(秒)を求め、変数dtに格納する。
- (1800-dt)秒待つ。
1か月分の撮影: 余り意味はないが、処理単位を明確にするために作った。
- 以下を31回繰り返す。
- ショートカット「1日分の撮影」を実行する。
1年分の撮影: これをホーム画面に置き、手軽に定期撮影を開始できるようにする。
- 少し(例: 5秒)待つ。: 画面のタッチによる本体の揺れが収まるのを待つため。
- 以下を12回繰り返す。
- ショートカット「1か月分の撮影」を実行する。
- iPhoneでの臭いセンサの定期撮影風景
- 定期撮影で次の撮影時刻を待っている間の画面 (以前の版)
- 定期撮影した画像が並ぶDropboxの画面
この方式にはいい点が少しだけあって、撮影した画像をDropboxに送るようにしたので、PCを停めていても画像は転送し続けられ、それらはブラウザで見られ、PCがそれらの画像で溢れないことだ。もちろん全部、iOSでなくDropboxのおかげだwww
なお、画像サイズを小さくしているため(1枚100KBくらい)、Dropboxの無料アカウントでもほとんど無限に保存できそうだ。もし不足したら、PCに送って削除すればいい。
PS. 撮影には関係ないが、iPhone 6sは なぜかセルフパワーハブからは充電できず(Nexus 4や臭いはセンサはできる)、一晩動いた末に電池が空になり掛けた。仕方ないので、専用のACアダプタを追加した。全く面倒なことが多くて、本当に大っ嫌いだ。
(7/25 12:57までに さまざまな加筆・修正)