開発したアプリケーションをみんなに使ってもらうには、アプリケーションを動かすサーバーが必要になると思います。Herokuというサービスを使えばサーバーについて詳しく知らなくても、開発したアプリケーションを容易に動かすことができます。
本記事ではWindowsを使ってHerokuを初めて使う人向けにアカウント登録と初期設定、Tutorialを進めてアプリケーションのデプロイまでをやってみます。
- Heroku(へろく)って何?
- アカウント登録
- 初期設定
- アプリケーションをデプロイする。
- (おまけ)トレンドを呟くTwitter botをHerokuにデプロイする。
- アプリケーションをデプロイする
- Q&A
Heroku(へろく)って何?
そもそもHerokuとはいったい何でしょうか?
Herokuとは、Pass(Platform as a Service)と呼ばれるサービスのひとつで、アプリケーションを実行するためのプラットフォームを提供しています。
Herokuを使うことにより自身で開発したアプリをサーバー周りのことを詳しく知らなくても容易に動かせるようになります。
制限がありますが今回は無料版のものを使ってアプリケーションをデプロイしてみます。
アカウント登録
アカウントはこちらの画面右上にある新規登録から行います。新規登録をクリックするとアカウント情報を入力する画面に移るので必要な情報だけを入力します。(※学生の方は会社名の入力は必要ありません。)
入力が終われば無料アカウント作成をクリック、登録したメールアドレスにHerokuから確認のメールが届くのでメールを開いてURLをクリックする。
パスワードの設定画面に移るのでパスワードの設定をするとアカウント登録作業は完了で、下のような画面に移動すると思います。
初期設定
Heroku CLIとGitのインストール
Herokuを使うにはHeroku CLIとGitが必要になります。
- Heroku CLIのインストール
Heroku CLIはこちらのページからインストーラーをダウンロードします。私はWindowsを使っているのでheroku-x64.exe
をダウンロードしました。MacとLinuxはターミナルを開いてコマンドを打つだけでインストールできるみたいですね。
heroku-x64.exe
を起動するとこのような画面が出てきます。
この内容のままNext
、Install
でOKです。
- Gitのインストール
Gitのインストール方法はこちらに書かれています。私はだいぶ前にGitをWindowsにインストールしたのでやり方をはっきり覚えていません。なので、はっきりとしたことは言えませんが、こちらのページを見る限り、Linuxはターミナルからコマンドを打つだけ、Macは最初から入っていて、Windowsはこちらのページに行くとGitのインストーラーのダウンロードが自動的に始まります。
Herokuにログインする
新しくコマンドプロンプト、もしくはPowershellを開きheroku login
を実行する。
> heroku login
heroku: Press any key to open up the browser to login or q to exit:
Opening browser to https://cli-auth.heroku.com/auth/browser/hogehoge...
Logging in... done
Logged in as e-mail address
q
以外のキーを押すとブラウザが開いて下のようなログイン画面になるのでLog in
をクリックする。
これで初期設定は完了です。
アプリケーションをデプロイする。
ここからはHerokuのTutorialを進めてアプリケーションをデプロイしてみます。
まずは作業ディレクトリを作って移動。
>mkdir workspace && cd workspacee
サンプルアプリケーションを用意する。
>git clone https://github.com/heroku/python-getting-started.git
>cd python-getting-started
Herokuにアプリを作るにはheroku create アプリの名前
で作ることができます。(※アプリの名前は省略でき、適当な名前が付けられる。)
Tutorialではアプリの名前を省略しているので同じようにしてみました。下の例ではアプリの名前はserene-caverns-82714
になっています。
>heroku create Creating app... done, ⬢ serene-caverns-82714 https://serene-caverns-82714.herokuapp.com/ | https://git.heroku.com/serene-caverns-82714.git
アプリをHerokuにデプロイできるようになったので、デプロイしてみます。
>git push heroku master
アプリケーションはデプロイされていますが、まだHerokuでは動いていない状態です。
次のコマンドを実行してアプリを動かします。
>heroku ps:scale web=1
動作確認するには以下のコマンドを実行します。
>heroku open
ブラウザが開いて作成したアプリがちゃんと表示されているはずです。
ちなみに、アプリを止めるには以下のようにします。
>heroku ps:scale web=0
試しにheroku open
を実行してみてください。ブラウザが開いてエラーが表示されるはずです。
(おまけ)トレンドを呟くTwitter botをHerokuにデプロイする。
Tutorialを進めただけでは、面白みに欠けるので自分でゼロから書いたコードをHerokuにデプロイしてみます。
ということで、現在のトレンド取得し、その中からランダムに選ばれた1つの単語を呟くTwitter botを作ってみます。
TwitterのAPIを利用するにはConsumer keyやAccess tokenが必要になってきます。
持っていない方はDeveloper登録をしてください。
Pythonアプリの作成
まずは作業ディレクトリhello-heroku
を作り、そこに移動。
>mkdir hello-heroku && cd hello-heroku
そして、2つのプログラムを用意します。
twitter_api.py
ではHerokuに設定した環境変数を読み込んで認証をしています。環境変数の設定方法は次のHerokuアプリの作成のところで後述します。
bot.py
でやっていることはtweepyを使ってトレンドを取得し、その中からランダムに選んだものを現在の時刻と共にツイートをしています。このとき、ハッシュタグは取り除くようにしています。
さらに、apsscheduler
を使って一時間ごとに post_tweet()
が実行されるように設定。
無料版のHerokuは30分間何もしなければsleep状態になってしまいます。しかし、aspscheduler
を使うことによりsleep状態を回避でき、定期的にジョブを実行することが可能になります。
(※ちなみに下のQ&Aでタイムゾーンの変更方法を書いていますが、変更した場合以下の部分は
下のように変更するといいです。
Herokuアプリの作成
今回は以下3点を用意する必要があります。
- requirements.txt
- runtime.txt
- Procfile
Herokuに使用するライブラリを教えてあげる必要があるので、以下のように書かれたrequirements.txt
を用意する。
tweepy
apscheduler
runtime.txt
でpythonのバージョンを指定。
python-3.6.0
Procfile
の中身。Tutorialではweb
となっていましたが、今回は以下のようにします。
clock: python bot.py
アプリケーションをデプロイする
現時点での作業ディレクトリはつぎのようになっています。
hello-heroku
requirements.txt
runtime.txt
Procfile
bot.py
twitter_api.py
デプロイするには、コマンドプロンプトもしくはターミナルから
> git init > git add . > git commit -m "Initial commit"
そして、Herokuにログインー>アプリの作成ー>デプロイー>環境変数の設定という流れです。(※環境変数の設定では、各自で用意したConsumer keyやAccess tokenなどに変えてください。)
> heroku login > heroku create > git pugh heroku master > heroku config:set CONSUMER_KEY="consumer_key" CONSUMER_SECRET="consumer_secret" ACCESS_TOKEN="access_token" ACCESS_TOKEN_SECRET="access_token_secret" > heroku ps:scale clock=1
heroku ps:scale clock=1
実行するとアプリケーションが起動します。
アプリケーションを停止するには次のようにします。
> heroku ps:scale clock=0
コードを更新後は、以下のようにします。環境変数は再度設定する必要はありません。
> git add . もしくは git add ファイル名 とか git add *.py > git commit -a -m "任意のコメント" > git push heroku master
> heroku ps:scale clock=1
以上がTwitter botをHerokuにデプロイする方法になります。
Q&A
タイムゾーンを変更したい。
タイムゾーンを変更するには
> heroku config:add TZ=Asia/Tokyo
変更できたか確認するには
> heroku run bash
$ date
bashから抜け出すにはexit
。
無料版だと何時間使える?
2019年3月24日時点では550時間無料で使えるようです。
クレジットカードを登録すれば450時間追加されるので1ヵ月で最大1000時間無料で使えます。ただし、ひとつのアプリケーションではなくすべてのアプリケーションで1000時間です。