line-bot-sdk-goとngrokを使ってline-botのおうむ返しをローカルで作ってみた

# line-bot-sdk-goとngrokを使用して爆速でおうむ返しbotを作ってみました。

## 初めにline-bot-sdk-goとngrokとは？
[line-bot-sdk-go](https://github.com/line/line-bot-sdk-go)
>LINE Messaging API SDK for Goを使用すると、LINE Messaging APIを使用してボットを簡単に開発できます。また、サンプルボットを数分で作成できます。

nglok
>ローカルPC上で稼働しているネットワーク（TCP）サービスを外部公開できるサービスです。例えば、ローカルPCのWebサーバを外部公開することができます。
>httpsの通信も可能になっているので、ローカル環境でline-botの稼働確認ができます。

## 作業手順
1.Line Developersに登録する
2.LineSDKのインストール
3.SDKのソースをLINE Developersの「Channel Secret」「アクセストークン」とngrokで指定する「ポート番号」に変更
4.ngrokのインストールと実行
5.LINE DevelopersのWebhookURLの設定

## 各手順の説明をします

## 1.Line Developersに登録
- 1.[line Developers](https://at.line.me/jp/)
- 2.[LINE@MANEGERにログインする](https://admin-official.line.me/)

## 2.LineSDKのインストール
`$ go get github.com/line/line-bot-sdk-go/linebot`
インストールするとGOPATHで指定しているパスにインストールされる。

## GOPATHの確認方法
`$ echo $GOPATH`

## 3.SDKのソースをLINE Developersの「Channel Secret」「アクセストークン」とngrokで指定する「ポート番号」に変更
/Users/HOME/go/src/github.com/line/line-bot-sdk-go/examples/echo_bot/server.goの25行目-32行目にあるシークレットキーとトークンをLine Developersで準備したアカウントの情報に変更する。

修正前：

```
func main() {
    bot, err := linebot.New(
        os.Getenv("CHANNEL_SECRET"),
        os.Getenv("CHANNEL_TOKEN"),
    )
    if err != nil {
        log.Fatal(err)
    }
```

修正後：

```
func main() {
	bot, err := linebot.New(
		"6------------------d", // Channel Secret 
		"To-----------------=", // アクセストークン（ロングターム）
	)
	if err != nil {
		log.Fatal(err)
	}
```
58行目のポートの指定をngrokで指定する想定のポートに変更する。
修正前：

```
// This is just sample code.
// For actual use, you must support HTTPS by using `ListenAndServeTLS`, a reverse proxy or something else.
if err := http.ListenAndServe(":"+os.Getenv("PORT"), nil); err != nil {
  log.Fatal(err)
}
```
修正後：

```
	// This is just sample code.
	// For actual use, you must support HTTPS by using `ListenAndServeTLS`, a reverse proxy or something else.
	if err := http.ListenAndServe(":8080", nil); err != nil {
		log.Fatal(err)
	}
```

## goファイルの実行
` $ go run server.go`

## 4.ngrokのインストール
`$ brew install ngrok`
## 上記コマンドでエラーとなる場合
`$ brew cask install ngrok`

## ngrokの実行
`$ ngrok http 8080`

```
ngrok by @inconshreveable                                       (Ctrl+C to quit)
                                                                                
Session Status                online                                            
Session Expires               7 hours, 59 minutes                               
Version                       2.3.29                                            
Region                        United States (us)                                
Web Interface                 http://127.0.0.1:4040                             
Forwarding                    http://f29d8728.ngrok.io -> http://localhost:8080 
Forwarding                    https://f29d8728.ngrok.io -> http://localhost:8080
                                                                                
Connections                   ttl     opn     rt1     rt5     p50     p90       
                              0       0       0.00    0.00    0.00    0.00   
```

## 5.LINE DevelopersのWebhookURLの設定
LINE DevelopersのWebhookURLにngrokを起動した際に作成された`https://f29d8728.ngrok.io/callback`を指定する。このときURLに`/callback`の指定が漏れないようにすること。
Webhook送信は「利用する」にすること。

## 完成
これでline-botの完成です！作ったアカウントを友達登録してお手持ちのスマートフォンからトークを送ってください。

## まとめ
既に出ている色々な記事を参考にさせていただいて実装しました。この投稿が誰かの役にたてば嬉しいです。