Alteryx 2018.1新機能 : Python SDKで任意のライブラリを使う

こんにちは、小澤です。

今回は、この2018.1のアップデートで追加された機能であるツールごとに任意のライブラリを利用する方法について解説したいと思います。

Python SDKの実体

さて、このPython SDKの実体ですが、 <alteryxのインストールフォルダ>\bin\Miniconda3 にあります(これは、Alteryx Designer本体と一緒にインストールされます)。

フォルダ名からもわかるかと思いますが、Minicondaが内包されている感じになっています。

11.8まではデフォルトで以下の2つのライブラリがインストールされており、 それ以外のものを利用する場合はpipやcondaコマンドでインストールする必要がありました。

  • numpy-1.13.1
  • requests-2.12.4

これは同伴されているMiniconda環境そのものに入れることになります。 Python SDKを利用しているほかのツールと依存ライブラリのバージョンが競合したら大変ですし、ほかの人にツールを使ってもらう際に必要なライブラリは別途インストールしてもらう必要があるなど、開発環境としてはありがちな問題がありました。

2018.1から実現した仕組み

この問題を解決するために、2018.1からはvenv環境を利用できるようになりました。 venvそのものについてはここでは解説しませんので、詳しく知りたい方は公式ドキュメントなどをご参照ください。

2018.1以降のPython SDKでは作成するツールごとにこのvenv環境を構築したのち、その環境を使ってツールの作成をしていきます。

venv環境を作る

というわけで、venv環境を作ります。 Alteryxでは作成したものをツールとして認識させるには特定のパスに置く必要があるので、環境作成の際にそのパスを指定します。

パスとしては、以下の2つのうちどちらかになります

パス 用途
C:\ProgramData\Alteryx\Tools\ 全ユーザが共通で使えるツールを配置するためのパス
C:\Users\<ユーザ名>\AppData\Roaming\Alteryx\Tools\ExamplePythonSDKTool 特定のユーザのみが利用可能なツールのパス

なお、システムのパスのフォルダは過去にyxiファイルを管理者でインストールするなどしていないと作成されていない可能性があります。

実際のvenv作成は、Alteryxに同伴されているPythonを使って作成します。

C:\Program Files\Alteryx\bin\Miniconda3>python -m venv C:\ProgramData\Alteryx\Tools\PythonTestTool

のように作成します。 作成されたPythonTestTool内には以下の3つのフォルダと1つのファイルが作成されています。

  • Include
  • Lib
  • Scripts
  • pyvenv.cfg

この状態で作成されたに移動してactivateします。

C:\Program Files\Alteryx\bin\Miniconda3>cd C:\ProgramData\Alteryx\Tools\PythonTestTool
C:\ProgramData\Alteryx\Tools\PythonTestTool>Scripts/activate
(PythonTestTool)C:\ProgramData\Alteryx\Tools\PythonTestTool>

この環境に必要なライブラリをpipでインストールできます。

(PythonTestTool)C:\ProgramData\Alteryx\Tools\PythonTestTool>pip install pandas

あとは、これまでこのシリーズで解説してきたようなやり方でPythonプログラムを実装していくだけです。 なお、venv環境は既に存在するフォルダを指定して作成も可能なので、Tool GeneratorでAlteryx SDKのひな型を先に作成して、そのフォルダにvenv環境を作るというやり方も可能です。

yxiファイルで他の人にツールを配布する

さて、このようにして作成したツールをいろいろな人で使いまわしたい時のことを考えましょう。 この時、依存ライブラリはどのようにして配布すればいいのでしょうか?全部をまとめてzipで?いえいえ、そんなことはしません。

Python SDKを使ったツールではrequirements.txtというファイルを配置したyxiファイルを作成します。 yxiファイルをインストールする際に、ツール固有のvenv環境作成と依存ライブラリのインストールが自動で行われるというわけです。

まず、requirements.txtファイルを作成するには以下のようにします。

(PythonTestTool)C:\ProgramData\Alteryx\Tools\PythonTestTool>pip freeze > requirements.txt

requirements.txtの中身は以下のような依存ライブラリとそのバージョンが列挙されたものになっています。

numpy==1.14.1
pandas==0.22.0
python-dateutil==2.6.1
pytz==2018.3
six==1.11.0

作成したツールの各種ファイルと合わせて以下のようなファイルがある状態になっているかと思います。

  • Includeフォルダ
  • Libフォルダ
  • Scriptsフォルダ
  • pip-selfcheck.json
  • pyvenv.cfg
  • ツールのConfigファイル
  • 作成したPythonのプログラム
  • HTML GUIのファイル
  • (HTML GUIに関連したjsやcssファイル)
  • ツールのアイコン画像ファイル
  • requirements.txt

依存ライブラリそのものは配布しないので、yxiファイルを作成するにあたって上から5つは必要ありません。 yxiファイル作成用のフォルダを作って、以下のような構成します。

PythonSDKTestフォルダ内はここまでで登場した要素ですが、外側のConfig.xmlは初登場ですね。 これはyxiファイルの設定となっています。

この記事で紹介している、Tool Installerの画面に表示される説明文や画像の設定を外側のConfig.xmlで行っています。 Alteryxではyxiファイルを使ったツールのインストールの際にまずこの情報が参照される仕組みになっています。

必要なファイルが整ったら、zipで圧縮します。 圧縮の際は、Config.xmlなどのファイルがトップの階層になるようにしてください。 作成されたzipファイルの拡張子をyxiに変換すれば、完了です。

ダブルクリックすることで、以下のようにインストーラが起動することが確認できます。

インストールを行うと、その場でvenvの作成と依存ライブラリの取得が行われるため時間がかかる場合があります。 インストールが完了すると、設定したカテゴリにツールが表示されているのが確認できます。

おわりに

今回は、Alteryx2018.1からの新機能でPython SDKの依存ライブラリを管理する方法を紹介しました。

これで、データ分析に利用するライブラリなどが利用できるようになりかなり便利になるのではないでしょうか。

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

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

alteryx_960x400