Webサービスの作成
webサービスとは?
webサービスの紹介動画もご覧ください。
RapidMinerの文脈において、webサービスとは、URLを使用して呼び出すことができるプロセスのことを指します。URLはRapidMiner AI Hubへのリンクであり、以下のようなものです。
http://RMServerHost:8080/api/rest/process/YourServiceName?customerID=3
URLは入力としてクエリパラメータ(この例ではcustomerID=3)を取得することができ、結果は以下のような任意のフォーマットで送信されます。
- JSON
- XML
- HTML
- OData
- その他
結果を表示するには、登録ユーザーとして自身を認証するか、RapidMiner AI Hubが匿名ユーザーによるクエリを受け入れるように設定されている必要があります。匿名ユーザーが利用できるwebサービスのURLは、以下のような少し変わった形になります。
http://RMServerHost:8080/api/rest/public/process/YourServiceName?customerID=3
URLのpublicへの参照に注目してください。
典型的なwebサービスのシナリオでは、このURLを自分で呼び出すことはありません。何らかの有用な目的を果たすためにアプリを作成し、アプリがトークンを介し自身を認証してURLを呼び出します。webサービスはwebページや他のアプリケーションに簡単に埋め込むことができます。これにより、HTTP経由でRapidMinerプロセスの結果を提供することが可能になります。
始める前に
webサービスを作成する前に、以下のことを確認してください。
- RapidMiner AI Hubがインストールされている。
- RapidMiner Studioがリモートリポジトリに接続されている。
- webサービスとして実装するプロセスがリモートリポジトリに保存されている。
- プロセスは、必要なデータが一番目の結果(“res”)ポートに送信されるように設計されている。webサービスは一番目のポートからのみデータを返します。
webサービスとして実装するプロセスがまだない場合や、そのようなプロセスを構築する方法がわからない場合は、例を見ながら作業すると便利です。予知保全では、このドキュメントでwebサービスとして実装されている2つのプロセスを実際に構築しています。
段階的な手順
匿名ユーザーの説明や、RapidMiner AI Hubへのパブリックアクセスを提供する際に必要なセキュリティ上の注意事項を含む、webサービスの作成に関する紹介動画も参照してください。
予知保全の最後で、2つの新しいプロセスをRapidMiner AI Hubのリポジトリに保存します。
- 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を選択してRapidMiner AI Hubのリポジトリブラウザを開きます。Export as Web Serviceをクリックします。
- RapidMiner AI Hub上で、Repository > Repositoryを選択し、対象のプロセスに移動して選択し、Export as Web Serviceをクリックします。
- RapidMiner AI Hub上で、Processes > Web Servicesを選択し、Create new web serviceをクリックします。
これらのうち、対象のプロセスを直接選択するため、1番目の方法がおそらく最適です。
以下のスクリーンショットは、二つ目のプロセスであるPredictive_Maintenance_web_service_with_parametersのEdit Web Serviceダイアログを示しています。RapidMiner AI Hubはこのプロセスでマクロを自動的に検出し、同じ名前のURLクエリパラメータを割り当てていることに注目してください。必要に応じて、クエリパラメータを変更することができます。また、Service IDはプロセス名と同じである必要はないため、変更することもできます。ただし、Data sourceはRapidMiner AI Hubのプロセスを正確に特定し、マクロ名はそのプロセスで書かれたものと同じでなければなりません。Output formatのドロップリストを見ると、多数のオプションがあることがわかります。この例では、”JSON”を選択しています。RapidMiner AI Hubは、それに応じてMIMEタイプを設定します。
2.webサービスを編集します。次のフィールドに入力してください。
- Service ID: URLに表示されるwebサービスの名前。プロセス名と同じである必要はありません。
- Data source: RapidMiner AI Hubのプロセスの場所。
- Output format: 出力形式。選択肢には、JSON、XML、HTML、ODataなどがあります。
- Parameter binding: URLクエリパラメータが存在する場合、マクロ名と同じである必要はありません。
3.Submitをクリックして、プロセスを webサービスとして保存します。
次に開くページ(Processes > Web Services)には、利用可能なwebサービスがIDごとに一覧表示されます。ここでは、webサービスをテストし、必要に応じて、webサービスを編集することができます。また、削除することもできます。
パラメータがある場合
Predictive_Maintenance_web_service_with_parametersサービスをJSON出力でテストすると、以下のような結果になります。URL query parameterの機能をテストするには、値を変更してTestをクリックします。
webサービスの準備ができたら、ページ右側に表示されているDirect Linkを使用してブラウザから呼び出すことができ、またはEmbeddable HTML Codeの指示に従って、結果を<iframe>に埋め込むこともできます。
パソコン上のローカルな環境でRapidMiner AI Hubを実行している場合、URLは以下の形式になります。
http://localhost:8080/api/rest/process/Predictive_Maintenance_web_service_with_parameters?machineID=M_0221
一般的に、localhostはRapidMiner AI Hubのホスト名に置き換えられます。webサービスを作成する際に、webサービス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_without_parametersサービスをTable出力でテストすると、以下のような結果になります。
再び、webサービスの準備ができたら、ページ右側に表示されているDirect Linkを使用してブラウザから呼び出すことができ、またはEmbeddable HTML Codeの指示に従って、結果を<iframe>に埋め込むこともできます。
パソコン上のローカルな環境でRapidMiner AI Hubを実行している場合、URLは以下の形式になります。
http://localhost:8080/api/rest/process/Predictive_Maintenance_web_service_without_parameters
そしてブラウザーは結果をテーブルで表示します。