最近 Go 言語にハマってまして、ちょっとしたアプリを作りたくなり、LINEBot を作成しました。 (と言っても、オウム返しですが、、、)
ただ、Go+Heroku だと Gila や govendor といったツールのみドキュメントがあり、 公式の Go Modules がなかったりします。
今回は Go Modules を使ってデプロイまでの過程で詰まったところを記述していきます。 使用する言語とフレームワークについては下記に記載します。
開発言語
Go v1.13
Gin v1.4.0
heroku v7.30.0
書かないこと
LINE developers のアカウント作成と key の取得については明記しません。
公式の Heroku でサンプルボットを作成するを見たり、調べたりするとたくさんでてきます。
構成
.
├── Procfile
├── README.md
├── go.mod
├── go.sum
├── main
└── main.go
手順
適当なディレクトリの中で go mod init を叩きます。
$ go mod init hoge
そうすると、ディレクトリの中に go.mod と言ったファイルが作成されます。 さっきから Go Modules って言ってるですが、簡単にいうとバージョン管理ツールの1つです。 v1.11 から試験的に実装されて、1.13 で取り込まれたそうです。 Go Modules が叩けない方は下記のコマンドを実行してください。
$ export GO111MODULE=on
次に、Procfile を作成します。 注意点としては必ず、bin/から記述するところです。 今回の場合、bin なしだと動きません。
web: bin/hogehoge
環境変数設定
$ heroku config:set CHANNEL_SECRET="xxxxxxxxxx"
$ heroku config:set CHANNEL_ACCESS_TOKEN="xxxxxxxxxx"
ソースコード内に環境変数を置くのは github やチーム開発で公開する際に、 知られたくないものだと思うので、環境変数にまとめましょう。 Go だけでなく他の言語も同様です。
あとは、適当な Go のコードを書いていつも通り git push heroku master をすれば動きます。