Help us understand the problem. What is going on with this article?

腰痛のための環境設定

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
そろそろ休んだらどうだい?

使ってみた感想

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

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

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

ryu3
お仕事の依頼はメールへお願いします! ロボット/AIの研究開発、キャッシュレス化、ブロックチェーンの開発、AWS、kubernetesなど、トレンドの技術を追いかけているフルスタックエンジニアです。 大学ではロボット/人工知能の研究に携わり、ロボカップという競技で日本/世界大会に参加し、大学院を首席で卒業しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away