LINE Bot開発などをする際には開発サーバーをローカル起動させるだけではなく、起動したサーバーに外部のインターネットからリクエストをもらう必要があるため、ngrokなどでトンネリングする必要がありました。
GitHub Codespacesを使うことで、開発環境自体がクラウドになるためローカルPCのトンネリングは要らず、ボタンを押すだけで公開状態のサーバーを作ることができます。
...が
毎回Publicに変更するのが面倒
node app.js
などでプログラムを起動させた際にローカルサーバーを起動すると、GitHub Codespacesが自動的にアドレスを発行してくれます。このURLをLINE Bot開発の際には管理画面のWebhook URLのアドレスとして利用します。
https://n0bisuke-xxxxxx-xxxxxx-xxxxx-3000.preview.app.github.dev
のようなURLが発行されます。
ただこの際に、
右クリックでメニュー表示 -> ポートの表示範囲 -> Publicを選択
を毎回やらないといけません。
ローカルサーバーのプログラムを起動した際に自動で立ち上がるフォワーディング(ポート転送)の設定が毎回Privateがデフォルトになっているため、コードを直した際に毎回これをやらないといけません。
クソ面倒ですね。
自動転送ではなく自身で指定することで回避
ポートの追加
を自身で一度設定しておくことで回避できました。
(デフォルトをPublicにするような設定もどこかにありそうですが今の所調べられてません)
プログラムを起動する前にポートを指定
node app.js
などでプログラムを起動させる前に、ポートタブからForward a Port
のボタンを押し、3000
などの数字を指定します。
そして表示範囲をPublic
に指定しましょう。
これをやることで、配信元の項目がユーザーによる転送
になります。
(ちなみにプログラムを先に起動させるやり方だとここが"自動転送"になっていて、自動転送だとプログラム編集のたびにPrivateに戻ってしまうようです。)
あとはプログラムを起動させればOKです。
このやり方だと プログラムを修正して再起動してもURLはPublicになったままなので、毎回Publicにしなおさないといけない手間から解放されます。
まとめと補足
結論としては、 ポート指定を先にしてから、開発をしはじめると良いです。
授業でよくこの辺を実施していて、ngrokを使っていた時代はngrokプログラムを起動しっぱなしで公開URLやその設定も変わらずだったので便利でしたが、インストールでそもそもこける人が多かったりしてトラブルが多いポイントでもありました。
最近はGitHub Codespacesでの開発にすることでトラブルは激減しましたが、意外と手間な部分もあるんだなと感じたのが今回でした。結構地味なポイントで気付きにくいポイントだったので実際に触ってみるのはやはり大事ですね。
サーバーもエディタ(VS Code)もGitやGitHub周りも統合された環境なので全て把握できるかというと難しいところはありますが、かなり便利なので使い方をもっと調べていきたいところです。
※ちなみにコードはこちらの記事で利用しているものを使っています。