Microsoft Build 2020の残り8時間をきりましたね。楽しんでいますか?
さてさて、合間合間にも素敵なコンテンツが流れてくるのがBuild 2020クオリティ。
普通のカメラ1台(実際は上のアングルの配信のためだけ)+Azure Kinect x 2台で↓こんな配信になります
1枚目の写真でAzure Kinectと一緒に写り込んでいる照明がきっと大切。
Microsoft Build 2020からの引用
https://mybuild.microsoft.com/sessions/7d5b56db-d367-43ac-9163-44de4e3919e8
UX Frameworkの統一化を進めているMicrosoftですが、現行のWin UI 2の次のWin UI 3では、MFC、WinForms、WPF、UWP XAMLから共通に使えるようになるようです。
動作フレームワーク的にはDesktopとUWPなので、恩恵をうけそうな感じとしては、WPFにUWP XAMLライクなFluentデザインのコントロールとか使えるようになったらいいかなー。
ロードマップは次のような感じだそうです。
本番システムに使っていいよという「go live」には2020年10月、Ignite 2020あたりを目標にしていた感じですね。
Ignite 2020もBuild 2020と同様にオンラインイベントのようですから、「さあ!そろそろ使おうか!」的な目線でセッションを受講出来たらよさそうです。
そして、来年の3月にはGAですね。来年のMicrosoft MVP Global Summitはどうかなー。現地開催できるような情勢だといいですね。
さて、みんな大好きuno platformもWinUI 3.0をサポートするそうです。
ということは、Desktop AppsとUWP Appsに加えて、Xamarin AppsもWin UIでUXプラットフォーム部分は共通化できそうですね。
WinUI 3.0ですがPreview 1はもう使えます。10月までの半年しかないですから、始めるには早すぎるってことはなさそうですよね。
英語ネイティブ発音じゃなくて、日本人の日本語発音で英語音声認識がどう認識するかを知ることは、私たちの日本語が英語圏の人たちにはどう聴こえるかを知る目安になります。
そこで、Azure Cognitive Servicesの「英語」音声認識で都道府県わかるかな?をやってみたいと思います。
北海道 | Hokkaido |
青森 | all Moody. |
岩手 | You out there? |
宮城 | Yeah. |
秋田 | Oct. |
山形 | Yamagata |
福島 | Fukushima |
茨木 | Ibaraki. |
栃木 | put it. |
群馬 | Goomba. |
埼玉 | sitamma. |
千葉 | T bar |
東京 | Tokyo. |
神奈川 | Kanagawa |
新潟 | Niigata |
富山 | Toy, Yama. |
石川 | Is covered. |
福井 | Quit. |
山梨 | Yeah, minus. |
永野 | Nagano |
岐阜 | he who? |
静岡 | She's OK. |
愛知 | Heights. |
三重 | Mia |
滋賀 | cigar. |
京都 | Kyoto |
大阪 | Osaka |
兵庫 | Hugel |
奈良 | Nara |
和歌山 | What I am. |
鳥取 | Put buddy. |
島根 | She money. |
岡山 | Oklahoma. |
広島 | Hiro Shima. |
山口 | Yamaguchi |
徳島 | Takashima, |
香川 | Cagua |
愛媛 | Hmm. |
高知 | Coach |
福岡 | Coca. |
佐賀 | Saga |
長崎 | Nagasaki. |
熊本 | Komodo. |
大分 | Order |
宮崎 | Music. |
鹿児島 | Cosima |
沖縄 | Okinawa. |
意外ときちんと認識しているところ、確かにそう聴こえるところ、謎なところとありますね。
謎なところは、多分、私の発音がそもそも悪いというのもあるのかも。
でも、海外で「静岡」って言えば、「She's OK?」って聞こえるのは重宝しそうですね。
ということで、みなさんもためしてみてね。
Microsoft Build 2020のオンラインイベントが本日0時からスタートしました。
それに伴って、Cognitive ServicesもいろいろGA (generally available) がありますね。
音声認識関連をピックアップしてみましょう。
Quickly transcribe audio to text. Speech to Text is expanding to 27 new locales (coming soon), with 30 percent improvement in speech transcription accuracy.
音声テキスト変換の速度向上、27の新しい地域(これからのも含め)の追加、音声認識精度が30%向上などだそうです。
音声認識の対応地域って、この前まで30地域(言語的には21言語)だったと思うので、一気に倍近くになったのかな?
早速、ドキュメントをみてみましょう。
ドキュメントの更新日付見ると3月なんで、まだ、今回の発表分は反映されてないのかな?
ロケール一覧を抜き出してみると下記の様になります。
Locale | Language | |
ar-AE | アラビア語 (UAE) | [2019/10/22追加] |
ar-BH | アラビア語 (バーレーン) | [2019/10/22追加] |
ar-EG | アラビア語 (エジプト) | |
ar-KW | アラビア語 (クウェート) | [2019/10/22追加] |
ar-QA | アラビア語 (カタール) | [2019/10/22追加] |
ar-SA | アラビア語 (サウジアラビア) | [2019/10/22追加] |
ar-SY | アラビア語 (シリア) | [2020/03/26追加] |
ca-ES | カタロニア語 | |
da-DK | デンマーク語 (デンマーク) | |
de-DE | ドイツ語 (ドイツ) | |
en-AU | 英語 (オーストラリア) | |
en-CA | 英語 (カナダ) | |
en-GB | 英語 (イギリス) | |
en-IN | 英語 (インド) | |
en-NZ | 英語 (ニュージーランド) | |
en-US | 英語 (米国) | |
es-ES | スペイン語 (スペイン) | |
es-MX | スペイン語 (メキシコ) | |
fi-FI | フィンランド語 (フィンランド) | |
fr-CA | フランス語 (カナダ) | |
fr-FR | フランス語 (フランス) | |
gu-IN | グジャラート語 (インド) | [2019/10/22追加] |
hi-IN | ヒンディー語 (インド) | |
it-IT | イタリア語 (イタリア) | |
ja-JP | 日本語 (日本) | |
ko-KR | 韓国語 (韓国) | |
mr-IN | マラーティー語 (インド) | [2019/10/22追加] |
nb-NO | ノルウェー語 (ノルウェー) | |
nl-NL | オランダ語 (オランダ) | |
pl-PL | ポーランド語 (ポーランド) | |
pt-BR | ポルトガル語 (ブラジル) | |
pt-PT | ポルトガル語 (ポルトガル) | |
ru-RU | ロシア語 (ロシア) | |
sv-SE | スウェーデン語 (スウェーデン) | |
ta-IN | タミール語 (インド) | [2019/10/22追加] |
te-IN | テルグ語 (インド) | [2019/10/22追加] |
th-TH | タイ語 (タイ) | |
tr-TR | トルコ語 (トルコ) | [2019/10/22追加] |
zh-CN | 中国語 (簡体字) | |
zh-HK | 中国語 (繁体字) | |
zh-TW | 中国語 (台湾) |
docsの変更履歴を見ても、2019/10/22にアラビア語のロケール増加、インドの言語の増加、トルコ語の追加があり、2020/3/26にアラビア語(シリア)が追加されていますが、まだ、今回のGAのが追加されてはいないのかな?
30地域(言語的には21言語)と思っていたけれど、現時点で、41地域(言語的には26言語)でした。そういえば、アラビア語は、ar-EGがMSA=Modan Standard Arabicだったのですが、2019/10/22の追加で、ar-BHの方に移ったみたいですね。
本日(2020/05/20)にアナウンスのあった27地域がどこなのか、どこが増えるのか楽しみですね。
Unityでビルドされるexe名は、あらかじめMicrosoft Storeで名前の予約をしておきます。
例)HoloLabStoreCheck2D
Build Settingsを開いて、
Platformで「PC, Mac & Linux Standalone」を選択して、Target Platformに「Windows」を指定、Architectureは「x86_64」を選択します。
これで、配布ターゲットは、Windows 10 x64のみとなります。
必要なのはExeや実行に必要なDLLそしてデータですので、Create Visual Studio Solutionは不要です。
Player SettingでProduct Nameにストアで予約した名前にします。
「↓」タブの中のIconなど必要な設定をします。
BuildボタンとクリックしてExeの生成先をUnityのプロジェクトフォルダ配下(例:Buildフォルダ)に指定します。
以降の説明では、Unityプロジェクトフォルダ直下にBuildフォルダがあることを前提とします、
作成先のフォルダの内容を確認します。
例)
HoloLabStoreCheck2D.exe
UnityCrashHandler64.exe
UnityPlayer.dll
WinPoxEventRuntime.dll
HoloLabStoreCheck2D_Dataフォルダ
MonoBleedingEdgeフォルダ
Visusl Studioを立ち上げて、Windowsアプリケーションパッケージプロジェクトを新規作成します。
プロジェクト名は、UnityのExe名+AppPackageを推奨します(例:HoloLabStoreCheck2DAppPackage)
場所は、Unityプロジェクトフォルダを指定します(以降の説明は、この位置を指定している前提となります)。
「ソリューションとプロジェクトを同じディレクトリに配置する」チェックは外したままです。
ターゲットプラットフォームを指定します。UWPアプリケーションがサポートするとありますが気にしないで大丈夫です。
ターゲットバージョンは、できれば最新のバージョンを指定するのがいいでしょう。
最小バージョンはビルド14393(バージョン1607)以降を指定する必要があります。2020/04/30現在のWindows 10サポートは1803以降なので、1809以降を指定するのも1案です。
※LTSC/LTSBを考慮するならば、ビルド14393(バージョン1607)のLTSCの延長サポート終了日が2026/10/13なのでそれを最小バージョンとするという戦略もあります。
次に、.NET Frameworkのコンソールアプリプロジェクトを追加します。
このあたりから正攻法から外れた邪法に突入しますので、本当はWindowsアプリケーションパッケージプロジェクトのテンプレートあたりでUnityアプリの配布もサポートしてくれるといいんじゃないかと思います。
プロジェクト名はUnityのExe名と必ず同じ(例:HoloLabStoreCheck2D)にします。
プロジェクトが追加されたらばVisual Studioの[ビルド]-[構成マネージャー]で
を選択します。
そうするとコンソールアプリのプラットフォームが「Any CPU」のままなので、x64を追加して選択しておきます。
次にソリューションエキスポローラーで、Windowsアプリケーションパッケージプロジェクトの「アプリケーション」を右クリックして[参照の追加]で、追加したコンソールアプリケーションプロジェクトを参照します。
上記が完了したら、このあたりで、[ファイル]-[すべて保存]で、一度保存しておきましょう。
コンソールアプリケーションプロジェクト名を右クリックして、[エクスプローラーでフォルダを開く]をします。
エキスプローラ―での表示例:
このフォルダにUnityでビルドした中身を丸ごとコピーします。
ソリューションエキスプローラ―でコンソールアプリケーションプロジェクト名を指定して[すべてのファイルを表示]します。
さらに
HoloLabStoreCheck2D_Dataフォルダ
MonoBleedingEdgeフォルダ
HoloLabStoreCheck2D.exe
UnityCrashHandler64.exe
UnityPlayer.dll
WinPixEventRuntime.dll
を選択して右クリックメニューで[プロジェクトに含める]をクリックします。
これでUnityアプリが必要としているファイルやフォルダ構造がプロジェクトに取り込まれました。
更にプロジェクトに含めたexeやdll、フォルダ内のファイル全てのプロパティを次のように指定します。
コンソールアプリをビルドします。
bin\x64\ReleaseフォルダにUnityのビルド先と同じファイル+若干のコンソール用ファイルが出力されているのが確認できると思います。
もし、bin\x64\Releaseフォルダではなくbin\Releaseフォルダに出力されていたらプラットフォームがAny CPUのままなので再確認をしてください。
この状態でexeファイルをダブルクリックして実行してもコンソールアプリが実行されます。
つまり、Unityで作成した実行ファイルとコンソールアプリケーションプロジェクトでビルドされるExe名が同じなので出力フォルダでは上書きされてしまうのです。
これを次に解決します。
そこで、ソリューションエキスプローラーからコンソールアプリケーションプロジェクトのプロパティを開いて、[ビルドイベント]-「ビルド後イベントのコマンドライン」に以下をいれて、上書きされた本来のExeを更に本来のものに上書きし直します。
xcopy /Y "$(ProjectDir)$(TargetFileName)" "$(TargetDir)"
del /Q "$(TargetDir)$(TargetName).pdb"
再度、bin\x64\Releaseフォルダ上のexeを起動してみましょう。
作成したUnityアプリが起動するはずです。
無事に起動出来たらば、Windowsアプリケーションパッケージプロジェクトに情報を伝えるためのダミープロジェクトの構成がまずは完了しました。
ここから先は、WPFアプリなどをAppPackage化してMicrosoft Storeに登録するのと同じ流れになります。
身近に、Windows Phoneアプリ、Windows Storeアプリ、UWPアプリのストア配布経験者がいらっしゃるようであれば、ぜひ、その方に以降の手順を一読いただいて以降の説明をショートカットするチートルートを進んでいただければと思います。
WindowsアプリケーションパッケージプロジェクトにあるPackage.appxmanifestをテキストエディタやVisual Studio Codeで開くと下記の部分があります。
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.0" MaxVersionTested="10.0.14393.0" />
</Dependencies>
こちらからWindows.Universalの行を削除して保存しましょう。
<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.0" MaxVersionTested="10.0.14393.0" />
</Dependencies>
次にソリューションエキスプローラーでPackage.appxmanifestをダブルクリックして内容を編集します。
表示名は、元々とのExe名にAppPackageが付いた形になっているので適切な名前にします。
例:HoloLabStoreCheck2DAppPackage→HoloLabStoreCheck2D for Desktop
説明もきちんと記載しましょう。
パッケージ化のところにもパッケージ表示名があるのでそちらも同様(例:HoloLabStoreCheck2DAppPackage→HoloLabStoreCheck2D)に編集します。
[ビジュアル資産]のところにアプリのアイコン画像など必要な解像度のアイコンを作成します。
大きめのアイコンファイルを作成して、[生成]ボタンで一気に必要な解像度の画像を自動生成するのも良いでしょう。
アイコンは背景を透過pngにしておき、タイルの背景やスプラッシュスクリーンの背景に色を指定してください。
もしくは、アイコンのイメージ部分を白で作成し、背景指定色をtransparentを指定してシステムカラーを使うようにするのも、それっぽい感じの仕上げになります。
コンソールアプリケーションプロジェクトを右クリックして[リビルド]します。
Windowsアプリケーションパッケージプロジェクトを右クリックして[配置]を実行します。
うまく配置がいけば、Windowsのスタートの中にアプリが出現します(例:HoloLabStoreCheck2D)。
配置したアプリを実行してUnityアプリが起動すれば、ストア登録前の確認は終了です。
忘れずにアンインストールして置きましょう。
Windowsアプリケーションパッケージプロジェクトを右クリック[公開]-[アプリパッケージの作成]をクリックします。
配布方法は、アプリ名は予約済ですが[新しいアプリ名でMicrosoft Storeに]を選択します。
ストアに登録するアカウントを追加して、[既存のアプリケーション名]リストから、事前に予約した名前を選択します。
バージョンは[自動的に増加]チェックは外して、アーキテクチャはx64のみチェックします。ソリューション構成も「Release (x64)」になっていることを確認して、[作成]をクリックします。
成功すれば次のような出力となります。
1>パッケージが正常に作成されました。
========== 公開: 1 正常終了、0 失敗、0 スキップ ==========
パッケージが Release (x64) 向けに正常にビルドされました。
========== パッケージ: 1 正常終了、0 失敗 ===========
アプリケーション バンドルが Release (x64) 向けに正常にビルドされました。
========== アプリケーション バンドル: 1 正常終了、 0 失敗 ===========
出力先フォルダはプロジェクトフォルダ内のAppPackagesフォルダになります。この中にあるmsixuploadフォルダをストアに登録します。
例)HoloLabStoreCheck2DAppPackage_1.0.0.0_x64_bundle.msixupload
Windowsアプリケーションパッケージプロジェクトは自動的にrunFullTrustがついているので下記の注意書き(次の制限された機能は、アプリで使用する前に承認が必要です)が表示されますが、気にしないで大丈夫です。
The following restricted capabilities require approval before you can use them in your app: runFullTrust.
ストア登録自体は一般的なものと同じですが、申請オプションの項目にある制限付き機能については、下記のようなコメントを記載します。
デスクトップアプリのブリッジを使ったAppPackage化によるストア登録なのでrunFullTrustが必要です。
Because it is a store registration by AppPackage using the bridge of the desktop application, runFullTrust is necessary.
あとは申請に提出してストアに公開されるのを待つだけです。
以前とは異なり数時間くらいで審査通過してストア公開フェーズになります。
ストア公開フェーズになってから実際に公開されるまで数時間待たされるので翌朝には公開されているかなくらいの感覚でいるとイライラしないでしょう。
もちろんストア公開なので有料アプリもサクッと指定ができてアプリ費用もMSさんが回収してくれる(マージンは取られるけれど)ので、これはっ!というUnityアプリを登録してみるのもいいでしょう!
今回の.NETラボ勉強会で配信に使っていたHDMI→USB変換はこちらになります。
これを使って登壇者のPCから配信用のPCに映像を取り込んで(ついでに翻訳字幕合成して)配信というのを以前から行っておりまいた。