見出し画像

【Windows版】超お手軽にPythonプログラムを自動で実行(起動)させる方法

通常、プログラムを自動で実行(起動)するには、サーバーサイドの知識やLinuxOSの知識が必要になります。
しかしながら、それらの知識はエンジニア水準のものが多く、プログラミング初心者にとってはハードルが高い技術なります。

初心者でも「作成したプログラムを自動で動かしたい!」という欲求はあるけど、技術が足りない...。

そんな状況にいるすべてのプログラミング初心者へ、今回の内容はばっちり突き刺さるはずです。
内容は非常に簡単ですから、この機会にぜひ自動化の技術を習得していってください。
また、今回の内容はWindows環境で解説しています(MacやLinuxでは使用するツールが異なります)。


■ 今回紹介すること

今回紹介する内容は以下の2点です。

(1)プログラムを自動で起動する方法
(2)プログラムを実行し続ける方法

以上の2点を学べば、皆さんが作成したプログラムを自動で起動し、予約したスケジュール通りに実行し続けることができます。
皆さんが行う作業は「PCの電源を入れる」だけです。
つまり、「作業の完全自動化」が実現できるようになるわけですね!
説明するまでもなく非常に強力なスキルですから、ぜひこの機会に自分のものにしていってください。


■ 環境の説明

今回解説する環境は以下の通りです。

・WindowsOSを利用している
・PCにPythonをインストールしている
・実行したいPythonプログラムをデスクトップに配置している

WindowsPCにPythonをインストールしていることが前提です。
そして、今回は「say_hello.py」というPythonプログラムをデスクトップへ配置し、自動で実行します。

スクリーンショット 2021-03-16 173551

「say_hello.py」プログラムの中身は、以下の内容です。

import time
print("hello")
time.sleep(10)

「"hello"と書き出し、10秒後にウィンドウが閉じる」という実行内容ですね。


■ 使用するツール「タスクスケジューラ」とは

使用するツールは、Windows専用アプリ「タスクスケジューラ」を使用します。
このアプリを使えば、Windows上のアプリを指定した時間に、指定した回数、実行させることが可能です。

まずは「winキー + S」>「タスクスケジューラ」でアプリを検索します。
常用する方は、スタートメニューに追加したり、ショートカットを作成しておいてください。
アプリを起動できたら、Pythonを自動で動かすための設定に進みます。


■ タスクスケジューラの設定

タスクスケジューラを設定していきます。
今回は、PCの電源を入れると自動でPythonプログラム(say_hello.py)が起動するよう設定してみます。
まず、「タスク スケジューラ ライブラリ」というフォルダの下に「pystudy」という名前のフォルダを作成します(好きな名前で大丈夫です)。

スクリーンショット 2021-03-16 185842

次に、その「pystudy」フォルダの中にタスクを作成していきます。
「基本タスクの作成」を選択し、下記の通りタスクを設定していきます。

(1)名前:「say_hello」に設定(自由)
(2)トリガー:ログオン時
(3)操作:プログラムの開始
(4)プログラム / スクリプト:Python本体のexeファイルのフルパス
(5)引数の追加:実行したいPythonプログラムのフルパス

特に(4)と(5)は間違いやすいポイントなのでご注意ください。
(4)にはPython本体のフルパスを入力します。
場所の変更などしていなければ「C:\Python37\python.exe」というフルパスかと思います(必ずご自身で確認してください)。
(5)にはスクリプトのフルパスを入力します。
場所は「C:\Users\ユーザー名\Desktop\say_hello.py」になります(ユーザー名はご自身で設定したものになります)。

スクリーンショット 2021-03-16 192756

ちなみに、プログラムのフルパスを確認する方法は、「目的のファイルを右クリック」>「プロパティ」>「セキュリティ」です。

以上の通りの設定したら、試しにタスクを実行してみましょう。
「作成したタスクを右クリック」>「実行する」

スクリーンショット 2021-03-16 192943
スクリーンショット 2021-03-16 193831

シェルが起動し、「hello」の文字が出力されれば成功です。
あとは「トリガー」に設定した通り、ログオン時にも実行されるか試してみてください。
PCを再起動すればプログラムが起動し「hello」が出力されるはずですが、ノートPCの場合は電源に接続していなければ実行されません(設定で変更可能)のでご注意ください。

いかがでしょうか。
これでプログラムを自動で起動する環境の完成です。
サーバーの知識が無くとも、Linuxの知識が無くとも、このくらいのことは簡単にできてしまいます。
これだけでも様々な作業を完全自動化できてしまうのですが、今回はここからさらにプログラムを常駐化・定期実行する方法も紹介します。


■ 定期的にプログラムを実行する方法

Pythonのプログラムを常駐化・定期実行する方法を解説します。
色々と方法はあるのですが、初心者の方はまず以下の方法があることを知っておいてください。

(1)タスクスケジューラで時間・回数を指定する
(2)Pythonのライブラリを活用する

(1)タスクスケジューラで時間・回数を指定する
この方法は、先ほど設定したタスクの詳細設定をすることで可能です。
設定の仕方は難しくありませんので、興味のある方は色々と試してみてください。

(2)Pythonのライブラリを活用する
一方で、Pythonのライブラリなどを活用し、Pythonプログラム自体にスケジュールを書き込んでしまう方法もあります。
プログラミングに慣れてくると、こちらで設定した方が管理・メンテナンスの面で楽になるはずです。


■ ライブラリ「schedule」の使い方

具体的には、「schedule」というPythonライブラリを使い、以下のように書きます。

import time
import schedule

# info: https://pypi.org/project/schedule/
# info: https://schedule.readthedocs.io/en/stable/

def job():
   print("ここに実行したいプログラムを書く")

# スケジュールを設定する
schedule.every(10).seconds.do(job) # 10秒毎にjob関数を実行する
schedule.every(10).minutes.do(job) # 10分毎に
schedule.every().hour.do(job) # 1時間毎に
schedule.every().day.at("10:30").do(job) # 毎日10時30分に
schedule.every().monday.do(job) # 月曜日0:00に
schedule.every().wednesday.at("13:15").do(job) # 水曜日13:15に

while True:
   # 1秒置きに設定したスケジュールを実行する
   schedule.run_pending()
   time.sleep(1)

いかがでしょうか。
初歩的な文法のみで、非常に簡単に活用できるということがご理解いただけると思います。


■ まとめ

今回紹介した内容は、

(1)プログラムを自動で起動する方法
(2)プログラムを実行し続ける方法

以上の2点です。
この2つの技術で「作業の完全自動化」を実現すれば、人の数倍、数十倍、数百倍のタスクを処理することが現実的に可能になります。
プログラミングに興味のある方、すでに学んでいる方は、ぜひこの自動化技術も一緒に身に着けてください。

かじり虫の活動を応援してくださる方のサポート、お待ちしております。 これからも有意義なコンテンツを作成していきますので、私の「夢中」をぜひ一緒に共有していきましょう^^