PC常駐型リマインダーをPythonで作ってみた【環境づくり】

今日はやろうと思っていたことができなかった。気づけば時間が過ぎていて、
結局何も積み上げられないまま終わってしまったことはありませんか?

僕は、何度もあります。

「明日はやろう」と思いながら、その“明日”を何度も繰り返してきました。

できない自分にがっかりして、でも何も変えられないまま時間だけが過ぎていく。

ただ、意志の力だけに頼るのはもうやめようと思いました。

やる気がある日もあれば、どうしても動けない日もある。
それなら「自分を動かす仕組み」を作ればいい。

そう考えて、PC常駐型のリマインダーをPythonで自作してみることにしました。

なぜ「仕組み」にしたのか

意志の力に頼る方法は、何度も試してきました。

「今日は必ずやる」と決める。
ToDoリストを書く。
タイマーをセットする。

でも、疲れている日や気分が乗らない日は簡単に崩れてしまいます。

それなら、考えました。

自分が弱い前提で設計すればいい。

やる気がなくても、時間になったら通知が出る。
PCは基本的に開いている。
だったら「逃げにくい環境」を作ればいい。

そうして、常駐型のリマインダーを作ることにしました。

要件整理

今回考えた条件はシンプルです。

  • PC起動中は常に動いていること
  • アプリを毎回開かなくていいこと
  • 指定時間になったら通知が出ること
  • 設定変更が簡単なこと

できるだけ「面倒」を減らす設計にしました。

実装概要

使用したのは以下のライブラリです。

  • schedule(時間管理)
  • win10toast(Windows通知)

コードはシンプルで、
指定時間になったら通知を出すだけの常駐スクリプトです。

import schedule
import time
import json
import random
from win10toast import ToastNotifier
from datetime import datetime

toaster = ToastNotifier()

# 設定読み込み
with open("config.json", "r", encoding="utf-8") as f:
    config = json.load(f)

# メッセージ読み込み
with open("messages.txt", "r", encoding="utf-8") as f:
    messages = [line.strip() for line in f if line.strip()]

NOTIFY_TIME = config["notify_time"]
TITLE = config["title"]

toaster = ToastNotifier()


def remind():
    message = random.choice(messages)
    now = datetime.now().strftime("%Y-%m-%d %H:%M")

    toaster.show_toast(TITLE, message, duration=10, threaded=True)

    print(f"通知送信: {now} | {message}")


schedule.every().day.at(NOTIFY_TIME).do(remind)

print("常駐リマインダー起動中...")


while True:
    schedule.run_pending()
    time.sleep(1)

まずは“動くもの”を最優先にしました。

今後の改善予定

今はまだシンプルな構成ですが、
今後は次のような拡張を考えています。

  • 設定ファイルとメッセージファイルの分離
  • 時間ごとに表示メッセージを変更
  • IDで紐づけてカスタマイズ性を強化

単なる通知ではなく、
「未来の自分からの指令」に進化させたいと思っています。

最後に

行動力がある人になるのではなく、
行動せざるを得ない環境を作る。

やる気に期待するのではなく、
仕組みに期待する。

今回作ったリマインダーはまだ小さな一歩ですが、
こうした「自分を動かす仕組み」を少しずつ積み上げていきたいと思います。

次回は、時間とメッセージをIDで紐づけられるように改良していく予定です。

小さくても止まらない。
今日も一つ、積み上げました。

コメント

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