macOSのスリープログを客観的記録として勤怠をつける

macOS管理

背景と課題

働き方改革の影響?なのかわかりませんが、勤怠を客観的なデータを元につけていく、という依頼がありました。

ここを深堀りしてみると

1. 2019年4月に「労働安全衛生法」が改正され、客観的方法による労働時間の把握が義務化された
2. コロナ影響によるリモート化

の影響っぽいですね。ただ実際にこれ(データからの勤怠)をやっている企業の話をあまり聞いたことがありません。実際、前職や前々職もやっていませんでした。

さらに最近の日本メーカーのPC管理システムにはPCのログイン、ログアウト情報から勤怠を追うみたいな機能があるようです。

こういう話、最近でてきましたが、あまりノウハウがありません。よって下記のような企業向けに課題を解決していきます。

  • 海外製のMDM製品を入れている
  • macOSを使っている
  • シャットダウン(ログアウト)しないでスリープ状態にしている

スリープログから抽出

macOSのスリープログは

で取得できます。

よってこれをベースにしていきます。

さて、ここからがいきなりの問題なのですが、pmset -g logで出力されるログの詳細情報が見つかりません。

manコマンドの説明もこれだけです。

-g log displays a history of sleeps, wakes, and other power management events. This log is for admin & debugging purposes.

単語の意味から推測するしかないのですが、

とか

という出力があり、それぞれディスプレイON(=スリープ解除)、ディスプレイOFF(=スリープ)という意味に見えます。

実際にmacbook proの蓋を閉める、開けるという動作をしてみたところ、上記のログが出力されました。さらには蓋は開けた状態で、左上のappleマーク > スリープをクリックする、解除するという動作をしても同様なログが出力されました。

よってスリープにする、解除するというログは、

で抽出できそうです。

追記

このコマンドでも抽出できる

最低1ヶ月以上はファイルでリスト表示する

ここからは最終的にどうしたいか、次第です。
私の場合は、最低でも1ヶ月以上はファイルでリスト表示されることを目指しました。出力イメージはこのような形です。

正直、この処理は難しく、現状は単純にその日の最初のONを勤務開始として、その日の最後のOFFを勤務終わりとしています。

あとは過去のファイル出力結果と一致するものは追記しないよう除外する仕組みを入れてます。これで本当に精度高い数字が取れるのかは今後、しばらく使っていくなかで改善したいところです。

例えば、PCを人間が触っていないときもスリープが動くのであれば、正しい数字は取れません。

またググったときに、他の方は

で抽出している方もいました。今の所、どちら(私の方法と上記の方法)がより、精度高く取れるかは不明です。

とりあえず現時点のスクリプトはこちらです。

この仕組みの課題

課題は大きく3つです。

  1. 人間がスリープにする、解除するという動作をログとして精度高くとる方法
  2. 勤務開始と終了の処理方法
  3. ファイルサイズの制御

1については、スリープを抽出しているので仕事が終わってもシャットダウンしないでくれ、というお願いが必要です(シャットダウン、起動もコードに組み込むなら別)

2が難しくてデータは取れるけど、それを機械的に開始と終了をどのように判定するかです。

今後は自分のmacbookで試して、少しずつ改善したいと考えています。
もし、コード書くのが得意な方がいればお手伝いいただきたいです。

タイトルとURLをコピーしました