AlteryxのRツールを使う際にライブラリを自動的にインストールする

こんにちは、小澤です。

AlteryxのRツール、便利ですよねぇ...え?あまり使ってない?

Alteryxではコーディング不要でほとんどのことができてしまうので、Rで実装された統計や機械学習の便利なライブラリを使うようなシーンを除いてあまりRツールの出番は多くありません。 とはいえ、Rの特徴でもある豊富なライブラリを利用した方が楽できる場面もあります。 標準で含まれるPredictive系のツールなども内部でRを使ってるように、専門知識がないと実装できないようなものも多くあります。

今回は、そんなRの便利ライブラリをAlteryxから使う際の話をしたいと思います。

RのライブラリとAlteryx

Rの特徴の1つして、豊富なライブラリの存在があげられます。 CRANを漁れば数千ものライブラリがありますし、devtoolsを使ってGithubにあるライブラリを入れたりすることが可能です。

そんなRのライブラリですが、使う前にインストールが必要なため、Alteryxから利用する際には ワークフローを実行可能な状態にするまでのプロセスでAlteryx外での作業が必要になってしまいます。 Rツールを使いこなしている人ならまだしもそうでない人にその作業をしてもらうのもなかなか酷な話です。

Alteryxでは、標準で含まれるツールから利用するものなど、初期状態でも多くのライブラリがインストールされています。 また、ライブラリをインストールするためのAppもGalleryで公開されています。

このAppを使えばだいぶ楽はできますが、それでもワークフローの作成者から依存しているライブラリを聞いて、インストールしてようやく実行できるようになる...と、ワークフローを実行したいだけなのになかなか面倒ですね。 あわよくばもらったワークフローはそのまま実行できるようになっていて欲しいです。

そんな要望にも答える方法が2つほどあります。 それらを見ていきましょう

Rの機能を使って実現する

まずは、Rの機能を使っていちいち利用者がライブラリをインストールしなくてよくなるワークフローを作成する方法を見てみます。

Rでは、ライブラリを読み込む方法にlibrary関数とrequire関数の2つがあります。 require関数では読み込めたか否かをTRUE/FALSEで返すので、この仕組みを利用して読み込みに失敗した(=インストールされていない)場合はインストールを行います。

# CRANのミラーサイトを指定
options(repos="http://cran.ism.ac.jp/")

# require関数でライブラリを読み込んでみる
if (!require(xgboost)) {
  # 失敗したらインストールして再度読み込む
  install.packages("xgboost")
  require(xgboost)
}

Rツール内のライブラリを読み込んでいる部分をこれに書き換えることで実現できます(ミラーサイト指定は最初の1回のみでいいです)。 Alteryx内でインストールしたライブラリは %APPDATA%\Alteryx\R-library に入っています。 そのため、以下の2点に注意が必要です。

  • インストールしたユーザからしか使えない
  • Alteryx外のR環境から使えない

後者はRのスクリプトをAlteryx外の環境で開発している場合などで混乱しかねないので気をつけてください。

マクロにして配布する

先ほどは、Rの機能を使ってパッケージのインストールを行いました。 その中で、インストール先は %APPDATA%\Alteryx\R-library と書きましたが、実はこのフォルダに入ってさえいればインストール方法はなんでもいいのです。 なので、他のフォルダからコピーしたりなんかでも対応可能です(※ インストール時にコンパイルが必要なものには注意してください)。

さて、ここでAlteryxのyxiファイルが登場します。 yxiファイルそのものについては以下をご覧ください。

Rを使っている部分をマクロにしてしまって、yxiファイルとして配布することでライブラリもセットで配布することが可能なのです。

やり方はいたって簡単です。 yxiファイルの中身にR-libraryというフォルダを作り、その中にライブラリを入れます。

図中の上側は作成したマクロを入れるフォルダになっています。 従来のyxiファイル作成時と同様この中にマクロを配置します。HTML GUIを利用する場合はこの中にそれらを構成するファイルを配置していきます。 また、従来のyxiファイルと同様、実際のツールが入ったフォルダが複数あっても問題ありません。

下側がRの依存ライブラリを入れるR-libraryフォルダになります。 このフォルダは最上位の階層に置くので、yxiの中に複数のツールがある場合でも共通して利用可能です。

この配置にした上で、yxiファイルからツールをインストールすると依存ライブラリが %APPDATA%\Alteryx\R-library 配下にコピーされます。

なお、R-library以下のファイルが全て依存ライブラリとしてコピーされるわけではありません。 この機能はRツールでのライブラリ読み込みをしている部分を見て、実際に使っているもののみをコピーするようです。

%APPDATA%\Alteryx\R-library にライブラリがコピーされればあとはツールをワークフロー中で使うに際して別途ライブラリのインストールは必要なくなります。

おわりに

今回は、Rツールを使うに際しての依存ライブラリの扱いについて解説しました。

Python SDKの時なんかもそうでしたが、プログラムを使ったツールを作成する際にはどうしても依存ライブラリをどのように扱うかは避けては通れない道になります。 Rツールを使ったワークフローやマクロを利用していて、人によって成功したり失敗したりするなどの状況になった際には今回のようなライブラリ関連のことも確認して見るといいかと思います。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400