いろいろワカラなくていいから取り急ぎPythonのWebアプリをherokuに置きたいときにやること

# はじめに
> ○「有限会社チャボット」オフィス・中（夜）
> 　　　骨喰(23)と三日月(26)だけがいる。
> 　　　出口に向かう三日月が話しかける。
> 三日月「明日のデモ頼むよ。客のシステムと
> 　連携するのが『チャボット』のウリだから」
> 骨喰「PythonでWebアプリ作って、連携でき
> 　るようにしときましたから。見ます？」
> 　　　骨喰、キーボードを叩く。PCの画面に
> 　　　会話が表示される。骨喰が発話すると、
> 　　　発話から助詞が抜かれカタカナに変換
> 　　　されたものが『チャボット』から返る。
> 骨喰「自然言語処理部分がお客さまシステム
> 　の想定です」
> 三日月「これならいけるわ。じゃ、明日、よ
> 　ろしく……お前さ」
> 　　　三日月、骨喰の服を上から下まで見る。
> 骨喰「さすがにスーツで行きますよ」
> 三日月「そっか、じゃ、明日！」
> 　　　三日月、少し進んだところで振り返り、
> 三日月「そのPythonで作った奴って、イン
> 　ターネットからアクセスできんの？」
> 骨喰「……いえ、社内からだけですけど」
> 三日月「それ駄目だろ。明日の客先デモは社
> 　内ネットにアクセスなんてできねえぞ」
> 骨喰「え？」
> 三日月「社外からもアクセスできるようにし
> 　といて。チャチャッと。客んとこ朝10時だ
> 　から。遅れんなよ！」
> 　　　三日月、出ていく。骨喰、何か言いた
> 　　　げだが言えず時計を見る。11時30分。
> 　　　慌てた手付きで終電を調べる。12時。
> 骨喰「てつ……や？」
> 　　　骨喰、自分の服を見て、
> 骨喰「いや、駄目だ」
> 　　　骨喰キーボードを叩く。画面にHeroku
> 　　　が表示される。骨喰、爪を噛みながら
> 　　　画面を睨み、
> 骨喰「どうすりゃいいんだよ？」
> 　　　骨喰、画面を見てはクリックしていく、
> 　　　マウスを叩きつけ立ち上がり、大声で、
> 骨喰「結局どうすりゃいいんだって！」
> 　　　骨喰、肩で息をし、腰を下ろし『いろ
> 　　　いろワカラなくていいから取り急ぎ
> 　　　PythonのWebアプリをherokuに置き
> 　　　たいときにやること』と打ち込み、エ
>　　　ンターキーを押す。

こうして骨喰くんがたどり着いたのがこの記事です。
取り急ぎPythonで書かれたWebアプリをherokuにデプロイする方法を説明します。

# 必要なもの
* ローカルで動作するPytyonで書かれたWebアプリ（この記事では`hello_bottle.py`とします）
* Git

<details><summary>hello_bottle.py（クリックで展開）</summary><div>

```python:hello_bottle.py
import os
from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
```
を使いました。`pip install bottle`した後に`python hello_bottle.py`とすればWebアプリが起動します。
起動した状態で、ブラウザから`http://localhost:8080/hello/sgigagaeru`にアクセスすれば画面に`Hello sgigagaeru!`と表示されます。</div></details>

# 1. Procfileを作る

```text:Procfile
web: python hello_bottle.py
```
Webアプリを起動するコマンドをProcfileに書きます。
`web:`のあとにWebアプリを起動するコマンドを書きます。
`hello_bottle.py`と同じディレクトリに入れて下さい。

# 2. requirements.txtを作る

```text:requirements.txt
bottle
```
必要なライブラリがある場合は`requirements.txt`に書きます。
この記事の例では`bottle`ライブラリが必要なので、それを書きます。

# 3-0. Herokuアカウントを作る
Herokuのアカウントを持っていない場合は[サインアップページ](https://signup.heroku.com/login "Herokuのサインアップページへのリンク")から作成します。

# 3. Herokuアプリを作る
Herokuにログインするとダッシュボードが表示されます。
右上の「New」から「Create new app」を選んでアプリを作成します。
<details><summary>「Create new app」は右上にあります（クリックで画面イメージが出ます）</summary>
![dashboard.heroku.com_auth_heroku_callback_code=8c453a6f-0230-4efe-b6c5-6b25baab9190.png](https://qiita-image-store.s3.amazonaws.com/0/361903/e4232a79-5d6d-d131-1072-737c15afbedc.png)</details><details><summary>好きなアプリ名を付けます（クリックで画面イメージが出ます）</summary>![dashboard.heroku.com_auth_heroku_callback_code=8c453a6f-0230-4efe-b6c5-6b25baab9190 (1).png](https://qiita-image-store.s3.amazonaws.com/0/361903/e6414779-ad98-da7c-853a-322d3fc362b3.png)</details>
今回はアプリ名は`sgigagaeru`にしました。
アプリ名に`.herokuapp.com`を加えたURLで、デプロイしたWebアプリにアクセスできるようになります。今回の場合だと`sgigagaeru.herokuapp.com`です。

# 4. "Deploy using Heroku Git"にしたがってやれば完了
![dashboard.heroku.com_apps_sgigagaeru_deploy_heroku-git.png](https://qiita-image-store.s3.amazonaws.com/0/361903/8d17478a-1fc5-6813-9091-dd7871c784aa.png)
アプリ作成が終わるとこのページが表示されます。
下の方に"Deploy using Heroku Git"とあり、ここに書かれている通りにやると完了です。

## 4-1. Heroku CLIのインストール
インストールしていない場合は、画面の指示にしたがってインストールして下さい。

## 4-2. Heroku login
ログインがまだの場合は`heroku login`と入力してログインします。

```text
$ heroku login
heroku: Press any key to open up the browser to login or q to exit: 
```
上の内容が表示されたら、なにかキーを押して下さい。
ブラウザにHerokuのページが表示され、ログインを求められます。
ブラウザでログインすると、コマンドラインでのログインも完了になります。

# 4-3. Git
`hello_bottle.py`のあるディレクトリに移動して下さい。
ファイル構成は下のようになっているはずです。

```text:
.
├── Procfile
├── hello_bottle.py
└── requirements.txt
```
あとはページの指示通りにGitコマンドを打っていけば完了です。

```text:
$ git init
$ heroku git:remote -a sgigagaeru
$ git add .
$ git commit -am "make it better"
$ git push heroku master
```
`sgigagaeru`は作成したアプリ名に変えて下さい。
`https://sgigagaeru.herokuapp.com/hello/sgigagaeru`にアクセスしてみましょう。
`Hello sgigagaeru!`と表示されます。

# おわりに
《映画刀剣乱舞》は日本映画史に残すべき佳作だと思いました。