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までに さまざまな加筆・修正)
non: 2023-01-29 12:37
Piu Lento様
初めまして。コメントを失礼いたします。大学生の者です。
記事を読ませていただきました。大変勉強になる内容をありがとうございます。
現在、私は定期撮影の方法に行き詰っております。
何かお気づきの点がありましたら、以下の疑問についてご意見をいただけないでしょうか。
(やりたいこと)
・定期的な撮影時(10分とか、1時間おき)に1秒以下(数100 m秒程度)だけ光を照射して画像を取得する
・産業用カメラと光源を同期させて撮影できている(プログラムを用いて産業用カメラに撮影トリガーを送ると同時に光源を照射し撮影している)
・課題 :別の違うカメラ( iPhoneまたはwebカメラ)で、数100 m秒の光がついている間に、画像を撮影すること
(現状)
・iOSのアプリケーションを使った定期撮影では、一定時間ごとに1枚しか撮影できず、撮影に光がつくタイミングを合わせることができない
(疑問点)
・定期撮影時に複数枚の画像を取得する方法をご存知でしょうか?(1撮影は1時間間隔で、1回撮影ごとに連続10枚の画像を撮るようなことは可能でしょうか?)
・産業用カメラは電圧トリガーで撮影しています。同じトリガーを iPhone(またはwebカメラ)に入力して撮影できれば一番良いのではないかと考えております。ソフトウェア等を介して、 iPhoneでトリガー撮影をする方法について、何かご存知ないでしょうか?
初学者でさまざま分かっていない状況でご質問をしてしまい、申し訳ありません。
よろしくお願いいたします。
れんと: 2023-01-29 13:06
●はじめまして。お読み下さり ありがとうございます。
ご質問の内容は興味深いです。ただ、iPhoneやwebカメラには それほど詳しくないため、御質問については、すぐには「これ」という答えが思い付きません。
ちなみに、意図・目的としては、産業用カメラでは できているけど、同じようなことを もっと簡易・安価なiPhoneなどで実現したいということでしょうか。
想像ですが、連続10枚撮影は何かのアプリでできそうですが、トリガでの撮影はスマートフォンだと難しそうです。トリガの入力をどうするかが問題です(そういう機器は余りなさそうなので)。数百msは結構短いので、ソフトで同期させるのもシビアそうです。
思い付いたのは、(疑似の)USBキーボードやマウスのようなものを繋いで、それをトリガにすることです。あとは(100円ショップにも)良くあるBluetoothのセルフタイマーが使えるかもしれませんが、タイミングが心配です。
Webカメラの場合、どうにかしてPCにトリガを入力すれば良さそうですが、やはり、ソフトで同期させるのは難しそうです。トリガ付きのカメラがあればいいですが、特殊なのでなさそうですね。
今思い付いたのですが、Rasberry Piのような小さいコンピュータにwebカメラとトリガのインタフェースを付ければ、スマートフォン並みに安価にできる気がします。カメラもインタフェースも結構ありそうですし、ソフトも手軽に書けるようです。(実は、そこらにも詳しくないので、これも想像です。) あとはタイミングが うまく合うかですね。
いろいろ書きましたが、ご参考になれば幸いです。
また思い付いたらコメントを書きたいと思います。
non: 2023-01-29 15:11
Piu Lento様
大変貴重なご回答をありがとうございます。
はい。産業用カメラではできておりまして、同じようなことをiPhoneなどで実現したい(産業用カメラで得られる画像データと比較したく、2つのカメラで同時に同じ対象を観察したい)と考えております。
トリガをスマートフォンに入力することは難しそうとのご意見、大変参考になります。産業用カメラでは、トリガーの入力に専用のケーブルを用いております。同じようにライトニング端子にケーブルを差して入力できないかと考えましたが、そもそもスマートフォンにトリガーを認識させることが簡単ではないですよね...。現在のシステムでは、PC上のプログラムでトリガーの出力を制御しており、その信号をBluetoothやwifi経由でスマートフォンのカメラを起動する方法はないかなどと悩んでおります。
USBキーボードやマウスのようなものを繋いで、それをトリガーにする方法は、思いつきませんでした。ありがとうございます。数日間連続で撮影するため、タイマー等で自動化したいです。光源照射の時間が短いだけに、おっしゃる通りタイミングが心配です…。
「Rasberry Pi」は、知りませんでした。調べてみます! ありがとうございます。
お手数をおかけいたしました。また、もし何かご教示いただけることがありましたらよろしくお願いいたします。
れんと: 2023-01-29 16:11
●なるほど。最初から「難しい」と書くのは良くないですが、2つの画像を比較するとなると、撮影のタイミングを合わせるのが結構難しそうです。画質や画素数がご希望に合うか分からないですが、広めの時間を動画で撮って、あとで同じ時刻のフレームを合わせるといいかも知れません。合わせるには それぞれの動画に細かい時刻が入ると良いですね。
BluetoothやWi-Fiでのトリガーは、時間のズレが難しいかも知れません。それでもいいのであれば、先に書いたセルフタイマーを改造するのがいいかも知れません。が、ソフトが合うか・合わなければ作るのが面倒そうです。
セルフタイマーはイヤフォンジャックに挿すタイプもあるので、それだとタイミングが良さそうです。
USBキーボードやマウスは手で押すのでなく、やっぱり改造などして、タイマーで(トリガのタイミングで)キーやボタンが押されたかのようにするといいです(疑似キーボードとか、そういう変なデバイスがあった気もします)。
マウスなら、ボタンのスイッチをon/offすればいいので、一番容易そうです。
なお、実際には、キーボードやマウスでなくてもiPhoneが認識するデバイスなら何でもいいのですが、入手や対応してそうな点で そう書きました。
いずれにしても、有線であれば、無線よりはタイミングがマシな気がします。
iPhoneでなくてもいいのであれば、Raspberry Piが いいかなあと思います。対応品なら容易にハードを付けたりプログラミングできますので。この辺は多くの方が使っているので、検索するといろいろ出てきます。機器はAmazonなどで入手できます。
あと、iPhoneは本文にも書きましたように、勝手にアプリが停まったりするので、長時間連続で使うとなると余り推奨できないです。
「気がします」が多く、かつ、書き過ぎて申し訳ないですが、いろいろ調べると いい手が見つかると思いますので、ご健闘下さい^^
れんと: 2023-01-29 17:01
●あと、トリガで撮影開始する点では、人その他のセンサで撮影開始するカメラは近いですね(そのセンサを改造してタイマーで動かす)。他にはドラレコの衝撃感知も近いです(こっちは結構高い)。後者はもちろん、前者もストレージが内蔵されていそうなので、画像をあとで取るのよければ良さそうです。
ただ、スマートフォンでなくて それでいいのかという点と画質などが目的にあうかが不明ですし、もっと直接的なものがありそうな気がします・・・
そう言えば、デジカメには外部シャッターが付けられるものもあった記憶があるので、それがあれば使えそうです。これも、スマートフォンでなくていいのかという心配はあります、
Anonymous: 2023-01-30 13:21
Piu Lento様
大変参考になるご助言をありがとうございます。
古いマートフォンを利用できればという考えで、スマートフォンにこだわってしまっておりました。
安価に入手できれば、どんなカメラでも問題ありません。カメラの購入も含めて検討しなければと考え直しております。
スマートフォンで動画を撮って、フレームを取り出す方法を試しました。ご指摘のように、画像が粗い、勝手にアプリが停まる、ストレージ不足など、長時間の連続で撮影するには限界がありそうです...。ただ、これといった方法がない現状では、動画で撮る方法を改良していくべきかもしれないですね...。
ご提案いただいたRaspberry Piは、いろいろと作っていけそうだと分かってきました。
センサの改造してタイマーで動かす方法も、すぐに実現できるだけの知識はないものの、勉強して、自身にも実現の可能性出れば試したいと思います。
厚かましいお願いとなりますが、また何か進捗があれば、ご相談させていただきたいです。よろしくお願いいたします。
れんと: 2023-01-30 20:34
●どういたしまして。最初に書きましたように、僕には なかなか おもしろい(と書くと失礼ですが)課題なので、思い付いたことを書きました。
ハードの改造をいろいろ書きましたが、ご趣旨を考えると、おそらく なるべくそのまま・手軽に使えるものを探して、本題にパワーを掛けるのがいいと思います。
学生の時は分からないことは多いし、いろいろやることが多くて大変だと思います。無理せず進めて下さい。
回答にまとまりがなくなってしまいますが、ヒントのようなもので良ければ、またどうぞ^^