ngrokはWindows/Mac OSX/Linux用のオープンソース・ソフトウェア(Apache License 2.0)です。

自分のローカルで作っているサイトを誰かに見せたいと思ったことはないでしょうか。社内であればLANを使ってアクセスもできるでしょうが、ルータ越しではそう簡単ではありません。しかしngrokを使えばとても簡単に一時的な公開が実現できます。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.15.02_thumb.1372854682.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.15.02.1372854682.png)
実行しました。引数として何番のポートを見せたいか指定します。例えば3000や8080、80などです。そうするとインターネットからアクセスするためのURLが生成されます。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.18.37_thumb.1372854686.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.18.37.1372854686.png)
管理画面にアクセスすると指定したポートへアクセスした結果が表示されます。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.19.08_thumb.1372854690.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.19.08.1372854690.png)
外部からアクセスするとログがリアルタイムに流れていきます。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.19.19_thumb.1372854695.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.19.19.1372854695.png)
ヘッダーなども閲覧できます。

[![](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.18.56_thumb.1372854700.png)](http://images.moongift.jp/2013/07/Screenshot 2013-07-03 21.18.56.1372854700.png)
サーバにもログが出ています。

仕組みとしてはngrokが提供するWebサーバ(ngrok.com)とローカル間がngrokを通じて接続され、指定されたngrok.comへのアクセスを受け取ってローカルのコンテンツを返却しているのでしょう。ローカルで開発しつつ、ちょっと動作を確認してもらいたいといった時にこれは便利な仕組みです。

MOONGIFTはこう見る

ngrok.comではさらにユーザ登録することでHTTPSを使った通信、サブドメイン指定、Basic認証などが提供されるようになります。同様の仕組みとしてはProxyLocal GemPagekiteがあります。ちょっと昔であればダイナミックDNSがこの役割とも言えました。

今ではソケット通信を使ってオンライン上へのリクエストをリアルタイムに処理して返却するのも難しくなくなっています。開発用途はもちろん、相手にちょっと自分のローカル環境で試して欲しいといった時にすぐに使えて便利です。あえてユーザ登録したりする手間もないので今のうちに準備しておくと使える場面もあるのではないでしょうか。

ngrok - secure introspectable tunnels to localhost

inconshreveable/ngrok