一定時間ごとに自動的にスクリーンショットを保存する仕組みをつくる
February 0, 2023
Last edited time
Oct 12, 2023 09:09 AM
モチベーション
普段作業しているとき、いま表示しているものは再現できない前提であるから、人は何かを取っておくことにものすごいエネルギーをかけている。
時々やらかすのも人である。
そんなストレスから解放されるために一定時間ごとにスクリーンショットを自動的に保存する機構を作れば精神的に解き放たれるのではないかと考えた。
自分を監視する。
何か具体的なユースケースがあるわけではないが、仕組みを考えてみた。
Automatorでやる
macのAutomatorで一定時間でスクリーンショットを撮るワークフローを作成する方法をとることにした。

Automator に関する説明は割愛するが、使う機能は次のようなもの。
スクリーンショットをとる
保存先とファイル名を指定することができる。
とりあえずGoogle Drive(Filestream)のフォルダにしたが、Google Driveが落ちてるとワークしなくなる。一義的にはローカル保存なのでWifiはなしでも成立する。
名前は静的にしかつけれない。
Finder項目の名前を変更
ファイル名をユニークにするために、年月日, 時分秒をファイル名に付与する。
年月日, 時分秒それぞれ1回ずつ追加なので、2回やる。
これにて、
screenshot_[YYYYMMDD_hhssmm].png
のファイル名で保存されるようになる。一時停止 と ループ
X秒ごとに繰り返すということがしたいので、
「30秒止まって最初に戻る」ということをやる。
ループの回数は1000回が上限らしい。
1日の秒数を1000で割ると86.4秒なので、1日起動するならば86秒ごととしなければならない。
ひとまず、30秒ごとにスクショする君ができた。
スクショ音がうるさいので消す
Automatorのスクショはmacのネイティブの機能なので、普通に音が鳴る。社会的に問題である。
設定 > サウンド > サウンドエフェクト >
ユーザーインターフェイスのサウンドエフェクトを生成
をオフにすることで切れる。ただし、他の種類のサウンドもきれるので注意。

自動起動の設定をする
流出したらまずいので私はやってません
上記の設定は一度起動すると約10時間ぐらいを持つ。
あとはこれを1日に3回自動起動するようにすれば、やろうと思えば24時間ずっとスクショ30分取り続けるという仕組みができる。
ワークフローを起動するための設定はCRONのような気の利いた仕組みではなく、カレンダーをつかうのがデフォルト。
macの、カレンダーアプリで特定のイベントを繰り返しに設定し、それを Automator に紐付ければよろしい。カレンダーの通知設定で、音を鳴らすのではなくアプリケーションを起動するという指定をするもの。
注意点としては、Google カレンダーに紐付けられてる予定を作ると勝手に通知設定が置き換わってしまう。 Mac のローカルのカレンダーを作って設定するのがよろしい。
また単純にワークフローを作って保存しておくだけでは起動してもオートメーターが起動されてしまう。なのでそのワークフローを起動するためのアプリケーションをやはり Automator で作成し同じ場所にでも保存しておいて、それをCalendarから起動することになる。

OCRする
流出したらまずいので私はやってません
これもやろうと思えばの話であるが、スクリーンショットを Google フォトにあげることにすればGoogle フォトの OCR 機能で文書検索ができる。
OCRとの相性抜群。
見たもの保存して、すべて検索できる世界はもうここにある。
Author
Yasuhiro Yokota
1991-, Designer
大学卒業後、行政機関で情報政策部門で勤務。株式会社ワークスアプリケーションズを経た後、フリーランスでグラフィック・デジタル双方のデザイン及びディレクションを通し、様々なプロジェクトに携わる。株式会社TERASSに創業期からシリーズBまで参画した後、2022年9月にマイベスト入社。グロービス経営大学院卒業。
Drafts
Yasuhiro Yokota Today
This website is a private and sloppy collection of writings and personal information by Yasuhiro Yokota, a designer in Tokyo.
All data is based on the Notion Database and several APIs.
Built with Chakra UI, NextJS & Vercel.