RでシンプルにHTTPサーバーを起動させるにはservrパッケージ


PythonでHTTPサーバーを起動させるコマンドを知ったのですが、RユーザーとしてはできるかぎりPythonに依存しない生活を送りたいので、Rでできないものかと探してみたらありました。
ちなみにPythonは下記です。

Python -m SimpleHTTPServer

PythonはさておきRで起動させる場合は下記になります。

install.packages("servr")
library(servr)
servr::httd()

これだけです。すごく簡単ですね。servrの現時点でのバージョンは0.11で、2018年10月23日にリリースされています。更新されたのは割と最近のようです。

起動後に下記のようなログがでてくるので、その中で止め方のコマンドが表示されます。それでプロセスを止めましょう。

To stop the server, run servr::daemon_stop("4473627000") or restart your R session Serving the directory /Users/<user-name>/R/httpserver/httpdocs at http://127.0.0.1:4321

などと、ディレクトリを指定するとそこがルートディレクトリになるので都度引数で指定していきましょう。

servr::httd("httpdocs")

ちなみにプロセスIDを引数に指定しなくても止まったので面倒ならなくても良いかもしれません(が、servr::httd()は複数起動できるので、プロセスIDを指定しない場合は全部プロセスが止まるようです)。

2019/02/08 追記

servr::httdの戻り値がプロセスIDなので、つまるところこちらで良さそうです。

install.packages("servr")
library(servr)
pid <- servr::httd(<HTTP_DOC_ROOT>) # <HTTP_DOC_ROOT>でサーバー起動
servr::daemon_stop(pid) # サーバー終了

2019/02/08 追記終わり

またservr::httwは引数に特定のディレクトリやファイルを指定することでそのファイルを監視し続けてくれるようで、変更があったら自動で切り替えてくれるようです。

servr::server_configでポート番号などが変えられるようです。

R(RStudio)だけで色々とできる幅が増えた気がしました。