PostgreSQL Advent Calendar 2017の15日目の記事です。
今年のはじめに購入したHololens(ホロレンズ)からPostgreSQLを操作した話をまとめます。
背景
ちょうど一年前に酔っ払った勢いでHololensを購入しました。$3,000(約33万円)しましたが、なんか未来感がハンパナイのでお気に入りです!!
家で焚火も楽しめます。
Hololens
マイクロソフトのMRデバイス。
https://www.microsoft.com/ja-jp/hololens
以下の流れでHologramを利用した開発ができます。
Unity(C# script)⇒Visual Studio(C# source)⇒Hololens
さっそくチュートリアルをやったりしてました。
チュートリアルを実装するだけでも、ジェスチャーによる操作や、音声による操作ができます。
チュートリアルを実装すると「Drop sphere」と発音することで球体を落下させ、「Reset world」と発音することで初期状態に戻すことができます。
しかし、ひとつ問題が。。。音声認識が英語オンリーだYO!orz
わたし「ドロップ スフィア!」
HOLOLENS(球体落下)
わたし「リセット ワールド!」
HOLOLENS(......)反応なし
わたし「リセット ワーウドゥ!」
HOLOLENS(......)反応なし
わたし「リィセトゥ ワァウド!」
HOLOLENS(......)反応なし
わたし「ムキーーーーーーーーー!!!」
よめ「うるさい!」
と、このようにかなりネイティブな発音をしないと認識してくれない問題がわたしを苦しめました。
リセットだけとか、ワールドだけとか単語のみにすると認識するので、フレーズの発音がダメなんだと思う。が、単語で登録するのは負けた気がするのでちょっと悪あがきを試みました。
【悪あがき】
「ヘルプ!」って発音すると、PostgreSQLに接続してテーブルの情報(TEXT列に"Drop sphere"もしくは"Reset world"をあらかじめ登録しておく)を引っ張ってくる。その内容に応じて、上記「Drop sphere」or「Reset world」と同じ挙動を取らせよう、と。
C#なんだし、Npgsql使えば楽勝だろ。かつる!!と。
Npgsql
ということで、久しぶりにNpgsqlを使ってみることに。
昔はdll持ってきて使うってイメージだったけど、最近はNuGetで管理されてるんですね。より楽勝じゃねーか!かつる!!と。
想定した構成は「Hololens⇒Npgsql⇒PostgreSQL」。
挫折
挫折1
さっそくNuGetでNpgsqlをインストール!
> Install-Package Npgsql -Version 3.2.6
どうやら、VisualStudioとNpgsqlで利用しているRunTimeライブラリ(?)が異なるためインストールできないみたい。オワタ(;_;)
と泣いてたら、こんな情報が。VisualStudio2017にしてnetstandard20使えば動くらしい!かつる!!
挫折2
ということで、もろもろ最新化(VisualStudioも2015から2017に)して、リトライ!
無事にNpgsqlはインストールされました!!が、今度はHololensへのデプロイで似たようなエラーが。。。今度はHololensのOSバージョンが古いって(16299 vs 14393)。
やっぱりオワタ(;_;)
ここで心は折れたYO!orz
結局
「Hololensから直接クエリ投げなくてよくね?」って考えて、いったんHTTPリクエストをnode.jsで受けてPostgreSQLに問合せする形に変更しました。。。
結局の構成は、「Hololens⇒HTTP⇒node.js⇒PostgreSQL」に。
こうすることで無事に「ヘルプ!」ということで初期状態に戻すことができるようになったとさ。めでたし、めでたし。
まとめ
いまだに結局、直クエリでの実行はできませんでした。
まぁ、そのうちHololensのほうもバージョンアップしていってなんとかなるのかな。
ということで15日目でした。明日16日目はfujii_masaoさんの登場です!