Webサービスの作成
Webサービスとは?
Webサービスに関する動画もご参考ください。
RapidMinerでは、WebサービスはURLを使用して呼び出すことができるプロセスを意味します。このURLは以下のようなRapidMiner Serverへのリンクです。
http://RMServerHost:8080/api/rest/process/YourServiceName?customerID=3
URLは入力としてクエリパラメータを取ることができます。この例ではcustomerID=3がクエリパラメータとなります。また、返却される結果のフォーマットは以下のようなものから選択することができます。
・JSON
・XML
・HTML
・OData
・その他
結果を見るには、登録されたユーザーとして承認されなければなりません。あるいはRapidMiner Serverが匿名ユーザー(anonymous user)によるクエリを受け付ける設定をする必要があります。匿名ユーザーが使用可能なWebサービスのURLは以下の形式のようになります。
http://RMServerHost:8080/api/rest/public/process/YourServiceName?customerID=3
このURLはpublicを参照しています。
しかし一般的なWebサービスでは、このURLを自分自身で呼び出しません。アプリケーションを構築し、そのアプリケーションがURLを呼び出します。アプリケーションはトークンを使用して承認し、URLを呼び出します。Webサービスは簡単にWebページや他のアプリケーションに組み込むことができます。HTTP経由でRapidMinerのプロセスの結果を提供することができます。
始める前に
Webサービスの作成を始める前に以下の点を確認してください。
・RapidMiner Serverがインストール、設定済みであること
・RapidMiner Studioがリモートリポジトリに接続されていること
・Webサービスとして実行したいプロセスがサーバーリポジトリに保存されていること
・必要なデータがプロセス上で一番上の結果ポート(“res”)へ接続されているか。Webサービスは一番上のポートから出力されるデータのみ返却します。
まだWebサービスとして実行したいプロセスを作成していない場合、あるいはそのようなプロセスの構築方法がわからない場合は次の例を試してみてください。予知保全(Predictive Maintenance)では、Webサービスとして実行する2つのプロセスを構築します。
手順
Webサービスを作成するために、動画での説明もご参考ください。このビデオにはRapidMiner Serverへの公開アクセスを提供する際の、匿名ユーザーとセキュリティに関する注意事項が含まれています。
予知保全(Predictive Maintenance)の最後に、2つのプロセスをRapidMiner Serverリポジトリに保存します。
・Predictive_Maintenance_web_service_without_parameters
”Machine ID”の全ての値について故障の確率を予測します。このプロセスはマクロを使用しておらず、URLはクエリパラメータを含んでいません。
・Predictive_Maintenance_web_service_with_parameters
“Machine ID”の特定の値について故障の確率を予測します。このプロセスはマクロを使用しており、Webサービスを作成する際にURLは特定の”Machine ID”に関するクエリパラメータを含みます。
両方のプロセスについてWebサービスを以下の手順で作成します。
1.Webサービスを作成します。以下の方法から一つ選択してください。
・RapidMiner Studioのサーバーリポジトリでプロセスを右クリックし、Browseを選択してリポジトリブラウザを開きます。Export as Web Serviceをクリックしてください。
・RapidMiner ServerでRepository>Browse Repositoryを選択し、対象のプロセスを選択します。Export as Web Serviceをクリックしてください。
・RapidMiner ServerでProcesses>Web Servicesを選択し、Create new web serviceをクリックしてください。
対象のプロセスを直接選択できるため、一番上の方法が最も良いでしょう。
以下の画像は2つ目のプロセス(Predictive_Maintenance_web_service_with_parameters)のEdit Web Serviceダイアログを表示しています。RapidMiner Serverはこのプロセスのマクロを自動的に発見し、URL query parameterへ同じ名前を割り当てます。なおクエリパラメータを好きな名前に変更することも可能です。また、Service IDも変更することができます(Create new web serviceから操作した場合)。Service IDはプロセス名と同じ名前にする必要はありません。一方で、Data sourceはRapidMiner Server上のプロセスを選択しなければいけません。またマクロ名はプロセス内で使用したものと同じ名前を使用する必要があります。Output formatのドロップリストにはたくさんのオプションが存在します。この例では”JSON”を選択します。それに応じてMIME-typeも設定されます。
2.Webサービスを編集します。以下のフィールドが入力されているか確認してください。
・Service ID : Webサービスの名前。URLに反映されます。プロセス名と同じにする必要はありません。
・Data source : RapidMiner Server上のプロセスのロケーション
・Output format : JSON, XML, HTML, ODataなどの出力フォーマット
・Parameter binding : URLクエリパラメータが存在する場合、マクロ名と同じ名前である必要はありません。
3.SubmitをクリックしてプロセスをWebサービスとして保存してください。
Processes>Web Servicesのページでは利用可能なWebサービスがリスト表示されています。ここでWebサービスを検証、編集あるいは削除することができます。
パラメータあり
Predictive_Maintenance_web_service_with_parametersをJSONの出力でテストすると、以下の結果が得られます。URL query parameterの機能を検証するには値を変更してTestをクリックしてください。
Webサービスが準備できたら、ページの右側にあるDirect Linkを使用してブラウザからWebサービスを呼び出すことができます。あるいはEmbedded HTML Codeの説明にしたがって、<iframe>に組み込むことができます。
RapidMiner Serverをローカルで実行している場合は、以下の形式でURLが作成されます。
http://localhost:8080/api/rest/process/Predictive_Maintenance_web_service_with_parameters?machineID=M_0221
一般的には、localhostはRapidMiner Serverのホスト名に置き換えられます。Webサービスを作成する際にService IDを”needs-repair”などに設定した場合は、以下のようなURLが生成されます。
http://localhost:8080/api/rest/process/needs-repair?machineID=M_0221
どちらの場合でもJSONでの出力は以下のようになっています。
{
"Machine_ID":"M_0221",
"confidence(no)":0.10256410256410256,
"confidence(yes)":0.8974358974358979,
"prediction(Failure)":"yes"
}
パラメータなし
Predictive_Maintenance_web_service_parametersをテーブル形式での出力でテストすると、以下の結果が得られます。
Webサービスが準備できたら、ページの右側にあるDirect Linkを使用してブラウザからWebサービスを呼び出すことができます。あるいはEmbedded HTML Codeの説明にしたがって、<iframe>に組み込むことができます。
RapidMiner Serverをローカルで実行している場合は、以下の形式でURLが作成されます。
http://localhost:8080/api/rest/process/Predictive_Maintenance_web_service_with_parameters?machineID=M_0221
ブラウザはテーブル形式で結果を表示します。