テレビ局員の独学プログラム

ともきちの日曜プログラムとガジェット

最近プログラムにはまっているので、はてなブログもやってみる。プログラムは完全独学なのでいろいろご愛嬌。

素人がherokuを使用するまで

pythonを定期実行したくて、調べるとherokuというのが出てくる。
素人にはハードル高かったので、忘備録。

gitをインストール

herokuを使うにはgitをインストールする必要がありそう。
gitの使い方は以下を参考にさせていただきました。
非常にわかりやすかった。
ただ、configを使ったssh認証はうまくいかなかったので断念。

今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説 - エンジニアHub|若手Webエンジニアのキャリアを考える!

herokuを登録・CLIインストール

herokuを使うには、アカウント登録とherokuをコマンドで実行するためのCLIのインストールが必要。
このあたりは参考記事がたくさんあるので、よきものを参考。

使用するpythonファイル等を準備

今回は以下のフォルダを準備

test_heroku
 ┣ slack_notice.py
 ┣ requirements.txt
 ┗ runtime.txt

requirements.txt には必要なパッケージを書く。
ローカルと同じ環境で動かすのであれば、pip freeze > requirements.txt で出力すればOK。
runtime.txt には実行するpythonのバージョンを書く。
今回はpython-3.7.3を使用。使用できるバージョンは公式を参照。

#runtime.txt
python-3.7.3

herokuへアップロード

準備ができたら、herokuにアップロードしていく。

$ heroku login
$ heroku create

heroku login を実行すると、ブラウザに移行してログインする
heroku createでherokuが自動でつけた名前のアプリがheroku上に作成されるのでブラウザで確認する

f:id:mtomo661:20190414222602p:plain

上記の場合は3つのアプリが作成されている。

作成されたアプリを選択、「deploy」を見るとアップロードする手順が書いてある。

f:id:mtomo661:20190414223122p:plain

基本的には手順に従えはOK。
所々、上記のサイトのgit手順に従う。

$ cd test_heroku
$ git init
$ heroku git:remote -a xxxxxxxxxxx
$ git add .
$ git commit -a
$ git push heroku master

git push heroku master を実行すると、パッケージのインストールなどが開始される

c:\Users\xxxx\git\test_github>git push heroku master
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (12/12), 3.23 KiB | 300.00 KiB/s, done.
Total 12 (delta 1), reused 3 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing python-3.7.3
remote: -----> Installing pip
remote: -----> Installing SQLite3
remote: -----> Installing requirements with pip
remote:        Collecting altgraph==0.16.1 (from -r /tmp/build_87a75a556e8eb4dd0ab66965df5e0b56/requirements.txt (line 1))
remote:          Downloading https://files.pythonhosted.org/packages/0a/cc/646187eac4b797069e2e6b736f14cdef85dbe405c9bfc7803ef36e4f62ef/altgraph-0.16.1-py2.py3-none-any.whl
・
・
・
remote: Verifying deploy... done.
To https://git.heroku.com/xxxxxxxxxxx
 * [new branch]      master -> master

これでherokuへのアップロードが完了。

pythonを実行

あとは、下記コマンドでpythonが実行できる

$ heroku run slack_notice.py

ちなみに、slack_notice.pyは中身は下記である。

import requests
import json

slack_post_url = "slackアクセストークン"
name = "python_taro"
text = "testyade"

requests.post(
    slack_post_url,
    data=json.dumps(
        {"text": text,
         "username": name,
         "icon_emoji": ":python:"}))


f:id:mtomo661:20190414224059p:plain

見事にslackに通知が来た。
slackにはpythonの絵文字を登録している。

あとは定期実行すればよいが、定期実行にはアドオンの使用、アドオンの使用にはクレジットカードの登録が必要なので、とりあえず、今回はここまで。