Pythonでオウム返しをするLinebotのエラー対応 

#はじめに
QiitaやWEB上には、オウム返しLinebotの作り方は、たくさんあります。

参考
https://qiita.com/kro/items/67f7510b36945eb9689b
https://www.casleyconsulting.co.jp/blog/engineer/3028/

これらを参考に進めれば、基本作成完了しますが、
Herokuデプロイ時にエラーがたびたび発生し、私が初心者であるが故、エラー解消が結構大変でした。
なので、私が遭遇したエラーについて、対処法を記述していきます。

#開発環境
OS：Widows10
Python3.7.6
Flask1.1.1
line-bot-sdk1.15.0
#準備するファイル群
まず、main.py
サイトに載っているコピペで構わないと思います。
特に書き換えは必要なくいけました。

```python:main.py

from flask import Flask, request, abort
 
from linebot import (
    LineBotApi, WebhookHandler
)
from linebot.exceptions import (
    InvalidSignatureError
)
from linebot.models import (
    MessageEvent, TextMessage, TextSendMessage,
)
import os
 
app = Flask(__name__)
app.debug = False
 
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
 
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
 
@app.route("/callback", methods=['POST'])
def callback():
    signature = request.headers['X-Line-Signature']
 
    body = request.get_data(as_text=True)
    app.logger.info("Request body: " + body)
 
    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        abort(400)
    return 'OK'

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=event.message.text))

if __name__ == "__main__":
    port = int(os.getenv("PORT"))
    app.run(host="0.0.0.0", port=port)
```

次に、Procfile
ここで、かなり時間を食ってしまいました。
まず、ProcfileはProcfile.txtはダメで、拡張子は付けません。
普段、テキストエディタを使用する人は、下記コードを打って、txtファイルで保存してしまいがちです。

作り方は、ターミナルを開いて、

```python:
$ echo web: python main.py > Procfile
```
と打つと、下記のファイルが作成されます。


```python:Procfile
web: python main.py
```

これに気づくのに何時間かかったか。。。

次に、requirements
これは、requirements.txtです。
テキストエディタで下記のように作成します。

```text:requirements.txt
Flask==1.1.1
line-bot-sdk==1.15.0
```

最後に、runtime
これも、runtime.txtです。
テキストエディタで下記のように作成します。

```text:runtime.txt
python-3.7.6
```

これらのファイルを一つのフォルダにまとめれば、準備は完了です。
#デプロイ
LinemessagingAPI,Heroku,Gitのインストールや登録等は省略します。

ターミナルを開いて、先ほどのファイル群が存在するフォルダに移動します。
今回は、line_botというフォルダを作成しました。

```text
$cd C:\Users\user\line_bot
```
デプロイします。

```text
$ git init
$ git add .
$ git commit -m "new commit"
$ git push heroku master
```
#エラーについて

```text
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```
私の場合、アクセストークンと、チャンネルシークレットの入力がうまくできていなかったため、下記を実行

```text
$ heroku config:set YOUR_CHANNEL_ACCESS_TOKEN="アクセストークンの欄の文字列" --app アプリケーション名
$ heroku config:set YOUR_CHANNEL_SECRET="Channel Secretの欄の文字列" --app アプリケーション名
```

```text
Setting YOUR_CHANNEL_ACCESS_TOKEN and restarting ⬢ アプリケーション名... done, v13
YOUR_CHANNEL_ACCESS_TOKEN:
アクセストークンの欄の文字列
```

このように表示されれば登録されています。

次に、

```text
Scaling dynos... !
 !    Couldn't find that process type (web).
```
この場合、

```text
heroku ps:scale web=1
```

を入力するとエラー回避できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/512194/8e08fba5-d546-9d57-5b3c-29e4f21a15bb.png)


#総括
エラーに関して、ファイルを準備する段階でタイプミスがほとんどでした。
ファイルを準備する際には、細心の注意を払い、大文字小文字などのスペルミスに注意して準備してください。

初めての投稿で、へたくそでしたが
最後までお読みいただきありがとうございました。
もう少し、きちんと書くべきでした。

この記事が少しでも誰かのお役に立てれば幸いです。