突然ですが、自分の生活を豊かにしようと色々なプログラムを書いているとプログラムの実行さえ自動化したくなってきますよね。
今回は、Pythonプログラムを定期的に実行する方法をご紹介します。※Pythonを例にご紹介しますがPython以外もいけます
・自作のプログラムを定期的に実行したい(定期的にメールを送りたい、定期的に情報を取得したいなど)
私は株式の情報を取得し通知する機能を実装し、今回ご紹介する方法で定期的に実行しています。
\「月5万円の安定収入」を実現できるプログラミングスクール!案件獲得までサポートあり!/TechAcademy(テックアカデミー)の無料相談はこちら>>
結論:
Herokuというクラウドサービスを利用し、プログラムの定期実行を行います。
HerokuはSalesforce社の製品の一つで、課金制度もありますが無料枠の範囲内でおおよそのプログラムの定期実行を実現できます(無料枠は1000時間/月)。
Herokuを利用するまでの流れは以下の通りです。
・Herokuとgitのインストール
・Herokuのアカウント作成
・実行したいプログラム準備
・Heroku上で新規アプリ作成
・Herokuへアプリデプロイ
・スケジューラ設定
Herokuとは、Pythonなどのプログラミング言語で記述されたアプリケーションを実行するための環境です。
通常アプリケーションの公開には多くの作業が必要です。データベースの設計やサーバ環境の構築などなど。。。
それらをすべて担い、アプリケーションの実行をサポートしてくれるサービスですね。
\Herokuの解説はこちら/
今回はHerokuの定期的にプログラムを実行してくれる機能を利用して、Pythonプログラムの定期実行を実現したいと思います。
Herokuの利用方法
ここから、Herokuの利用方法をスクリーンショットを用いながら説明していきます。※Windowsをベースに行います
インストール
まずは、gitとheroku CLIをインストールしましょう。
インストールされていることが確認できれば飛ばしてOK!
git
こちらからgitの最新バージョンをインストールしましょう。
コマンドプロンプトにて以下のコマンドを実行することでインストールできているか確認することができます。
$ git --version
heroku CLI
こちらからheroku CLIをインストールしましょう。
git同様に、コマンドプロンプトにて以下のコマンドを実行することでインストールできているか確認することができます。
$ heroku -v
次にこちらからHerokuのアカウントを作成します。「無料で新規登録」からアカウントを作成しましょう。※日本語版、英語版などで表記が異なる場合があります。
・氏名(苗字、名前)
・メールアドレス
・会社名
・役職
・国
・主な開発言語
必要情報を入力すると入力したアドレスにHerokuからメールが送られてきます。メール内に記載されているURLリンクを踏むと、パスワード設定画面に遷移します。
・8文字以上
・アルファベット、数字、記号が含まれている
パスワード設定を終えログインボタンを押すと、以下の画面に遷移します。
これでアカウント作成は完了です。
Herokuのアカウントが準備できたところで、続いてはHerokuで実行するプログラムを用意していきます。
今回は、「足し算の結果を定期的にLINEに通知するプログラム」を実装したいと思います。
ものすごく意味不明ですが、お付き合いくださいm(_ _)m
サンプルコードは以下の通りです。ファイル名は問いませんが、ここでは「add.py」として保存しました。Pythonプログラムの実行結果をLINEに通知する具体的な方法はこちら。
import requests
#LINEに通知する関数
def line_notify(message):
line_notify_token = 'ここにトークンをペーストしてください'
line_notify_api = 'https://notify-api.line.me/api/notify'
payload = {'message': message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
requests.post(line_notify_api, data=payload, headers=headers)
#実行したい処理
def hoge(a, b):
return a + b
if __name__ == '__main__':
try:
ans = hoge(1, 1)
except Exception as e:
line_notify(e)
else:
text = "\nプログラムの実行を完了しました\n"
text += "実行結果:"+str(ans)
line_notify(text)
新規アプリ作成
次項でご説明しますが、Herokuでアプリケーションを実行するためには、準備したファイルをHerokuへ渡す必要があります。
その前段階として、Herokuへ渡すファイルの準備、そして渡すための準備を整えていきます。
具体的な流れとしては、以下の通りです。
1. ローカルPCにフォルダ作成
2. 作成したプログラムたちをフォルダに格納
3. Heroku上で新規アプリを作成
4. プログラムをHerokuへデプロイ
ローカルPCにフォルダ作成
適当なフォルダ(notify_line)を作成し、先ほど用意したadd.pyを格納しておきます。
L add.py
作成したプログラムたちをフォルダに格納
既にadd.pyを格納していますが、これ以外にあと2つ「runtime.txt」と「requirements.txt」を用意する必要があります。
- runtime.txt:Pythonのバージョンを記載するファイル
- requirements.txt:必要なライブラリを記載するファイル
Pythonのバージョンはコマンドプロンプトから以下のコマンドを実行することで確認可能です。
$ Python -V
runtime.txtには、以下のような形式で記載しておきましょう。
python-3.7.6
プログラムを実行するのに必要なライブラリもコマンドプロンプトから簡単に確認することができます。
$ pip freeze> requirements.txt
これでrequirements.txtが生成されます。
たくさんのライブラリをインストールしている環境の場合、余計なライブラリまで含まれてしまいます。ファイルの中身を確認して不要なライブラリは削除しておきましょう。
これで必要なファイルはすべて準備できましたので、notify_lineフォルダに格納しましょう。
L add.py
L runtime.txt
L requirements.txt
Heroku上で新規アプリを作成
次はHeroku上に新規アプリを作成しましょう(ファイルのデプロイ先になります)。
まずは、先ほど作成したnotify_lineフォルダへ移動します。「~」部分はあなたの環境に合わせて記載してください。
$ cd ~/notify_line
そして以下のコマンドを実行し、Herokuへログインします。
$ heroku login
以下の画面から、ユーザ名やパスワードを入力するよう求められます。
ログインできたら、コマンドプロンプトから新規アプリを作成していきます。「アプリ名」の部分はあなたのアプリ内容に沿った内容を記載しましょう。
アプリ名が既に使用されている場合にはエラーが出るので再度アプリ名を変更してトライしましょう!
$ heroku create アプリ名
- https://アプリ名.herokuapp.com/ :作成したアプリのURL
- https://git.heroku.com/アプリ名.git :リモートリポジトリのURL
これで準備はすべて完了です。
それではここから準備した各ファイルをHerokuへデプロイしていきます。
gitを用いながら、以下のコマンドを1つずつ実行していきましょう。
$ git init
$ git remote add heroku https://git.heroku.com/アプリ名.git
$ git add .
$ git commit -m "app first commit"
$ git push heroku master
gitの使い方はグーグル先生にお任せしますが、addしてcommitしてpushするというのが基本の流れになります。
最終的に以下のような結果が返って来ればOKです(... done.)。
エラーが出る場合、主に以下のケースが考えられます。
- Pythonのバージョンが古く、Herokuが対応していない(執筆時点で、Herokuは3.6.15以上に対応しています。正確な情報は公式HPをご覧ください)
- ライブラリの中にpipでインストールできないライブラリが含まれている(不要なライブラリはrequirements.txtから削除するようにしましょう)
アプリのデプロイまで完了したら、いよいよ定期実行のためにスケジューラを設定していきます。
クレジットカード情報の登録
まずはクレジットカード情報を入力する必要があります。
なぜ??という感じですが、クレジットカード情報を入力しておかないと実行できないようになっています。
ただ、設定を変更しない限り課金されることはないです。
クレジットカード情報はこちらから登録することができます。
スケジューラ設定
いよいよスケジューラ設定です。コマンドプロンプトから以下のコマンドを実行します。
$ heroku addons:add scheduler:standard
以下の結果が返って来ればOKです。クレジットカード情報が登録されていない場合ここでエラーが出ます。
次に以下のコマンドを実行し詳細設定を行います。
$ heroku addons:open scheduler
Herokuのブラウザが立ち上がり、スケジュールと実行コマンドの設定画面へ遷移します。
・頻度(1日ごとなど)
・時間(米国時間のため、日本時間-9h)
実行コマンド
・コマンドプロンプト上で実行する場合と同じコマンドを記載(今回は、add.pyを実行する想定)
これでスケジューラの設定も完了!あとは指定した時間に足し算の結果がLINEに通知されればOK!(笑)
まとめ
今回は、Pythonプログラムを定期的に実行する方法をご紹介しました。
Pythonに限らない汎用的な方法としてHerokuを用いて、プログラムの定期実行を実現しました。
Herokuは応用性の高いサービスで個人利用としても多くの利用方法が考えられます。APIを利用してリアルタイムに情報を取得・分析し、メールやLINEで最新の結果を通知するなど、Pythonによる自動化の恩恵を感じていただけるのではないでしょうか。
わたしは個人投資家としての側面もあり、株式情報を分析して定期的に情報を通知してくれる機能は非常に便利だと思っています(またブログにします)。
本ブログでは、株式やプログラミングに関する記事を投稿しています。
プログラミング(Python)を学びたい方におすすめの書籍やプログラミングスクール、おすすめの学習方法などをご紹介しておりますのでぜひご覧ください。
は、プログラミングスクールという方法がおすすめです。
私の一押しは『TechAcademy』です。
質問することですぐに分からないところをクリアにできますし、進捗をサポートしてくれるため確実に成長することができます。
無料相談を実施しているため、まずは話を聞いてあなたのスタイルに合っているかどうか確認してみるのが良いと思います。
コメント