R言語を使ったWebAPI開発

R言語を使ったWebAPI開発

目次

はじめに
インストール
初期設定
APIの作成
動作確認
終わり

はじめに

最近、R言語を使ったWebAPI開発に携わることがあったので、その時に勉強した内容を記事にしようと思います。
環境は以下で行います。

環境
Windows10
R言語(ver 4.1.0)
RStudio

インストール

まずR言語をインストールします。
以下のURLが公式のダウンロードページなのですが、国別にまた別のサイトに飛ぶ必要があります。
https://cran.r-project.org/mirrors.html

日本では2つのサイトがあるのでに飛ばされるので好きなほうからダウンロードします。
今回の記事では以下のURLからダウンロードします。
https://cran.ism.ac.jp/

以下のような画面が表示されるので、Download For Windowsをクリックします。

次のページではbaseをクリックします。

Download R 4.1.2 for Windowsをクリックしてダウンロードします。

ダウンロードしたファイルをダブルクリックして、インストールを行います。
インストールはキャプチャし忘れたため、画面の内容に従って進めてください。

次にRStudioをインストールします。
RStudioはR言語向けのIDEで、基本的にあると便利なのでインストールしておきます。
以下のURLのDOWNLOAD RSTUDIO FOR WINDOWSをクリックしてファイルをダウンロードします。
https://www.rstudio.com/products/rstudio/download/

初期設定

これで必要なものはダウンロードができたので、APIの製造に入っていきます。
ただその前に1点だけ初期設定をしてきます。
まずはRStudioを起動します。

最初に作業ディレクトリを指定します。
ヘッダーの「Tools」-「Global Options」をクリックします。

ダイアログが開くので「General」ー「Basic」にあるDefault working directory (when not in a project)を入力します。
ここではデスクトップに「Rtest」フォルダを作成して、指定します。

そのままだど作業ディレクトリが以前のままなのでRstudioを一度再起動します。
そうすると右下のフォルダが先ほどしていたフォルダになっているかと思います。

APIの作成

それでは本題のAPIの作成に入っていこうと思います。
R言語でWebAPIを作成する場合、「plumber」というライブラリを使います。
なのでまずはplumberをインストールします。
RStudioの画面のConsoleタブのところで、install.packages(“plumber”)を入力してEnterを押します。
以下の画像のようなメッセージが表示されれば成功です。

次に作業ディレクトリにファイルを「plumber.R」と「run.R」の2ファイルを作成します。
ヘッダーの「File」ー「New File」-「R Script」から新規にファイルを追加できます。

次に「plumber.R」にAPIで処理したい内容を記載します。
ここではHello Wolrdを返すAPIを作ろうと思います。
ソースは以下になります。

#* Hello Wolrdを返すAPI

#* @get /echo
function(){
  list(msg = "Hello World")
}

ここで大事なのが2行目の@get /echoです。
@getはリクエストメソッドを表し、getの場合にこのAPIを使用することができます。
/echoがリクエストURLを指していまして、http://{ドメイン名}/echoのURLにリクエストするとこのAPIを実行されます。
リクエストメソッドがpostの場合やURLが異なる場合はこのAPIは実行されないので注意です。

次にWebサーバーとして起動する処理を「run.R」に書きます。
書くソースは以下になります。

library(plumber)

# 'plumber.R' is the location of the file shown above
pr("plumber.R") %>%
  pr_run(port=8000)

ここで大事なのが1行目のlibrary(plumber)です。
先ほど使用したinstall.Packages(plumber)はplumberをインストールするコマンドなので、実際に使用する場合はインストールしたライブラリを参照する必要があります。

次にpr(“plumber.R”) %>%はAPIの処理が記述されたファイルを指定します。
ここではplumber.Rに記載された処理をAPIとして使用したいので、上記の内容になっております。

最後にpr_run(port=8000)でリクエストを受け付けるportを指定します。
基本的にR言語のWebAPIを使用する場合はどこかのサーバーに同居しておくことが多いと思うので80番ポートではなく8000ポートにしてます。

記述するのは以上になります。

動作確認

最後に動作確認を行いたいと思います。
run.Rに書かれた内容を全て選択して右上のRunをクリックします。
(何も選択していないとlibraryを読むコードが飛ばされます。)

そうするとswaggerのページが表示されるので、ここでAPIに対してリクエスト投げてレスポンスを確認することが出来ます。
(swaggerの使い方は公式サイトをさっと見てみましたがよいページがなかったので、「swagger 使い方」などでググってください。)

リクエストを投げた結果が以下の画像になります。


デバッグするときに全ての行を選択してからする必要があるのが少し気になりますが、もしかしたらもう少しよいデバッグ方法があるかもしれません。

終わり

今回はR言語のWebAPI化なので、plumberを使用しました。
他にWebページ化するライブラリもあるので機会があれば、そちらも触りたいと思います。