Learningの回もこれで最後です。前回の記事では、予測用のExperimentを作成し、Webサービスを公開しました。Studio(以降MLStudio)ではとても簡単に作成することができました。画面からとExcelからの二通りの方法でWebサービスを呼び出す方法をご紹介しました。LearningのWebサービスの作成・使用方法をご紹介します。現在はまだPreviewですが、近い将来にARM対応版のWebサービスが正式版となるでしょう。前回の状態の確認まずは前回記事で作成した状態を確認しましょう。前回の記事では予測用のExperimentを作成しました。experiment」であることを確認し、Experiment全体の実行が正常終了しているかを確認してください。Experiment全体が正常終了となっていることを確認する正常終了していない場合は、RUNボタンをクリックして正常終了させてください。Webサービスをデプロイする(NEW版対応)では今度は新しいWebサービスをデプロイしましょう。Preview」をクリックします。Preview」をクリックするすると新しい画面が立ち上がり、Webサービスポータル画面のWebサービスデプロイ画面が表示されます。この画面ではデプロイするWebサービス名とプランを選択、もしくはプラン新規作成ができます。LearningのWorkspaceを新規作成した時に作成したプラン「mynaviPlan」を選択して「Deploy」をクリックします。Webサービスデプロイ画面が表示しばらく待つと画面が切り替わり、作成したWebサービスのQuickstart画面が表示されます。画面上でTestする画面上で入力値をセットしてWebサービスを実行してみましょう。Request-Response」ボタンをクリックします。入力値はClassicWebサービスの時と同じものを使用します。画面の右側に結果が表示されます。Classicの時と同じ結果なのは当然ですが、かなり見やすくなっています。予測結果が表示されるTestの入力値にサンプル値を表示させることが可能です。Enabled?」をYesにしてSaveしてください。再度Testを開くと、サンプル値が表示されます。Enabled?をYesにしておくことで、この後使用するサンプルソースにもサンプルデータがセットされた状態となり、テストが素早くできるようになります。サンプルアプリでTestするでは最後にWebサービスをアプリケーションから起動してみましょう。メニュー「Consume」を開きます。余談ですがExcelのリンクがあります。これをダウンロードすると前回記事のClassicWebサービス作成とテストでご紹介したExcelによるテストと全く同じことが可能です。「Consume」を開く下へスクロールすると、サンプルソースが表示されます。これを使用してWebサービスを起動します。Studioを起動します。Enterpriseを使用します。無料のCommunityエディションをダウンロードをしてセットアップしてください。プロジェクトを選択します。今回はコンソールアプリケーションでWebサービスを起動してみます。クラシックデスクトップを選択すると、様々なプロジェクトが表示されます。Framework)を選択します。名前と場所、ソリューション名にはお好きな名前と場所を入力してください。今回はデフォルトのままで作成します。コンソールアプリ作成ダイアログの入力例[2]ソース修正Program.csが開いた状態だと思います。Program.csが開いている状態ここへ先ほど表示させたサンプルソースを貼り付けます。その前にサンプルソースを見てみましょう。}InvokeRequestResponseServiceというメソッドで全ての処理を行われています。このメソッドで、Webサービスのエンドポイントに対してリクエストをPOSTします。処理の流れは以下の通りです。特筆すべき点は特にありませんが、知っておくべきポイントが2つあります。1つは「2Webサービスに渡す入力値をセット」でscoreRequestという匿名型を使用しています。input」モジュールのプロパティで定義されているものです。従って、このKEY名を修正したければExperimetを修正してから再度Webサービスを作成しなければなりません。1つのポイントは「3Webサービスの認証情報をセット」でAPIキーをAuthorizationヘッダーにセットする実装です。サンプル実装では、HttpClientオブジェクトのDefaultRequestHeadersプロパティを使用して、AuthorizationヘッダーにAPIキーをセットしていますが、これはあくまでもサンプル実装だと思っておいた方が良いでしょう。HttpClientは負荷が高い処理であるため、複数回の呼び出し時が発生する場合には再利用する前提で生成・使用します。作成するソフトウェアの特性にもよりますが、一般的にリクエストの度に生成することはしません。そのためAPIキーのような認証情報は毎リクエストの度にセットするべきですが、DefaultRequestHeadersプロパティを使用するとAuthorizaionヘッダーがリセットされないためバグの元となります。参考:https://blogs.msdn.microsoft.com/shacorn/2016/10/21/best-practices-for-using-httpclient-on-services/註:HttpClient.DefaultRequestHeadersプロパティを使用しない場合は、System.Net.Http.HttpRequestMessageクラスとHttpClient.SendAsyncメソッドを使用します。実装例は以下の通りです。HttpClientを再利用する場合、System.Net.Http.HttpRequestMessageクラスはリクエストの度に作成します。client.SendAsync(requestMessage);それでは実装してみましょう。サンプルソースの右上にソースをコピーできるアイコンがありますのでクリックします。サンプルソースをコピーProgram.csにデフォルトで実装されているコードを全て削除し、コピーしたサンプルソースをペーストします。サンプルソースをペーストSystem.Net.Http.Formattingが見つからなくてエラーとなっています。必要なライブラリが不足していることが原因です。パッケージの管理をクリックします。パッケージの管理を起動タブを参照に切り替えてから、検索ボックスに「Microsoft.AspNet.WebApi.Client」と入力します。同名のモジュールを選択し、インストールボタンをクリックします。Microsoft.AspNet.WebApi.Clientをインストールライセンスへの同意を求めるダイアログがポップアップします。変更のプレビューのポップアップライセンス同意のポップアップインストールが正常に終了すると、System.Net.Http.Formattingが見つからなくてエラーとなっていた箇所はエラーがなくなってます。エラーが消えた1か所だけソースの修正が必要です。WebサービスへアクセスするためのAPIキーがソース内部にハードコーディングされているのですが、その値は「abc123」です。これを正規のキー値に書き換えます。再度Webサービス画面の「Consume」メニューを開きます。Keyの右側にあるコピーアイコンをクリックします。Keyをコピーサンプルソースを貼り付けたProgram.csの79行目に、APIKeyの値をハードコーディングしている箇所があります。Keyを変更する場所コピーしたAPIKeyを貼り付けます。Keyを変更[3]起動するソースには既にサンプルデータが実装されているはずです。黒い画面が立ち上がり、しばらくすると結果が表示されます。Probabilitiesが異なる値となっていますが、無事に予測結果が取得できました。最後にいかがだったでしょうか。Learningを使うと環境構築からモデルの作成、評価から公開までがとても簡単に実装できることがおわかりいただけたかと思います。本番プロジェクトで機械学習を用いるには、データのクレンジングや使用するアルゴリズムの決定、パラメータの調整、再トレーニングをしたモデルを入れ替える方法について勉強する必要がありますが、まずは全体の概要と流れを掴むことが大事です。本記事がその助けとなるようでしたら、大変嬉しく思います。貴志(株式会社ネクストスケープ)著/山田祥寛監修<WINGSプロジェクトについて>テクニカル執筆プロジェクト(代表山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・雑誌/Web記事の執筆、講演等を幅広く手がける。共通点は○○だったAI時代に「必要とされる人材」とは??」4月1日より...71%の人が仕事を辞めたいと思った経験あり。レポートランキングをもっと見るもっと見る※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。システムやソフトウェアの開発に携わるエンジニアに向けた最新情報など仕事に役立つ話題などを提供していきます。Corporation。