見出し画像

[Python]癒しを与える猫ポモドロタイマーを作ってみた。

1.猫ポモドロタイマー

ポモドロテクニクを利用した猫の音声が再生されるタイマーを作ります。
 機能としては以下の3点を考えました。

[機能一覧]
1.ポモドロのセット数を指定できる
2.時間経過を1分ごとに表示する
3.セット終了時に猫の音声を再生する。

2.ポモドロテクニックとは

ポモドロタイマーに使われているポモドロテクニックとは、フランスの作家・起業家であるフランチェスコ・シリロさんが考えた生産性向上の時間術です。タスクをこなす時間と休む時間の配分を定め、これを数セット繰り返すというものになります。具体的にはある一つのタスクに対して25分作業→5分休憩を4セット繰り返すというのがよく用いられています。

3.タイマークラス

猫ポモドロタイマーの前に、タイマー機能を持つクラスを作成します。
これは設定した時間(分)から1分毎に減算して画面に出力されます。

from time import sleep

class Timer():
    def __init__(self, minute):
        self.minute = minute
        self.message = "Count Up!"

    def count_every_minute(self):
        for i in range(self.minute, -1, -1):
            if i == 0:
                print(self.message)
                break
            print("{0}分..".format(i))
            sleep(60)

4.猫ポモドロタイマークラス

3で作ったタイマークラスを継承して猫ポモドロタイマークラスを作ります。再生する猫の音声はこちらの音源を利用させていただきました。
音源を再生するのにosモジュールを使用します。

from os import system

class CatPomodoroTimer(Timer):
    def __init__(self, set_num):
        self.set_num = set_num
        self.sound = "cat.mp3"
    #指定した回数猫の音声を再生する 
    def play_cat_voice(self, loop_num):
        for _ in range(loop_num):
            system("afplay {0}".format(self.sound))

    def count_25minute(self):
        self.minute = 25
        self.message= "にゃーん(休憩だよ-)"
        self.count_every_minute()
        self.play_cat_voice(3)
    
    def count_5minute(self):
        self.minute = 5
        self.message= "にゃーん(始めよ-)"
        self.count_every_minute()
        self.play_cat_voice(1)
    
    def count_pomodoro(self):
        for i in range(self.set_num):
            self.count_25minute()
            self.count_5minute()
        print("おつかれさま、お茶よ( ^-^)_旦")

5.完成形

from time import sleep
from os import system

class Timer():
    def __init__(self, minute):
        self.minute = minute
        self.message = "Count Up!"

    def count_every_minute(self):
        for i in range(self.minute, -1, -1):
            if i == 0:
                print(self.message)
                break
            print("{0}分..".format(i))
            sleep(60)
        
class CatPomodoroTimer(Timer):
    def __init__(self, set_num):
        self.set_num = set_num
        self.sound = "cat.mp3"

    def play_cat_voice(self, loop_num):
        for _ in range(loop_num):
            system("afplay {0}".format(self.sound))

    def count_25minute(self):
        self.minute = 25
        self.message= "にゃーん(休憩だよ-)"
        self.count_every_minute()
        self.play_cat_voice(3)
    
    def count_5minute(self):
        self.minute = 5
        self.message= "にゃーん(始めよ-)"
        self.count_every_minute()
        self.play_cat_voice(1)
    
    def count_pomodoro(self):
        for i in range(self.set_num):
            self.count_25minute()
            self.count_5minute()
        print("おつかれさま、お茶よ( ^-^)_旦")

if __name__ == "__main__":
    set_num = int(input("何ポモドロ回しますか?:"))
    cpt = CatPomodoroTimer(set_num)
    cpt.count_pomodoro()
    

6.実行結果

(音声は心の声で聞いてください)

何ポモドロ回しますか?:1
25分..
24分..
23分..
22分..
21分..
20分..
19分..
18分..
17分..
16分..
15分..
14分..
13分..
12分..
11分..
10分..
9分..
8分..
7分..
6分..
5分..
4分..
3分..
2分..
1分..
にゃーん(休憩だよ-)
5分..
4分..
3分..
2分..
1分..
にゃーん(始めよ-)
おつかれさま、お茶よ( ^-^)_旦

7.感想

猫の音声を自身で飼っている猫にしてみたり、作業時間と休憩時間をタスク終了後にアンケート方式でデータを取り個人に最適な設定時間を調整してくれる機能があったりするのも面白いなと思いました。



この記事が気に入ったらサポートをしてみませんか?