今回は以下の内容を掘り下げます。
⑥ 自動実行:毎朝6時に勝手に動かす
手動で実行するのは自動化とは言えない。
→ Windowsで定期実行するにはどんな仕組みが必要?
調べてみた
「Windowsで決まった時間にプログラムを自動実行する方法」を調べてみました。
以前現場でLinux環境だったときにcronを使っていたりしましたが、Windows環境だとまた異なるということですね。
調べると タスクスケジューラ が出てきました。
Windowsに最初から入っている機能で、「毎日〇時にこのプログラムを実行してね」と予約しておける仕組みですね。名前も機能も知っていたけれども、実際自分で設定して使うなんてしたことなかったかも……。
【因みにcron とは?】
LinuxやMacで使われる定期実行の仕組みのこと。この機能がWindowsならタスクスケジューラになるというわけですね!
タスクスケジューラなら、コマンドを打つ必要はなく、画面をポチポチするだけで設定できるのでは!?
やさしい……!そういう簡単さ、嬉しい。
前提として
この設定はCursorに頼めない部分なのだそうで。
Cursorはあくまで「コードを書く場所」であり、Windowsの画面を操作する機能は持っていません。タスクスケジューラはWindowsが提供する機能なので、ここでは自分で設定していきます。
Cursorができること・できないことについては別途まとめたいと思います。
タスクスケジューラの設定については、以下が参考になりそうでした。
『タスクスケジューラにPythonスクリプトを設定し自動実行する』
https://fuyutsuki.net/task-scheduler-python/
『【Python】PythonスクリプトをWindowsタスクスケジューラで定期実行する』
https://kamesuke-blog.com/programming/python-windows-task-scheduler/
記事によるとパスを2つ確認する必要があるそうですので、そこからやっていきます。
事前準備:2つのパスを確認しておく
① Pythonの実行ファイルのパス
ターミナル(コマンドプロンプト)で以下を実行します。
where python
実際に実行した結果は以下の通りです。
……2行でてきた??
調べてみると、上のWindowsAppsの方はWindowsのダミーで、クリックするとMicrosoftストアが開くだけの偽物とのこと。
下のLocal\Python\bin\python.exeが本物のPythonらしいです。
Windowsの仕様で、システムにデフォルトで入っている「pythonと打ったらストアを開く」という機能のせいで1つ目が表示されているらしい……。
ちょっと紛らわしいな。
無効化する手順があるようなのでやっておきます。
【手順】
Windowsの設定 → アプリ → アプリ実行エイリアス → 「python.exe」と「python3.exe」をオフにする
ここですね!
Python (default) → python3.exe
Python (default) → python.exe
上記をオフにして再度実行すると……。
一行だけの結果が返ってきました。
これをコピーしてメモ帳に貼っておきます!
② プロジェクトフォルダのパス
プロジェクトを作成するにあたって、新規で作成したフォルダのパスもメモ帳にコピーしておきます!前回作成したフォルダを使います。
フォルダの中身はなんのファイルもない状態にしてあります。
今回使用するフォルダの名前はnews-digestとしています。
C:\Users\***\Documents\news-digest
タスクスケジューラの設定手順
① タスクスケジューラを開く
キーボードの Windowsキー + R を押して「ファイル名を指定して実行」を開きます。
taskschd.msc と入力してOKをクリックします。
② 基本タスクの作成
右側のメニューから「基本タスクの作成」をクリックします。
③ タスクの名前をつける
名前に「AIニュースまとめ 自動実行」と入力します。
説明は空欄でもOKです。「次へ」をクリック。
④ トリガーの設定(いつ実行するか)
「毎日」を選択して「次へ」をクリックします。
開始時刻を「6:00:00」に設定します。
「1日ごとに繰り返す」はそのままで「次へ」をクリック。
⑤ 操作の設定(何を実行するか)
「プログラムの開始」を選択して「次へ」をクリックします。
3つの欄を埋めます。
| 欄 | 入力内容 |
|---|---|
| プログラム/スクリプト | さっきメモしたpython.exeのパス |
| 引数の追加 | app.py |
| 開始(オプション) | さっきメモしたプロジェクトフォルダのパス |
具体的にはこうなります。
プログラム/スクリプト:
C:\Users\***\AppData\Local\Programs\Python\Python311\python.exe
引数の追加:
app.py
開始:
C:\Users\***\Documents\news-digest
「次へ」をクリックします。
ここで出てくる
app.pyはFlaskアプリの本体ファイルのことです。「引数の追加」欄に入力することで「python app.py を実行してね」という意味になります。実際の実装では異なるかも……。
⑥ 完了
内容を確認して「完了」をクリックします。
これで設定完了とのこと。
翌朝6時になると自動でFlaskが起動して、ブラウザで http://localhost:5000 を開けばニュースまとめが見られます。
注意点:パソコンが起動していないと動かない
タスクスケジューラで実行するには、
その時間にパソコンが起動している必要があります。
シャットダウンしているとタスクは動きません。
スリープ状態なら動かせる設定もありますが、少し手間がかかります。
「毎朝起きたらパソコンをつけて、しばらくしたらブラウザで確認する」
という使い方が現実的かなと思っています。
ちゃんと動くか手動でテストする
設定後に「本当に動くか」確認したい場合の手順も記載します。
後ほど使用するかなと思いますので!
①タスクスケジューラの一覧で作ったタスクを右クリックして「実行」を選びます。
②ブラウザで http://localhost:5000 にアクセスして、ページが表示されれば成功です。
ただし、タスクスケジューラを実際に動かすのはWebページが完成してから。
今回は手順を調べる中で、テスト的に設定をしましたが、ちゃんと動くかの確認は後日ですね。
まとめ
- Windowsで定期実行するにはタスクスケジューラを使う
-
Windowsキー + R→taskschd.mscで起動できる - 設定に必要なのは「python.exeのパス」と「プロジェクトフォルダのパス」の2つ
- シャットダウンしているときは動かない。スリープ状態ならOK
- 設定後は右クリック「実行」で即テストできる
次回
疑問の掘り下げもラストスパートです!


