UnityとMRTKのバージョンはどれをつかえばいいのかわからなくなる時があるのでメモ。
UnityはUnty 2018もでていますが、2018/04/30に提供が開始されたUnity 2017.4.2f2。
http:// https://unity3d.com/jp/unity/whatsnew/unity-2017.4.2
MRTK (Mixed Reality Toolkit for Unity)は、2017.2.1.4 Patch Release。
UnityとMRTKのバージョンはどれをつかえばいいのかわからなくなる時があるのでメモ。
UnityはUnty 2018もでていますが、2018/04/30に提供が開始されたUnity 2017.4.2f2。
http:// https://unity3d.com/jp/unity/whatsnew/unity-2017.4.2
MRTK (Mixed Reality Toolkit for Unity)は、2017.2.1.4 Patch Release。
http://hatsune.hatenablog.jp/entry/2018/04/11/010156
PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。
Login-AzureRmAccount
ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続します。
しかし、複数のサブスクリプションに紐づいている場合は、目的のサブスクリプションにつながらない場合もあります。
その場合は、Get-AzureRmSubscriptionでサブスクリプションIDを調べて、Select-AzureRmSubscriptionを使ってサブスクリプションを指定します。
Select-AzureRmSubscription -SubscriptionId 'xxxx-xxxx-xxxxx-xxxx'
Azure PowerShellを使って具体的にTranslator Text APIを新規追加する方法を順番にみていきましょう。
New-AzureRmResourceGroup ?Name myResoureceGroup ?Location ‘Japan West’
これでmyResourceGroupという名前で西日本にリソースグループが作成できます。
New-AzureRmCognitiveServicesAccount ?Name Test_Translator -ResourceGroupName myResoureceGroup -Type TextTranslation -SkuName F0 -Location 'global'
これでTest_Translatorという名前で、Translator Text APIが無料プランで有効化できます。
Congnitive Serviceは、以前はどこのリージョンを使うかを指定していましたが、現在は、特定のリージョンへの依存関係のないサービスです。そのため、Locationパラメータの指定は必要ですが指定値は常にglobalになります。
Get-AzureRmCognitiveServicesAccountKey -ResourceGroupName myResoureceGroup -Name 'Test_Translator'
これで取得したどちらかのキー値を使えば、Translator Text APIを使うことができます。持ち主などの認証はありませんので、非常に重要な値といえます。
キー値を変更したいようなときは、キー値の再作成を行います。
New-AzureRmCognitiveServicesAccountKey -ResourceGroupName myResoureceGroup -Name 'Test_Translator' -KeyName Key1
これでKey1の値だけ再作成を行いました。キー値は2つあり利用はどちらでも同じです。Key1は自分用、Key2は一時的な貸出用などにしておくと、貸し出しが終わったらKey2を再作成するという運用ですみます。
(Get-AzureRmCognitiveServicesAccountSkus -ResourceGroupName myResoureceGroup -Name 'Test_Translator' | Select-Object -expandproperty Value).Sku
無料プランのF0、有料プランのS1~S4があることが分かりました。
Set-AzureRmCognitiveServicesAccount -ResourceGroupName myResoureceGroup -Name 'Test_Translator' -SkuName S1
これで料金プランだけS1に変更できました。もちろん、キー値など他の要素は変わりません。
New-AzureRmCognitiveServicesAccountのTypeパラメータに指定できるCognitive Serviceの指定値は次のようになっています。
1 | Bing.Autosuggest.v7 | アプリにインテリジェントな自動提案機能を追加 |
2 | Bing.CustomSearch | 簡単に使用できる、広告なしの商用グレード検索ツールで、お好みの検索結果を得ることができます |
3 | Bing.Search.v7 |
Bing Search API (Web、Image、Video、News) と Entity Search |
4 | Bing.Speech | 音声をテキストへ、またそのテキストを再び音声に変換し、ユーザーの意図を理解 |
5 | Bing.SpellCheck.v7 | アプリでのスペル ミスを検出して修正 |
6 | ComputerVision | 画像から意思決定に役立つ情報を抽出 (*一部リージョンのみ提供) |
7 | ContentModerator | 画像、テキスト、ビデオを自動モデレート (*一部リージョンのみ提供) |
8 | - | Custom Decision Service (プレビュー)に対応した指定はありません。 |
9 | CustomSpeech | |
10 | CustomVision.Prediction | 画像分析、タグ付け、著名人の認識、テキスト抽出、およびスマート サムネイル生成などの機能があります。 |
11 | CustomVision.Training | 画像分析、タグ付け、著名人の認識、テキスト抽出、およびスマート サムネイル生成などの機能があります(southcentralusのみ) |
12 | Emotion |
プレビュー。一般提供はFaceAPIへ統合。 感情認識を使用してユーザー エクスペリエンスをパーソナライズ |
13 | Face | 写真に含まれる顔の検出、識別、分析、グループ化、タグ付け (*一部リージョンのみ提供) |
14 | LUIS | ユーザーが入力したコマンドをアプリケーションが理解できるようにします (*一部リージョンのみ提供) |
15 | QnAMaker | *別の仕組みになったため?指定不可 |
16 | SpeakerRecognition | 音声を使用して個々の話者を識別および認証 (*一部リージョンのみ提供) |
17 | SpeechTranslation | リアルタイムの音声翻訳を簡単に実行 |
18 | TextAnalytics | 未加工テキストの高度な自然言語処理に対応しています。感情分析、キー フレーズ抽出、言語検出の 3 つの主な機能があります。 (*一部リージョンのみ提供) |
19 | TextTranslation | 機械翻訳を簡単に実行 |
20 | WebLM | *Web Language Model APIはCognitive ServiceからAzure Machine Learning Studioに変更になったため指定不可 |
残念ながら、この一覧を取得するコマンドはないのですが、Cognitive Serviceは今後も増えていく予感がしますし、Emotion APIがFace APIへ統合されるたように統廃合もあるでしょうから、指定できるTypeの一覧などがあると指定値に悩まなくてよい(まあ、ドキュメントサイトみましょうってことなのでしょうけれど)ですね。
現時点で指定できるAccountTypeでCognitive Serviceを有効にしていくと次のような感じで作成できます。
以上、コマンドラインによるCognitive Serviceの追加でした。各ユーザがもっているサブスクリプションに同じ定義で追加したいときとかも便利ですね。
一般社団法人ICTリハビリテーション研究会のアドバイザーに就任しました。
研究会について – 一般社団法人ICTリハビリテーション研究会
リハビリ領域にICTで少しでも豊かさをお届けできるように、ともにいろいろ考えていければと思っています。
http://hatsune.hatenablog.jp/entry/2018/04/11/010156
PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。
Login-AzureRmAccount
ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続します。
しかし、複数のサブスクリプションに紐づいている場合は、目的のサブスクリプションにつながらない場合もあります。
その場合は、Get-AzureRmSubscriptionでサブスクリプションIDを調べて、Select-AzureRmSubscriptionを使ってサブスクリプションを指定します。
Select-AzureRmSubscription -SubscriptionId 'xxxx-xxxx-xxxxx-xxxx'
例3:ストレージの追加
Azure PowerShellを使って具体的にBLOBを新規追加する方法を順番にみていきましょう。
New-AzureRmResourceGroup ?Name myResoureceGroup ?Location ‘Japan West’
これでmyResourceGroupという名前で西日本にリソースグループが作成できます。
New-AzureRmStorageAccount ?StorageAccountName 'mystorage0409' ?Location 'Japan West' ?ResourceGroup myResoureceGroup ?SkuName 'Standard_LRS' ?Kind storage
西日本に'Standard_LRS'=ローカル冗長ストレージでストレージアカウント「mystorage0409」を作成しました。
SkuNameにはレプリケーションを指定するので、その他にも次のような指定が可能です。
SkuName | レプリケーション |
Standard_LRS | ローカル冗長ストレージ |
Standard_ZRS | ゾーン冗長ストレージ |
Standard_GRS | 地理冗長ストレージ |
Standard_RAGRS | 読み取りアクセス地理冗長ストレージ |
Premium_LRS | Premium(SSD)ローカル冗長ストレージ |
通常はローカル冗長、スピードが必要ならPremiumローカル冗長、データセンタのゾーン全体が死んでもデータの持続性を担保したいならゾーン冗長、データセンター丸ごと死んでもということであれば地理冗長を選択しましょう。
詳細は下記のドキュメントを参照してください。
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-redundancy
もし、ストレージに対してhttpsでのアクセスのみを許可したいときは「-EnableHttpsTrafficOnly $True」を付与しましょう。
作成したストレージアカウントをAzure Portalで確認してみましょう。
ストレージアカウントができているので、次にやる作業はBLOBサービスにBLOBコンテナを作成することです。
New-AzureRm・・・のようなリソースマネージャー関連コマンドではなくなってしまいますが、次のようなコマンドでBLOBコンテナが作成できます。
$storageAccount = Get-AzureRmStorageAccount ?Name 'mystorage0409' ?ResourceGroupName myResoureceGroup
$ctx = $storageAccount.Context
New-AzureStorageContainer ?Name 'myblob' ?Context $ctx ?Permission blob
これで、パブリックアクセスレベルが「BLOB専用の匿名読み取りアクセス」のmyblobというBLOBコンテナが作成できました。
BLOBコンテナができたので、ローカルPCにあるファイルをアップロードしてみましょう。
$storageAccount = Get-AzureRmStorageAccount ?Name 'mystorage0409' ?ResourceGroupName myResoureceGroup
$ctx = $storageAccount.Context
Set-AzureStorageBlobContent ?Container myblob ?Blob 'Icon09.png' ?Context $ctx ?File 'C:\Users\hatsune\Pictures\icon09.png'
これでローカルPCのファイルがAzure上のBLOBコンテナに入りました。
BLOBコンテナにあるBLOBファイルの一覧を表示してみましょう。
$storageAccount = Get-AzureRmStorageAccount ?Name 'mystorage0409' ?ResourceGroupName myResoureceGroup
$ctx = $storageAccount.Context
Get-AzureStorageBlob -Container "myblob" -Context $ctx
パブリックアクセスレベルが「BLOB専用の匿名読み取りアクセス」となっているので、BLOBファイルへのURLを公開すれば誰でもが参照のみ可能となります。
参照は誰でもができますが、一部の人には更新もできるようにしたい場合があります。
しかしAzureサブスクリプションに対するアクセス権を渡してしまうのは大げさです。
そのような場合は、ストレージアカウント名とキーを渡してあげて、Azure Storage Explorerなどを使ってもらうといいでしょう。
詳細は:http://hatsune.hatenablog.jp/entry/2018/03/08/065243
Get-AzureRmStorageAccountKey -Name mystorage0409 -ResourceGroupName myResoureceGroup
mystorage0409という名前と、key2の値を更新者に渡してあげるといいでしょう。
今回、ストレージアカウントのアカウントの種類としてstorageを指定したがblobstorageを指定したいときは注意が必要だ。
1つもストレージアカウントがない状態でblobstorageを作成するとBLOBコンテナが作成できないストレージアカウントができてしまう。
1つでも作成した後であれば正常に動作する。
New-AzureRmStorageAccount –StorageAccountName 'mystorage0409' –Location 'Japan West' –ResourceGroup myResoureceGroup –SkuName 'Standard_LRS' –Kind storage
New-AzureRmStorageAccount –StorageAccountName 'mystorage0410' –Location 'Japan West' –ResourceGroup myResoureceGroup –SkuName 'Standard_LRS' –Kind BlobStorage –AccessTier Hot
Azure Portalで作成したときは大丈夫なので、Azure PowerShellに何らかの問題があるのかもしれないが注意した方がいいでしょう。
http://hatsune.hatenablog.jp/entry/2018/04/11/010156
PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。
Login-AzureRmAccount
ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続します。
しかし、複数のサブスクリプションに紐づいている場合は、目的のサブスクリプションにつながらない場合もあります。
その場合は、サブスクリプションを指定してログインしてもいいのですが、Login-AzureRmAccountでのサブスクリプション指定には、そもそもとしてサブスクリプションIDが必要です。サブスクリプションIDを調べるのにブラウザでAzure Portalにログインするのも本末転倒な気がします。
そこで便利なのが、Get-AzureRmSubscriptionです。
Get-AzureRmSubscription
これでサブスクリプションIDが分かったので、使いたいサブスクリプションを指定します。指定は、サブスクリプションIDでもサブスクリプション名でもいいのですが、サブスクリプションID指定をよく使います。
Select-AzureRmSubscription -SubscriptionId 'xxxx-xxxx-xxxxx-xxxx'
Select-AzureSubscriptionがいわゆるclassicと呼ばれているもので、Select-AzureRmSubscriptionがAzureリソースマネージャーによる指定となります。
Select-AzureRmSubscriptionはあくまでもAzureリソースマネージャーによるサブスクリプションの変更です。
この方法で接続およびサブスクリプション指定した場合は、以降のコマンドもhogehoge-AzureRmHogehogeのように「Azure」でなく「AzureRm」系のコマンドを使う必要があります。
http://hatsune.hatenablog.jp/entry/2018/04/11/010156
PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。
Login-AzureRmAccount
ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続する。
もし、複数のサブスクリプションがある場合は、サブスクリプションを指定して実行するといいでしょう。
Login-AzureRmAccount ?subscription xxxxxx-xxx-xxx-xxx-xxxx
それではAzure PowerShellを使って具体的にWebAppsを新規追加する方法を順番にみていきましょう。
New-AzureRmResourceGroup ?Name myResoureceGroup ?Location ‘Japan West’
これでmyResourceGroupという名前で西日本にリソースグループが作成できます。
New-AzureRmAppServicePlan -Name ’mywebapp0409' ?Location ‘Japan West’ -ResourceGroupName myResoureceGroup -Tier Free
App Service プラン名が「mywebapp0409」のApp Serviceプランを西日本に作成しました。
New-AzureRmWebApp -Name ’mywebapp0409' ?Location ‘Japan West’ -AppServicePlan ’mywebapp0409’ -ResourceGroupName myResoureceGroup
App Webアプリ名が「mywebapp0409.azurewebsites.net」のWebアプリを西日本に作成しました。
Get-AzureRmWebAppPublishingProfile -Name ’mywebapp0409' -ResourceGroupName myResoureceGroup ?outputfile “outputfile”
これでoutputfileという名前で発行プロファイルが保存できます。
Set-AzureRmWebApp ?Name 'mywebapp0409' -ResourceGroupName myResoureceGroup ?WebSocketsEnabled true
これでWebソケットが使えるようになります。
$AppSettings = @{"ClientId"="id";"Password"="pass"}
Set-AzureRmWebApp ?Name 'mywebapp0409' -ResourceGroupName myResoureceGroup ?AppSettings $AppSettings
アプリケーション設定にClientIdとPasswordを設定しました。アプリケーション設定を定義することでWeb.Configに設定した設定値を書き換えることができます。
あとはWebアプリをデプロイすればOKです。
Azureでは、デプロイオプションとしてWeb Appsへのデプロイ元が選択できます。VSTS、onedrive、ローカルGitリポジトリ、GitHub、Bitbucker、DropBoxなどから選択できます。もちろん自社内のGitを指定することも可能です。
これにはローカルgitやgithubと組み合わせてとかもできます。
Visual Studioからデプロイしてもいいでしょう。
このあたりは機会があれば、別の機会にご紹介したいと思います。
Azure Cognitive Serviceを使ったクライアントアプリを作成するときに、Azure側でサービスを有効化しようとするとAzure PortalからGUIで操作が必要です。
知っている人ならば簡単でしょうけれど、知らない人に操作を伝えようとすると画面のハードコピーを取得して、それをペタペタと貼り付けて「手順書」なるものを作らなければならない場合があります。
しかし、クラウドですからちょっとしたタイミングでAzure Portalが改善され見た目が変わったときに、元の手順書から類推できる人ならばいいのですが、ちょっとでも違っているだけで「画面が違う」というクレームを人がいたりするわけです。
Azure PortalにもAzure Cloud Shellというコマンドラインでの操作方法があります。
このツールのいいところは特に何かインストールしなくても使える点です。
しかし、Azure Cloud Shellを使うにはMicrosoft Azure Files ストレージを使用するためのセットアップと低額ですが維持費用が掛かる点を嫌がるケースもあります。
そのようなときはクライアントにAzure PowerShellをインストールするのがよいでしょう。
Azure PowerShell
Azure PowerShell を PowerShell ギャラリーからインストールできます。
しかし実際にやってみたらちょっと面倒だったので、Web Platform Installerを使った方がいいでしょう。
PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。
Login-AzureRmAccount
ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続する。
もし、複数のサブスクリプションがある場合は、サブスクリプションを指定して実行するといいでしょう。
Login-AzureRmAccount ?subscription xxxxxx-xxx-xxx-xxx-xxxx