今年もDreamforceが始まりましたね!今年は現地には居ませんが、タイムラインを見て気になったサービスを試してみたいと思います。ということで、今回はSalesforce MetaMindを試してみました。
Salesforce MetaMind
噂の機械学習 as a serviceなSalesforce Einsteinの中の1つのサービスのようです。現在はSalesforce’s Predictive Vision Serviceという画像認識の機能を提供しています。2016/10/5現在はPilotのようです。QUICK START
QUICK STARTで、SalesfoceからPredictive Vision ServiceのREST APIを呼び出して画像認識の処理をしていきます。まずは、自己署名証明書を作成します。
名前は適当で。今回はMetaMindという名前を付けています。
自己署名証明書をダウンロード
MetaMindにサインアップ。証明書はダウンロードした自己署名証明書をセット。完了すると認証用のメールが届きます。
リモートサイトを追加
以下のgitリポジトリのApexとVFを手動で追加(これ後でpackage.xml化してgitに置こうかな…)
対象は以下のクラスとページ- JWT.apex
- JWTBearer.apex
- Vision.apex
- VisionController.apex
- Vision.page
<apex:page Controller="VisionController">
<apex:form >
<apex:pageBlock >
<apex:image url="http://metamind.io/images/generalimage.jpg">
</apex:image>
<br/>
<apex:repeat value="{!callVisionUrl}" var="prediction">
<apex:outputText value="{!prediction.label}" />:<apex:outputText value="{!prediction.probability}" /><br/>
</apex:repeat>
</apex:pageBlock>
</apex:form>
</apex:page>
VisionControllerは以下の部分を修正
jwt.cert = '{input your certificate name}';
jwt.sub = '{input your email for metamind.io}';
あとはページにアクセスすると画像のイメージに対する画像認識の結果が返ってきます。
Salesforceのロゴは…
認識してくれませんorz 時計とか風船とかクラゲって…せめて雲は入ってほしかった。
Predictive Vision ServiceのREST APIは、OAuth2.0 JWT bearer token flowでaccess_tokenを取得する方式となっています。JWTはRS256でサインアップ時に登録した証明書と対になる秘密鍵で署名することになります。