DHJJ [Hatsune's Journal Japan] blog

Hatsune's Journal Japan blog

目次

Blog 利用状況

ニュース

最新ツイート

運営サイト

Hatsune's Journal Japan
DHJJ

著作など

資格など

OCP
MCP

書庫

日記カテゴリ

わんくま同盟

2017年10月15日 #

[HoloLens]Visual Studio + Unity + MixedRealityToolkit 2017年10月15日現在のベストマッチ

HoloLensで動作するMRアプリを作成するときは、Visual StudioとUnityを使いますが、さらにMixedRealityToolkit-Unity (旧HoloToolkit-Unity)も使うとアプリがつくりやすいです。

しかし、現在、いろいろなものが過渡期で安定する環境というのが日々新しくなっています。


この前までは、Visual Studio 2015 Update 3 + Unity 5.6とかでしたが、最近やっと、Visual Studio 2017 + Unity 2017 + MixedRealityTooklit-Unity(以下、MRTK)の

組み合わせでもうまく動いてくれるようになりました。

本日時点での動作確認できた最新の組み合わせは以下の通り。

  • Visual Studio 2017 15.3.5
  • Unity 2017.1.2f1
  • MRTK-Unity for Unity 2017.1.2f1


ご参考まで。

posted @ 21:50 | Feedback (0)

2017年10月13日 #

[HoloLens]HoloLensとPCのWindows 10のバージョン

2017/10/13現在のHoloLensとPCのWindows 10のバージョンのメモとなります。

HoloLens

Windows 10 version 1607 build 10.0.14393 (Windows 10 Anniversary Edition)

PC

Windows 10 version 1709 build 10.0.16299 (Insider Preview : Fall Creators Update)

Windows 10 version 1703 build 10.0.15063 (Windows 10 Creators Update)

Windows 10 version 1607 build 10.0.14393 (Windows 10 Anniversary Edition)

Windows 10 SDK

Windows 10 SDK 10240

Windows 10 SDK 10586 (November Update)

Windows 10 SDK 14393 (Anniversary Edition)

Windows 10 SDK 15063 (Creators Update)

posted @ 0:53 | Feedback (0)

2017年10月7日 #

[WebSocket]System.Net.WebSocketsはWindows 7では動かない

時々忘れがちになるのでまとめておきますね。


System.Net.WebSocketsはWindows 7では動かない

System.Net.WebSocketsを使ってWebSocketクライアントを作成したとき、Windows 8/8.1やWindows 10では問題なく稼働しますがWindows 7では実行時エラーで異常終了します。

これは

https://msdn.microsoft.com/ja-jp/library/system.net.websockets.websocket.aspx

-------引用開始

一部のクラスで、 System.Net.WebSockets 名前空間は、Windows 7、Windows Vista SP2、および Windows Server 2008 でサポートされます。 ただし、クライアントとサーバー Websocket の唯一のパブリックの実装では、Windows 8 および Windows Server 2012となります。

-------引用終了

と注意書きがあるように、定義はあるけれどWindows 8以降じゃないと実装が伴っていないところがあるからです。

なぜ、こんなことがあるかといえば、Windowsのカーネルモードドライバであるhttp.sysを直接利用することでHTTP周りのオーバーヘッドを少なくしているのですが、Windows 7のhttp.sysがWebSocketに対応していないからです。

Windwos 7のメインストリームサポートは終了しています

https://www.microsoft.com/ja-jp/atlife/article/windows10-portal/eos.aspx

みんな大好きWindows 7は2009年10月22日にライフサイクルがスタートして2015年1月13日にメインストリームサポートが終了しています。延長サポートの終了こそ2020年1月14日ということでまだ先ですが、延長サポート期間である現在はセキュリティ更新はおこなわれますが、仕様変更や新機能のリクエストはサポート対象外となり、これからWindows 7のHTTP.sysにWebSocket実装が追加されることはほぼないと考えてよいでしょう。

ではどうすればいいのか

一つの解決策としては、HTTP.sysを使わないWebSocket実装のコードを書く、もしくは、HTTP.sysを使っていないライブラリをNuGetで探してくるというものがあります。

https://github.com/kerryjiang/WebSocket4Net

https://github.com/sta/websocket-sharp

NuGetでライブラリを探すときは、企業ユースを考えるならばSystem.Net.WebSocketsならば対応している認証PROXYがサポートされているかなどのチェックを十分に行う必要があるでしょう。なお、残念ながら上記2つについてもまだきっちり調べ終わっていません。


しかし、System.Net.WebSocketsであればHTTP.sysを使って「オーバーヘッドが少ない」=「性能がよいことが期待される」なのにWindwos 7をサポートすることでその利点を得られないという問題が生じてしまいます。

対象となる機能がWindows 7でも使えないといけないのか、もしくは、対象となる利用者がWindows 7をどれくらい使っているのかを見極めて判断するといいでしょう。

企業でもWindows 7からWindows 8.1やWindows 10への置き換え(少なくとも新規導入は8.1か10がデフォルト)が始まっている時期なので悩ましいところですね。


Windows 8以降かどうかをチェックする

Windows 7のときにはWebSocketを使った機能をdisableしたいときなどは、OSのバージョンチェックが必要になってきます。

対象はWPFとかWindowsフォームのときで、UWPやXamarin.Android、Xamarin.iOSのときは対象環境で動かないということはないのでチェックは不要です。

ですので実装時は

#if WPF

#endif

のようにifディレクティブを定義してその中でOSバージョンのメジャーバージョンとマイナーバージョンを取得してチェックします。

var searcher = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
var os = searcher.Get().Cast().FirstOrDefault();
var major = 6;
var minor = 1;
if ((os != null) && (os["OsType"] != null) && (os["Version"] != null))
{
    if (os["OsType"].ToString() == "18")
    {
        major = new System.Version(os["Version"].ToString()).Major;
        minor = new System.Version(os["Version"].ToString()).Minor;
    }
}

Windows 10以上はmajor >= 10でよいのですが、Windows 8.xは、major == 6 && minor >= 2で判断しますので、その点だけ注意しましょう。

posted @ 17:31 | Feedback (0)

2017年9月24日 #

[Windows10]Windows 10 Insider Preview Build 16294

一般の方にはもしかしたらなじみがなく、また、仕事道具を動かすプラットフォームとしてWindowsを使っている人にも縁がないものに、Insider Previewがあります。

あくまでも「いまつくっている最中のバージョンを様々な環境でまずはつかってもらおう」というものです。

一般公開前ですから品質的に問題があったり致命的なバグがあったりも覚悟しつつ、アプリ開発していたり、OSそのものの新しい機能をいち早くためしたいという人がちょっとだけ未来に一般公開されるバージョンを試せるものということです。

Insider Previewのリリース間隔がみじかくなってくると、秋に公開されるというFall Creators updateもそろそろなの?みたいな感覚が味わえるのもいい点ですね。

もちろん、品質や日本語訳の変な点をどんどんフィードバックするのもInsider Preview参加者の役目の1つだったりします。


16294でなにがかわったかといえば以下のような点。変わったというよりもほぼバグフィックス。

  • Surface Pro 3でOSが起動できないバグの修正
  • オランダ版であったOneDriveからのダウンロード通知でクラッシュループが発生する問題の修正
  • expand.exeがファイル名に日本語が含まれているときに展開できない問題の修正
  • 0x800B010Cが発生する問題の修正
  • insider build 16291をインストールしようとすると0x80070057か0x8007071が発生する問題の解決


これをみて思うのは新機能の追加というよりも特定条件下で発生する問題の解決が多く、チューニングと汎用化の最終的な匙加減にはいてきたのかなって点。

よく「これくらいのバグをみつけられずにだしてくるのか?」なんて感想がブログで見受けられるけど、これ、なかなか面倒ですよね。対象ハードを絞れるといいだろうけれど。

あと、どうしてInsider Previewなのに「マイクロソフトも」みたいな感じで人格攻撃しちゃう人がいるのかはいつも不思議だったりします。問題点をかばう必要はないけど。きっと身近な人が失敗すると「だからお前はダメなんだ!」みたいな怒り方をしてそうですよね。

posted @ 7:39 | Feedback (1)

2017年9月7日 #

[HoloLens]HoloLensアプリのサンプルプロジェクトをgithubで公開する

ソースコードを公開せずに多人数でHoloLensアプリを作るときは、「Visual Studio Team Services」などで非公開でやっていくとよいと感じです。

ちょっとしたサンプルコードならば、gistなどもいいでしょう。

サンプルプロジェクトを公開するならgithubがやっぱり一番よさそうです。

HoloLensアプリを公開するときはUnityプロジェクトとUWPプロジェクトでそれぞれ別の.gitignoreファイルを置けると便利です。

そこで次のようなフォルダ構造を作成し、UnityプロジェクトフォルダとVisualStudioソリューションフォルダにそれぞれに適した.gitignoreファイルを置きましょう。

[アプリ名フォルダ]

   +[Unityプロジェクトフォルダ]

       +assets

          |unityファイル

   +UWP

          |VisualStudioソリューションファイル

          +[プロジェクトフォルダ]


このフォルダの作り方やその他の詳細はHoloLensアプリ作成時の共通作業(2017年9月編)を参照してください。


github上にサンプルプロジェクトのリポジトリを作成

image

新規にリポジトリを作るときに下の方に[.gitignore]ドロップダウンリストがあるので、そこで「Unity」を選択して「アプリ名フォルダ」と同じ名前でリポジトリを作成します。

Unityを指定したときの.gitignoreファイルの内容は次のようになります。

--

/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/Assets/AssetStoreTools*

# Visual Studio 2015 cache directory
/.vs/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb

# Unity3D generated meta files
*.pidb.meta

# Unity3D Generated File On Crash Reports
sysinfo.txt

# Builds
*.apk
*.unitypackage

--

リポジトリをローカルにクローンする

リポジトリができたならば、ローカル(自分のPC)にリポジトリをクローンします。


image

このとき、すでにサンプルプロジェクトを作ってしまっていたならば、作成済のサンプルプロジェクトのアプリ名フォルダをリネームしておきます。そして、その場所を指定してクローンします。

image

ローカルドライブにフォルダが作成できならば、このフォルダを「アプリ名フォルダ」としてHoloLensアプリのプロジェクトを作成します。

あらかじめ作成してありリネームしてあるならば、そのフォルダの中身を移動してきます。

image

クローン下フォルダに移動するだけでローカル側の変更として検知されます。ここで、.gitignoreファイルをUnityプロジェクトフォルダに移動します。

今回はUWP側はUnityから自動生成すればいいのでUWPフォルダを丸ごと削除します。

UWP側でも独自のコードを書いているのであれば、UWPファイルだには次のような.gitigoneファイルを配置します。

--

#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
*.dll
*.lib
*.sbr
*.msi
*.appx
obj/
bin/
TestResults/
AppPackages/
BundleArtifacts/
packages/
UpgradeLog*.*

--

コミットしてプッシュする

公開するコードがすべて格納出来たら、コミットを行い、プッシュします。

image

github上のUnityプロジェクトフォルダを見てみる次のようになります。

image

これでコードを公開できました。

posted @ 0:36 | Feedback (0)

2017年9月6日 #

[HoloLens]HoloLensアプリ作成時の共通作業(2017年9月編)

HoloLensアプリを作成するときのフォルダ構成を公開します。

[アプリ名フォルダ]

   +[Unityプロジェクトフォルダ]

       +assets

          |unityファイル

   +UWP

          |VisualStudioソリューションファイル

          +[プロジェクトフォルダ]

こんな感じにUnity関連とUWP関連が別フォルダになるようにしていて、その2つのフォルダをアプリ名フォルダの下に作っています。

こうすることでまとめてドンっと開発環境渡したいときは[アプリ名フォルダ]まるごとzipにして渡してしまえばいいですね。

githubにあげるときも同様ですが、Unity環境とUWP環境で除外したいファイルが違ったりするので、UnityプロジェクトフォルダとUWPフォルダにそれぞれ.gitignoreを記述しておくとよいでしょう。


Unityプロジェクトを新規作成するときの考慮点

そのためには、HoloLensアプリを作るときにUnityを立ち上げたら、例えば次のように[Project Name]欄に記載する値と、[Location]欄に記載するフォルダ名の最後をまずは一致させておきます。

image

HoloToolkit-Unityの追加

Unityプロジェクトができあがったら、提携作業としてまずはHoloToolkit-Unityをアセットとして追加します。

githubのreleaseにアセットパッケージファイルがあるのであらかじめダウンロードしておきます。

2017/09/06現在、私が使っている環境は、

Unity 5.6.2f1

なので、HoloToolkit-Unityもv1.5.8.0になります。

image

[Assets]-[Import Package]-[Custom Package]メニューでダウンロードしたアセットパッケージファイルを指定します。

image

アセットが追加されるとメニューなども拡張されるので、HoloToolkitメニューからいつものConfigurationをやっておきましょう。

シーンの保存

Unityのシーンを保存したいときは、プロジェクト名と同じ名前で保存しています。

image

Build Settings (2017年9月編)

HoloLensに搭載されたOSはまだWindows 10 Anniversary Updateなので、開発環境がCreators UpdateやFall Creators Updateだったりした場合には、UWP SDKとして10.0.14393.0を明示的に選択します。

image

また、[Unity C# Projects]チェックもデフォルト状態ではついていないのでこれもつけておきます。

UWPソリューションを出力するときの考慮点

image

UWPフォルダは最初できていないので[新しいフォルダー]をクリックしてフォルダを作成して名前を「UWP」にします。

UWPのソリューション構成は次のように3つのプロジェクトから構成されます。

image

*ここでVisual Studio 2015 Update 3を使っていると特に問題なく、HoloLensをUSBで接続した途にビルドタイプ「x86」にして出力先を「Device」にすればHoloLensでアプリが立ち上がります。


さて、現状のUnity 5.6.2f1からだとVisual Studio 2017を使うとエラーでビルドが失敗します(15.3.3でも失敗する)。

原因は、上2つのプロジェクトのcsprojファイルで記載されている

RunSerializationWeaver

の実行プロセスで

System.Collections.Generic.KeyNotFoundException: 指定されたキーはディレクトリ内に存在しませんでした。

というエラーが発生して

UWP\GeneratedProjectsUWP\Assembly-CSharp-firstpass\bin\x86\Debug\Assembly-CSharp-firstpass.dll

UWP\GeneratedProjects\UWP\Assembly-CSharp\bin\x86\Debug\Assembly-CSharp.dll

が作成されないからです。

また、最後の1つのプロジェクトでも

UWP\Unity\Tools\AssemblyConverter.exeの実行プロセスで

System.Collections.Generic.KeyNotFoundException: 指定されたキーはディレクトリ内に存在しませんでした。

というエラーが発生します。


どうやらこれを解決するためには、Unity 5.6ならばVisual Studio 2015にするか、Visual Studio 2017にしたいならUnity側をUnity 2017.1.0p5にするしかないようです。

でも、Unity 2017用のHoloToolKit-Unity (Unity 2017用だとMixedRealityToolkit-Unity) は、Pre-releaseなんですよね。

posted @ 16:36 | Feedback (0)

2017年8月23日 #

[HoloLens]HololensのSpatialMappingのメッシュをきれいにする

HoloLens Toolkit-UnityあらためMixed Reality Toolkit-UnityのSpatialMappingを使うと空間認識を行って、Unity空間の中に現実世界の床や壁を反映してくれます。

SpatialMapping

やり方は簡単で、[SpatialMapping]-[Prefabs]から[SpatialMapping]オブジェクトをHierarchyウィンドウにドラッグアンドドロップするだけであとは自動的に良しなにやってくれます。

20170823_124703_HoloLens

起動するとすぐに空間認識が始まって、その進行に合わせて不定形のメッシュが描画されていきます。


SpatialUnderstanding

SpatialMappingを使うと手軽に空間メッシュ表示が得られますが、平面に合わせてもう少し綺麗に賽の目で表示してほしいときがあると思います。そういったときはSpatialUnderstandingを「追加」します。

やり方は、[SpatialUnderstanding]-[Prefabs]から[SpatialUnderstanding]オブジェクトをHierarchyウィンドウにドラッグアンドドロップします。

あとは以下の点を修正するのみです。

  1. SpatialMapping側でメッシュ描画は不要なのでSpatialMappingオブジェクトの[Draw Visual Meshes]プロパティのチェックを外す


20170823_130049_HoloLens

SpatialMappingオブジェクトが動作していることを前提としてSpatialUnderstandingオブジェクトは動作するので、SpatialMapping側の[Auto Start Observer]プロパティのチェックを外したりすると動かなくなりますのでご注意ください。


動作環境:

Unity 5.6.2f1 + Visual Studio 2017 Update 3

ターゲットバージョン Windows 10 Anniversary Edition (10.0.14393)

posted @ 13:58 | Feedback (0)

2017年8月9日 #

[HoloLens]World-LockとBody-Lock

20170809_175529_HoloLens

World-Lock

HoloLensでMixed Realityアプリを作成するために、Unityでオブジェクトを配置するとWorld-Lockといって周りの空間にオブジェクトが配置されます。

そのため、ほかのところを向いてオブジェクトの方を向くと、きちんとオブジェクトはさっきの場所に居続けます。

また、周りの空間に対して配置されているので、シースルーで見える風景とCGのオブジェクトがずれることがなく、そのため3D酔いのようなことが起こりません。

ここまでであれば、すごく性能の良いARっぽい感じですが、HoloLensがMixed Realityと呼ばれるのは、現実世界のモノの向こう側にCGのオブジェクトを配置すれば、きちんと見切れてくれる、つまり、現実のモノでCGの一部や全部が隠れてしまうという効果が実現できるからです。

このように現実世界にモノを固定することをWorld-LockとHoloLensの世界では呼んでいます。

Body-Lock

一方、HoloLensのスタートメニューのように視点をかえるとそこに追いかけてくるようなものはBody-Lockと呼びます。Body-Lockでオブジェクトを配置することはあまりないかもしれませんが、例えば、動作状態やメッセージを常に視野の端にいれておきたいようなときがあると思います。

このようなオブジェクトの動きを実現するには、HoloToolkit-Unityにあるtagalongを使います。

Body-Lockの指定の仕方

Unityを立ち上げてHoloToolkit-Unityを設定するなど準備が整ったら、Unity標準の3DオブジェクトであるCubeとHoloToolkit-UnityのUITextプレハブを配置します。

UITextプレハブのInspectorで[Add Component]ボタンをおして、「Billboard (Script)」と「Tagalong (Script)」を追加します。

Billboard

Billboardはオブジェクトの表示面が常に視野を追従するようにするスクリプトです。UITextプレハブは配置直後はテキストが正面を向くようになっているので、Billboardを追加して[Pivot Axis]プロパティに「Free」を指定することで常にテキストが正面を向いてくれて読みやすい状態をキープできます。

Tagalong

Tagalongはオブジェクトが視界から外れたら視界の中に動かすためのスクリプトです。追加直後のプロパティ値から次のように値を指定します。このあたりは好みに応じて値を変更してみてください。

プロパティ 設定値
Tagalong Distance 1
Minimum Horizontal Overlap 1
Minimum Vertical Overlap 1
Minimum Tagalong Distance 0.5

このように設定すると次のサンプル動画のような動きになります。

デバッグ時の数値を確認するような場合にも使えると思います。

posted @ 19:04 | Feedback (0)

2017年7月2日 #

[MicrosoftMVP]Microsoft MVP Windows Developmentを再受賞しました

今年度から4月更新ではなく、既存MVPは7月一斉更新となりました。

それに伴い、2017年3月末までだった期間も6月末までに延長されていたのですが、本日、再受賞の連絡をいただき、また、ここから1年間、Microsoft MVPとして活動できることになりました。

一昨年から主な活動が自分の自社業務に直結してきたことに伴って、公に発信できる頻度が減ってきておりました。

じゃあ何をやっていたのかといえば、Microsoftと自社(および親会社)のエンゲージメント、そして、グループ全体の開発者さんにイントレプレナー的な活動を実践として見せ、発言として聞いてもらって、少しでも、開発者の意識を広げられるような風通しができるように活動してきました。

とはいえ、2008年に初受賞し、10回目となる今年は、2017年3月に日本でもHoloLensが発売開始され、ホロラボという会社の設立にもかかわることができるなど、自社業務は業務としてこれまで以上に活動の場を広げるとともに、Windows Mixed Realityについては自社の枠をこけて、色々活動を広げていき、また、どんどん情報発信していきたいと思っています。

また、よろしくです。

posted @ 1:10 | Feedback (4)

2017年4月8日 #

[movie]ゴースト・イン・ザ・シェル

ということで公開初日だったのでみてきました。

 

http://www.ghostshell.jp/

 

士郎正宗的な光学迷彩って、そうそうこんな感じ!このノイズが入る感じが素敵!

街は明るいブレードランナー市街地って感じで、これもGood!

で、少佐ってもう少し少女っぽいイメージだったんだけれど体形が…ってのは置いておいて。

バドーいいね!バドー。

あと電脳ダイブする瞬間の映像もいい感じ。

何よりももうMR!MR!MR!な世の中素敵ですよ。

実家にあるブラックマジック初版本とかアップルシード初版本とかまだ保存されているかなー。

 

さて、初音は、高校進学したときに同じ中学出身が過去にも将来もいないような高校に行ったので(実家暮らしだったけど)そこで人間関係リセットしちゃったし、大学も高校の人間関係あまり引きずらなかった(とはいえ、仲が良かった同級や先輩とは今も年賀状やりとりしている)。そういえば仕事で入札にいったらN社の担当者が高校の同級生だったことはあったわ。

そんな感じなので同窓会とか小学校、中学校、高校、大学も一回も行ってない(いや、そもそも開催されているのか?)わけで、そうなってくると色々昔の記憶が霧に包まれている感じになって、実家に帰って散歩しても都内なのにシャッター商店街があるくらいさびれているところだし再開発も進んでいるので、あれれ?って感じだったりと、「私の過去はなんだろう」的な不安感にリアルに陥ったりできるわけです。

今は、きっとネットがあるのでそういったことも少ないでけれどね。

だから、この作品のとあることがすごくよくわかるというか、見終わった後のエンドロールみているときに妙な不安感に襲われちゃいましたね。

まあ、そんなことで、私の魂はシェルの中にあるかなーということで。

 

そうそう。荒巻課長もよかったですよ!

posted @ 0:10 | Feedback (0)

2017年4月5日 #

[Azure]MicrosoftのTranslator Text APIもDNN翻訳に対応しています(しかももっと簡単にお安く)

https://blogs.technet.microsoft.com/microsoft_japan_corporate_blog/2016/11/24/161124-microsoft-translator/

上記より抜粋

--

ニューラル ネットワークによる翻訳は、音声 API およびテキスト API を使用する開発者が使用できます。

  • 本日より、音声 API 呼び出しでは、すべてニューラル ネットワークが利用されます。
  • テキスト API 呼び出しでは、標準カテゴリー (標準カテゴリーの詳細についてはこちらを参照してください:英語)「generalnn」を使用し、サポートされている 10 言語の任意の組み合わせを使用することで、ニューラル ネットワークを利用できるようになります。

--

ということで、Microsoft Azure Translator Text APIであればFreeプランであってもCategolyにgeneralnnって指定するだけでニューラルネットワークによる翻訳がビシバシ使えちゃいます。

これ使わない手はないですねほんと。

 

Translator Text APIを使うためにはAzure Poralでキーを取得したら、コードでキーからトークンを作ります。

トークンの作り方はこちら。

https://github.com/MicrosoftTranslator/GetAzureToken

 

トークンができたらそれをAuthorizatonヘッダに設定して

http://api.microsofttranslator.com/v2/Http.svc/Translate?text={0}&from=|1|&to={2}

のような感じで呼び出せば翻訳結果を取得できます({0}には翻訳したい原文、{1}にはjpなどの原文言語コード、{2}にはenなどの翻訳先言語コード)。

posted @ 23:01 | Feedback (1)

2017年4月2日 #

[Xamarin]Xamarinで作ったAndroidアプリをGoogle Playストアに登録する

Visual StudioでXamarinを使ってAndroidアプリを作成してストア登録するときの手順が最近(2017年3月末)変わりました。

以前の方法

以前であれば、[ツール]-[Android]-[Publish Android Application]メニューでダイアログを立ち上げて、そこでKeystoreなどを選択してapkファイルを作成しました。

そして、apkファイルを手動でGoogle Play Developer Consoleにアップロードして公開していました。

新しい方法

新しい方法では、ソリューションエクスプローラーでAndroidアプリのプロジェクトを右クリックして、そこで[Archive]を選ぶ方法に変更されました。

[Archive]メニューを選ぶとArchive Managerが立ち上がり、該当プロジェクトのアーカイブが進行します。

image

この時、ソリューション構成は[Release]を選択しておきましょう。

 

ビルドがうまく通ればapkファイルが所定のフォルダに作成されます。

image

ただし、このapkファイルは未署名のものなので、そのままではGoogle Playストアに登録できません。

[Distribute]ボタンを押して署名を行いましょう。

Select Channel

Ad HocなのかGoogle Playなのか配布方法を選びます。Google Playストア経由で配布するので[Google Play]を選択します。

image

Signing Identity

署名を行います。

Keystoreファイルがすでにあるならば[Import]ボタンをクリックしてファイルを取り込みます。

image

既存のKeystoreファイルがないのであれば[+]ボタンをクリックして、新規にKeystoreファイルを作成します。

image

Alias:別名など(プロジェクト名とか)

Password:パスワード

Validity:25以上の数字。1000とかでもOK。

Full Name:発行者のフルネーム

Organization Unit:部署名(個人なら入力しないでもOK)

Organization:会社名(個人なら入力しないでもOK)

City:市区町村区名

State:都道府県名

Country Code:JP

Google Play Accounts

Google Playストアに登録するアカウントを指定します。

image

Google PlayストアにログインしているIDとパスワードではなく、Google API AccessのClient IDとClient Secretを指定します。

image

これにはGoogle Play Developer Consoleにログインして「APIアクセス」のところでOAuthクライアントを作成してその認証情報からコピペします。

image

Google Play Track

ここまでできたら、アルファ版、ベータ版、段階的公開、製品版のどれで公開するかを指定します。

image

少し説明が必要そうなのは、段階的公開(Rollout)でしょうか。これはバージョンアップ版の公開を一度にすべてのユーザに対して公開するのではなく、徐々に公開していく方法です。

こうすることによって、致命的な障害があった場合に全台に影響がないようにします。また、新バージョンの最初の起動の時だけにアクセスするようなデータがあった場合の負荷分散にもなります。

段階的公開が必要なくらいの利用者数があるアプリとか夢のようですよね。

 

新しい公開方法は以上です。

以前に比べるとGoogle Play Developer Consoleへの配置までできるので便利ですね。

posted @ 3:36 | Feedback (58)

2017年3月12日 #

[VisualStudio]Visual Studio 2017がローンチされました

Visual Studio 2017がローンチされました。

インストールが早い!

Visual Studio 2017をインストールしようとしてまず驚くのはインストール時間の早さです。

「何をしたいか」を選ぶことで必要な機能のみがインストールされます。

起動が早い!

そしてインストールして起動するとさらに驚くと思います。とにかく起動が早い。

体感で半分くらいの起動時間になっているのではないでしょうか?

かっこいいコードに仕立てあげるまでが早い!

リファクタリングが強力になっていて、例えば、次のような初期化部分をかっこいい(どこからどこまでが初期化コードであるかがわかりやすい)形にリファクタリングする提案をしてくれます。

Use object initializer

ユニットテスト実施が早い!

ライブユニットテストという新機能が楽しいです。

ユニットテストを記述しておいて、それに対してグリーン(要はテストが通る)となるコードを書き始めたとしましょう。コードを書いていてビルドエラーがなくなるとユニットテストが自動的に行われてテストが失敗した行に「X」が表示されます。もちろん正しいコード(つまりグリーンになる)に修正すれば自動的に「X」は消えます。

これって、仕様を満たしたコードになった瞬間がわかるってことです。コードを書いている途中で実はグリーンになっていたのにそこに気づかずに書き進めてユニットテストしたらグリーンじゃなかったとなるよりも早く正解のコードにたどり着けると思います。

もちろん、これ以外にも様々な新機能があります。

使い始めたらVisual Studio 2015には戻りたくなくなりますし、「VS?いいんだけど起動遅いし」という今まで避けてきた勢も評価を改めることになるんじゃないかなって思いました。

posted @ 23:09 | Feedback (1)

[Windows10]Windows 10 Creators Update

RS2ことWindows 10 Creators Updateがいよいよ登場してきそうですね。

Insider ProgramのFirst RingにBuild 15042がきましたが、デスクトップ画面右下のビルド番号表示がきえており、いよいよという感じです。

Creators Updateがくるとアプリ製作者としては何がいいかといえば、やっぱり「Compact Overlay」でしょう。
この機能があると、対応するUWPアプリはいわゆる常に最上位に表示するのようなことが可能になります。

便利ですね。

posted @ 23:06 | Feedback (1)

[HoloLens]HoloLensの遠隔地Sharingを試す

HoloLabのみんなと遠隔地SharingをHoloLensで試してみました。

HoloLensは現実世界の中にCGなどのバーチャルなオブジェクトをミックスするハードウェアです。

上の写真は、リアルな部屋の中にCGオブジェクトが浮かんでいるようにみえますが、遠隔地にいるHoloLabのたけせんさんのアバターです。ですので、たけせんさんが動けばこのアバターも動きます。

一方、こちらは、また別の場所にいるHoloLabの前本さんのアバターです。

f:id:hatsune_a:20170221213413j:plain

もちろん、2人のそれぞれの部屋にも私のアバターがお邪魔しております。

このようにHoloLensのSharingを遠隔地で試すと、それぞれの部屋にいながら、バーチャル側ではアンカーからの相対位置を共有して、アバター同士で弾の打ち合いや当たり判定が正しく行うことができるようになります。

f:id:hatsune_a:20170221213618j:plain

FBでメッセージ交換しながらやってみましたが、レイテンシー的にもそれほどディレイが感じられないくらいでしたので、遠隔地Sharing、ふつうにアリだと思いました。

未来、一気に来ちゃった感がありますね。たのーいー。

posted @ 23:04 | Feedback (2)

[Xamarin]Xamarin.AndroidやるならJava8とAndroid SDK Build-Tools 25以上で決まりっ!

Android開発はJavaな訳ですが、Android 6.0 (API 23)まではJava7、Android 7.0 (API 24)からはJava8が使えます。

では、Xamarinはというと2016年の夏くらいに、Android SDK Build-Tools 25あたりでちょっといろいろありましたが、今現在では、もう安定しているので、今から始めるならば、JDK8 (x86)をOracleのサイトからダウンロードしてきて、Android SDK Managerで、

  • Android SDK Tools 25.2.5
  • Android SDK Platform-tools 25.0.3
  • Android SDK Build-tools 25.0.2

と、必要なSDK Platformのインストールしておくといい感じですね。

posted @ 23:03 | Feedback (0)

2017年1月1日 #

[MicrosoftMVP]2016年の資料公開歴

  1. 2016/04/01
    UWPアプリにおける正しいnetworking APIの使い方
    http://www.slideshare.net/akirahatsune/uwpnetworking-api
  2. 2016/04/02
    Windows 10の Bluetoothコンパニオンアプリについて
    http://www.slideshare.net/akirahatsune/windows-10bluetooth
  3. 2016/05/01
    FPV LEGO MINDSTORM EV3
    http://www.slideshare.net/akirahatsune/fpv-lego-mindstorm-ev3-prototype
  4. 2016/05/14
    UWPによるマルチデバイス開発最新事情
    http://www.slideshare.net/akirahatsune/uwp-62008016
  5. 2016/06/12
    //build/ 2016現地で感じたクライアント開発の潮流
    http://www.slideshare.net/akirahatsune/build-2016
  6. 2016/09/24
    Microsoft Holographicってなに?来年、Windows 10に来るらしいぜ?
    http://www.slideshare.net/akirahatsune/microsoft-holographicwindows-10
  7. 2016/11/23
    HoloLens 2Dでもここまでできる
    http://www.slideshare.net/akirahatsune/hololens-2d

posted @ 22:20 | Feedback (2)

[MicrosoftMVP]2016年の登壇歴

  1. 2016/01/28 KMCN - KMCNetworking Night at MTRL KYOTO
    Windows10でMotionSensorを始めよう
    https://kmcn.doorkeeper.jp/events/37999
  2. 2016/03/26 Meets IT and PUSH 2016 大阪
    AEDオープンデータAPIハンズオン
    https://atnd.org/events/75543
  3. 2016/03/26 Meets IT and PUSH 2016 大阪
    AED検索を実現している技術
    https://atnd.org/events/75543
  4. 2016/04/23 dotNETラボ
    FPV LEGO MINDSTORM EV3
    http://dotnetlab.net/category/event/2016%e5%b9%b4/page/9/
  5. 2016/05/14 オープンセミナー2016@岡山
    UWPによるマルチデバイス開発最新事情
    https://oso-web.doorkeeper.jp/events/42344
  6. 2016/05/21 まどすた #1 ~ //build/ 2016 振り返り
    //build/ 2016現地で感じたクライアント開発の潮流
    https://roommetro.doorkeeper.jp/events/44062
  7. 2016/09/24 dotNETラボ
    Microsoft Holographicってなに?来年、Windows 10に来るらしいぜ?
    http://dotnetlab.net/201609/
  8. 2016/11/23 Web VRとか文化祭
    HoloLens 2Dでもここまでできる
    https://eventdots.jp/event/604923

posted @ 22:08 | Feedback (4)

2016年12月31日 #

[C91]コミックマーケット91でI.O.E.A.ブースのお手伝いをしてきました。

2016年冬コミことコミックマーケット91(C91)で、I.O.E.A.のブースを手伝ってきました。

International Otaku Expo Association(IOEA/国際オタクイベント協会)は世界のオタクイベントが一同に集まる協会です。

http://ioea.info/

Windowsで動作する多言語自動翻訳アプリを使って、ブースに来た人をサポートっ!というより(IOEAスタッフの方は皆さん英語お話になるし、ブースに遊びにきていただいた海外の方も日本語うまいので)母国語で話していただいて感想集めておりました。

IOEA紙袋&冊子配布では、すごくかっこいいレイヤーさんとかといっしょに活動できましたし、一年の締めくくりとしては最高の3日間でした。

忘れないようにレイヤーさんのツイッターへのリンクを張っておこうと思います(順不同)。

twitter.com

twitter.com

twitter.com

twitter.com

twitter.com

twitter.com

posted @ 22:43 | Feedback (2)

2016年12月13日 #

[Azure]Azure DataMarketは2017/3/31に閉鎖されます。

Azure DataMarketは閉鎖され、そこで提供されていたサービス(すべてかは未確認)はAzure Marketplaceにて提供されます。

閉鎖時期は2017/03/31、それに先立つ2016/12/31以降は新規オーダーを受け付けなくなります。

--

DataMarket and Data Services are being retired and will stop accepting new orders after 12/31/2016. Existing subscriptions will be retired and cancelled starting 3/31/2017. Please reach out to your service provider for options if you want to continue service.

--

 

例えば、Microsoft Translator APIの場合、実際の翻訳URLなどは変わりませんが、そこで使われる認証トークンの取得が変更なります。

 

Azure DataMarketでの認証

サンプルコード

https://gist.github.com/b01abb3ddc0414157ba8d12bda9311e0:embed#Azure

 

Azure MarketPlaceでの認証

サンプルコード

https://github.com/MicrosoftTranslator/GetAzureToken/blob/master/AzureAuthToken.cs

posted @ 0:11 | Feedback (0)