macOSのスリープ時に一時ファイルを削除しよう

記事タイトルとURLをコピーする

サーバーワークスのBYOD制度

CI部の千葉です。
サーバーワークスではBYOD制度が普及していて、過半数の社員がPCやスマートフォンは個人所有のものを利用しています。
参照: サーバーワークスホームページ - はたらきかた

BYOD制度の注意点

BYOD制度の利用にあたり、いくつかの注意点があります。

  1. MDMソフトのインストール
  2. アンチウィルスソフトのインストール
  3. ローカルディスクの暗号化
  4. IDaaS(OneLogin)の利用
  5. OSの自動ロック

これらについては、ソフトウェアの設定といった仕組み側で解決できる課題なので初期セットアップさえしてしまえば、その後は気にすることはありません。

ローカルファイルの取り扱い

前記の注意点に加えて『ローカルにファイルを残さない』為の工夫が必要です。
サーバーワークスでは、ファイル共有に Box を使っているので BoxDrive を利用することでローカルにダウンロードすることなくBoxのファイルを利用することが可能です。

一方で、Box 以外で共有されたファイルの取り扱いについてはローカルにダウンロードして扱うことになります。(e.g. 顧客からBacklog / Slack / メール等で共有頂いたファイル)
これらについては、Boxにアップロードする等の処理がおわったらローカルからファイルを削除する。運用が必要です。
消し忘れがないように注意をしているのですが、やっぱり人間がやっていることなので忘れちゃうことってあるんです。

これって、仕組みで解決しちゃって良いモノなのかな?

ひとがやるから忘れるワケで、自動化しちゃえば良いんだな。と考えました。
とは言え、ファイルを自動的に強制削除するって、かなりの勇気がいりませんか?
それで改めて良く考えてみました。

ローカルのダウンロードフォルダの中身って、すべてが何処かからダウンロードしてきたファイルなので『必ず別の場所にオリジナルが存在するもの』なんです!(フォルダ名からして当然なんですが…)
もし作業途中のファイルを紛失してしまったとしても、何かしらのルートで再取得できるんだな。って分かると気がラクになりました。


取得元が思い出せないファイルについて考えてみましたが、そもそも取得元を思い出せないファイルがローカルに残っていたとしても、そんな恐ろしいファイルを使っちゃダメでしょ?

これで気持ちが強く持てました、自動的に強制削除やっちゃいましょう!

ここで活躍するのが sleepwatcher です。
macOS の Sleep / WakeUp をトリガーにスクリプトを仕込むことが可能なツールです。
これをつかって、MacBookを閉じた際にローカルのダウンロードフォルダの中身を削除しちゃいます。

1. インストール

HomeBrew コマンドからインストールします。

$ brew install sleepwatcher

2. 起動設定

インストール後は $ brew info sleepwatcher の内容に従って、設定していきます。

$ cp /usr/local/opt/sleepwatcher/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist ~/Library/LaunchAgents/sleepwatcher.plis

手動起動する場合は $ brew services start sleepwatcher を実行してください。

3. スクリプトの作成

今回は Sleep 時の設定なので ~/.sleep ファイルを作成します。

$ touch ~/.sleep
$ chmod +x ~/.sleep

このスクリプトでは『土日』もしくは『19時以降』にスリープした際にダウンロードフォルダを空にしています。
平日の業務時間内では、作業の途中で会議 / 休憩等でOSをスリープにすることがあるので反応しないようにしました。

#!/bin/bash

if [ 5 -lt `date +%u` -o 18 -lt `date +%H` ]; then
  # Remove Download files
  if [ -e ~/Downloads/* ]; then
    rm -rf ~/Downloads/*
  fi
fi

exit 0

まとめ

これで、ローカルファイルを消し忘れて、なんとなく後ろめたい気持ちになることが無くなりました。

よしっ!

千葉 哲也 (執筆記事の一覧)

アプリケーションサービス部

コーヒーゼリーが好きです。