腰痛のための環境設定

# SEが抱える問題とは・・・
__腰痛__ですね。

# 腰痛が引き起こす問題とは
集中しているとあっという間に時間がすぎていることはありませんか？

気づいて姿勢を直したときにはもう遅い。
気持ち的には、今持っている仕事を投げ捨てて__「腰痛で今日は仕事終わります」__と言いたくなりますよね。

気になるところがあると作業効率はダダ下がりです。

# なぜこの議題なのか
CI/CDの構築、コーディングの共通化、ドキュメントの整備、スクラムの回し方、リモートワークの改善など、業務に直接影響があると考えられるものは普段よく話します。

__だが耳を傾けて聞くべきなのは、普段取り上げられないような話なのかもしれません__
__なかなか腰痛という観点からの切り口は少ないのではないでしょうか。__

~~(まじめな)~~大きい観点から
人生100年時代ともいわれるように、キャリアも大事ですが、長期で健康的に働くことも大切です。そのためにも、自分で自身の健康を守る「セルフケア」が必要になってきています。

近年のapple watchのようなヘルスケアデバイスでは、睡眠、体組成、活動量など様々な状態を見える化できます。手洗いを設定すると、手洗いの時間までも通知してくれます。（コロナの対策には便利ですね。）

昨今リモートワークが増えてきた状況では、従業員の健康管理も様々変わってくるのではないでしょうか？

# どう解決する？
長時間作業することによって生じるものなので、__定期的にお休みをいれましょう__。（なんというベタな回答）

~~こんなものに~~重たいアプリを入れるのは大変なので、作業時間を監視するために、キーの入力を監視しすることで解決します。
# インストール
下記のライブラリを使うので、インストールします。

```
$ pip install pynput
```

# キー入力監視

pythonで簡単に作ってみました。下記のコードを動作させると1時間後に通知をしてくれます。

```main.py
from pynput.keyboard import Key, Listener
from datetime import datetime, timedelta

def on_press(key):
    now_dt = datetime.now()
    print(f'{now_dt}, {key} pressed')

def on_release(key):
    now_dt = datetime.now()
    print(f'{now_dt}, {key} release')

    # 終了時刻を過ぎたらメッセージを出力
    if now_dt > end_dt:
        print("そろそろ休んだらどうだい？")
    # ESCで終了
    if key == Key.esc:
        stop_dt = datetime.now()
        print("stop:", stop_dt)
        return False

# 開始時刻
start_dt = datetime.now()
# 終了時刻
end_dt = start_dt + timedelta(minutes=1)

print("start:", start_dt)
print("end:", end_dt)

# key入力を監視
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()
```

# 出力

動作させてみましょう。出力結果は下記のようになります。

```
> python .\test.py
start: 2020-11-25 20:31:08.203863
end: 2020-11-25 20:32:08.203863
2020-11-25 20:31:11.338368, Key.enter pressed
2020-11-25 20:31:11.434368, Key.enter release
2020-11-25 20:31:12.073998, Key.enter pressed
2020-11-25 20:31:12.169998, Key.enter release
2020-11-25 20:31:13.004706, 'a' pressed
2020-11-25 20:31:13.130705, 'a' release
2020-11-25 20:31:13.450707, 's' pressed
2020-11-25 20:31:13.514713, ';' pressed
2020-11-25 20:31:13.574081, 'a' pressed
2020-11-25 20:31:13.626478, 's' release
2020-11-25 20:31:13.690477, 'k' pressed
2020-11-25 20:31:13.722477, 'a' release
2020-11-25 20:31:13.754478, ';' release
2020-11-25 20:31:13.802478, 'j' pressed
2020-11-25 20:31:13.834483, 'k' release
2020-11-25 20:31:13.838480, 'f' pressed
2020-11-25 20:31:14.059479, 'f' release
2020-11-25 20:31:14.138479, 'j' release
2020-11-25 20:31:14.218479, 'e' pressed
2020-11-25 20:31:14.362481, 'e' release
2020-11-25 20:31:15.056643, 'p' pressed
2020-11-25 20:31:15.258638, 'p' release
2020-11-25 20:31:15.354639, 'j' pressed
2020-11-25 20:31:15.674925, 'j' release
2020-11-25 20:31:15.676968, ';' pressed
2020-11-25 20:31:15.706523, 's' pressed
2020-11-25 20:31:15.722517, 'l' pressed
2020-11-25 20:31:15.834515, ';' release
2020-11-25 20:31:15.837516, 's' release
2020-11-25 20:31:15.838521, 'k' pressed
2020-11-25 20:31:15.946517, 'l' release
2020-11-25 20:31:15.978517, 'j' pressed
2020-11-25 20:31:15.997521, 'k' release
2020-11-25 20:31:16.106518, 'j' release
2020-11-25 20:31:20.570267, 'a' pressed
...
...
...
2020-11-25 20:32:20.570267, 'a' pressed
そろそろ休んだらどうだい？
```

# 使ってみた感想
使ってみると、意外と良いです
__定期的に休憩をとる習慣__につながりました。


アイディアとしては、__リモートワークの作業監視として使える__のではないでしょうか。
キーボードだけでなくマウスの動作も合わせて取得すれば、リモートワーク監視アプリとして製品になりそうですね。

リモートワーク監視アプリとして作り直して、この記事を書いたほうがよかったのではなかろうかと書いてから思い始めました。
しかしながら、ここまで書いたから、残しておきます。