わんくま同盟 Blog's

わんくま同盟

メニュー

わんくま同盟

  勉強会情報

  メンバリスト

掲示板

ブログ

リンク

統計

わんくま同盟メンバ

わんくま同盟わんくま同盟

わんくま同盟メンバの最新の記事

[NUI]Cognitive Service - Speech Service Previewが登場しました

build 2018の初日である2018/5/7にSpeech ServiceがCognitive Serviceに追加されました。

https://azure.microsoft.com/ja-jp/services/cognitive-services/speech-services/


あれ?音声認識ってもともとあったよね?とお気づきの方もいるとは思いますが、従来のものは、Bing Speech APIやCustom Speech Serviceですね。

Bing Speech API:20言語に対応した音声認識

https://azure.microsoft.com/ja-jp/services/cognitive-services/speech/

Custom Speech Service:音響モデルや言語モデル、ノイズ除去などに対応した音声認識

https://azure.microsoft.com/ja-jp/services/cognitive-servic


新しいSpeech Serviceは、Bing Speech、Custom Speech Service、Translator Speech APIを統合したものです。

  1. 一つのキーで
  2. シンプルな価格で
  3. カスタマイズ可能で

というのが特徴です。

従来、「音声認識」についてはCustom Speech Serviceがありましたが、Speech Serviceでは「音声合成」や「翻訳」もカスタマイズ可能になりました。


いま、比較表をつくっているのですが、buildの資料だと音声認識が28言語ってかいてあるんですが、その一覧がのっている資料がなくてちょっと困っているので、ここにあるよ!って情報をお待ちしております。

posted @ 2018/05/10 9:31 by 初音 玲

[HoloLens]HoloLens開発のためのUnityおよびMRTKのバージョン(2019/05/09現在)

UnityとMRTKのバージョンはどれをつかえばいいのかわからなくなる時があるのでメモ。


UnityはUnty 2018もでていますが、2018/04/30に提供が開始されたUnity 2017.4.2f2。

https://unity3d.com/jp/unity/whatsnew/unity-2017.4.2


MRTK (Mixed Reality Toolkit for Unity)は、2017.2.1.4 Patch Release。

https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/2017.2.1.4

posted @ 2018/05/09 2:50 by 初音 玲

[Azure]Azure PowerShellの具体例(例4:Cognitive Serviceの追加)

前準備

http://hatsune.hatenablog.jp/entry/2018/04/11/010156

Azureへのログイン

PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。

Login-AzureRmAccount

image27_thumb

ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続します。

しかし、複数のサブスクリプションに紐づいている場合は、目的のサブスクリプションにつながらない場合もあります。

その場合は、Get-AzureRmSubscriptionでサブスクリプションIDを調べて、Select-AzureRmSubscriptionを使ってサブスクリプションを指定します。

Select-AzureRmSubscription -SubscriptionId 'xxxx-xxxx-xxxxx-xxxx'

例4:Cognitive Serviceの追加

Azure PowerShellを使って具体的にTranslator Text APIを新規追加する方法を順番にみていきましょう。

(1)リソースグループを新規作成する(既存のものを使うときには省略)
New-AzureRmResourceGroup ?Name myResoureceGroup ?Location ‘Japan West’

image16_thumb5

これでmyResourceGroupという名前で西日本にリソースグループが作成できます。

(2)Translater Text APIを有効化する
New-AzureRmCognitiveServicesAccount ?Name Test_Translator -ResourceGroupName myResoureceGroup -Type TextTranslation -SkuName F0 -Location 'global'

image

これでTest_Translatorという名前で、Translator Text APIが無料プランで有効化できます。

Congnitive Serviceは、以前はどこのリージョンを使うかを指定していましたが、現在は、特定のリージョンへの依存関係のないサービスです。そのため、Locationパラメータの指定は必要ですが指定値は常にglobalになります。

(3)APIキー値を取得する
Get-AzureRmCognitiveServicesAccountKey -ResourceGroupName myResoureceGroup -Name 'Test_Translator'

image

これで取得したどちらかのキー値を使えば、Translator Text APIを使うことができます。持ち主などの認証はありませんので、非常に重要な値といえます。

(4)APIキー値を再作成する

キー値を変更したいようなときは、キー値の再作成を行います。

New-AzureRmCognitiveServicesAccountKey -ResourceGroupName myResoureceGroup -Name 'Test_Translator' -KeyName Key1

image

これでKey1の値だけ再作成を行いました。キー値は2つあり利用はどちらでも同じです。Key1は自分用、Key2は一時的な貸出用などにしておくと、貸し出しが終わったらKey2を再作成するという運用ですみます。

(5)利用できる料金プランを取得する
(Get-AzureRmCognitiveServicesAccountSkus -ResourceGroupName myResoureceGroup -Name 'Test_Translator'
 | Select-Object -expandproperty Value).Sku

image

無料プランのF0、有料プランのS1~S4があることが分かりました。

(6)料金プランを変更する

Set-AzureRmCognitiveServicesAccount -ResourceGroupName myResoureceGroup -Name 'Test_Translator' -SkuName S1

image

これで料金プランだけS1に変更できました。もちろん、キー値など他の要素は変わりません。


指定できるCognitiveServiceについて

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 (プレビュー)に対応した指定はありません。
9CustomSpeech
10 CustomVision.Prediction 画像分析、タグ付け、著名人の認識、テキスト抽出、およびスマート サムネイル生成などの機能があります。
11 CustomVision.Training 画像分析、タグ付け、著名人の認識、テキスト抽出、およびスマート サムネイル生成などの機能があります(southcentralusのみ)
12Emotion

プレビュー。一般提供はFaceAPIへ統合。

感情認識を使用してユーザー エクスペリエンスをパーソナライズ

13Face写真に含まれる顔の検出、識別、分析、グループ化、タグ付け (*一部リージョンのみ提供)
14LUISユーザーが入力したコマンドをアプリケーションが理解できるようにします (*一部リージョンのみ提供)
15QnAMaker*別の仕組みになったため?指定不可
16SpeakerRecognition音声を使用して個々の話者を識別および認証 (*一部リージョンのみ提供)
17SpeechTranslationリアルタイムの音声翻訳を簡単に実行
18TextAnalytics未加工テキストの高度な自然言語処理に対応しています。感情分析、キー フレーズ抽出、言語検出の 3 つの主な機能があります。 (*一部リージョンのみ提供)
19TextTranslation機械翻訳を簡単に実行
20WebLM*Web Language Model APIはCognitive ServiceからAzure Machine Learning Studioに変更になったため指定不可

残念ながら、この一覧を取得するコマンドはないのですが、Cognitive Serviceは今後も増えていく予感がしますし、Emotion APIがFace APIへ統合されるたように統廃合もあるでしょうから、指定できるTypeの一覧などがあると指定値に悩まなくてよい(まあ、ドキュメントサイトみましょうってことなのでしょうけれど)ですね。

現時点で指定できるAccountTypeでCognitive Serviceを有効にしていくと次のような感じで作成できます。

image

以上、コマンドラインによるCognitive Serviceの追加でした。各ユーザがもっているサブスクリプションに同じ定義で追加したいときとかも便利ですね。

posted @ 2018/04/22 22:33 by 初音 玲

[Azure]Azure PowerShellの具体例(例3:ストレージの追加)

前準備

http://hatsune.hatenablog.jp/entry/2018/04/11/010156

Azureへのログイン

PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。

Login-AzureRmAccount

image27_thumb

ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続します。

しかし、複数のサブスクリプションに紐づいている場合は、目的のサブスクリプションにつながらない場合もあります。

その場合は、Get-AzureRmSubscriptionでサブスクリプションIDを調べて、Select-AzureRmSubscriptionを使ってサブスクリプションを指定します。

Select-AzureRmSubscription -SubscriptionId 'xxxx-xxxx-xxxxx-xxxx'

例3:ストレージの追加

Azure PowerShellを使って具体的にBLOBを新規追加する方法を順番にみていきましょう。

(1)リソースグループを新規作成する(既存のものを使うときには省略)
New-AzureRmResourceGroup ?Name myResoureceGroup ?Location ‘Japan West’

image16_thumb

これでmyResourceGroupという名前で西日本にリソースグループが作成できます。

(2)ストレージアカウントの作成
New-AzureRmStorageAccount ?StorageAccountName 'mystorage0409' ?Location 'Japan West' ?ResourceGroup myResoureceGroup ?SkuName 'Standard_LRS' ?Kind storage

image

西日本に'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で確認してみましょう。

image

(3)BLOBコンテナの作成

ストレージアカウントができているので、次にやる作業はBLOBサービスにBLOBコンテナを作成することです。

New-AzureRm・・・のようなリソースマネージャー関連コマンドではなくなってしまいますが、次のようなコマンドでBLOBコンテナが作成できます。

$storageAccount = Get-AzureRmStorageAccount ?Name 'mystorage0409' ?ResourceGroupName myResoureceGroup
$ctx = $storageAccount.Context
New-AzureStorageContainer ?Name 'myblob' ?Context $ctx ?Permission blob

image

これで、パブリックアクセスレベルが「BLOB専用の匿名読み取りアクセス」のmyblobというBLOBコンテナが作成できました。

(4)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'

image

これでローカルPCのファイルがAzure上のBLOBコンテナに入りました。

(5)BLOBコンテナの内容一覧

BLOBコンテナにあるBLOBファイルの一覧を表示してみましょう。

$storageAccount = Get-AzureRmStorageAccount ?Name 'mystorage0409' ?ResourceGroupName myResoureceGroup
$ctx = $storageAccount.Context
Get-AzureStorageBlob -Container "myblob" -Context $ctx

image

パブリックアクセスレベルが「BLOB専用の匿名読み取りアクセス」となっているので、BLOBファイルへのURLを公開すれば誰でもが参照のみ可能となります。

(6)アクセスキーの取得

参照は誰でもができますが、一部の人には更新もできるようにしたい場合があります。

しかしAzureサブスクリプションに対するアクセス権を渡してしまうのは大げさです。

そのような場合は、ストレージアカウント名とキーを渡してあげて、Azure Storage Explorerなどを使ってもらうといいでしょう。

詳細は:http://hatsune.hatenablog.jp/entry/2018/03/08/065243


Get-AzureRmStorageAccountKey -Name mystorage0409 -ResourceGroupName myResoureceGroup

image

mystorage0409という名前と、key2の値を更新者に渡してあげるといいでしょう。

注意(2018/04/15現在)

今回、ストレージアカウントのアカウントの種類として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に何らかの問題があるのかもしれないが注意した方がいいでしょう。





posted @ 2018/04/15 21:02 by 初音 玲

[Azure]Azure PowerShellの具体例(例2:接続先サブスクリプションの変更)

前準備

http://hatsune.hatenablog.jp/entry/2018/04/11/010156

Azureへのログイン

PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。

Login-AzureRmAccount

image27_thumb_thumb

ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続します。

しかし、複数のサブスクリプションに紐づいている場合は、目的のサブスクリプションにつながらない場合もあります。

その場合は、サブスクリプションを指定してログインしてもいいのですが、Login-AzureRmAccountでのサブスクリプション指定には、そもそもとしてサブスクリプションIDが必要です。サブスクリプションIDを調べるのにブラウザでAzure Portalにログインするのも本末転倒な気がします。

そこで便利なのが、Get-AzureRmSubscriptionです。

Get-AzureRmSubscription

image_thumb1

これでサブスクリプションIDが分かったので、使いたいサブスクリプションを指定します。指定は、サブスクリプションIDでもサブスクリプション名でもいいのですが、サブスクリプションID指定をよく使います。

Select-AzureRmSubscription -SubscriptionId 'xxxx-xxxx-xxxxx-xxxx'

Select-AzureSubscriptionがいわゆるclassicと呼ばれているもので、Select-AzureRmSubscriptionがAzureリソースマネージャーによる指定となります。

注意点

Select-AzureRmSubscriptionはあくまでもAzureリソースマネージャーによるサブスクリプションの変更です。

この方法で接続およびサブスクリプション指定した場合は、以降のコマンドもhogehoge-AzureRmHogehogeのように「Azure」でなく「AzureRm」系のコマンドを使う必要があります。

posted @ 2018/04/15 16:26 by 初音 玲

[Azure]Azure PowerShellの具体例(例1:WebAppsの追加)

前準備

http://hatsune.hatenablog.jp/entry/2018/04/11/010156


Azureへのログイン

PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。

Login-AzureRmAccount

image27

ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続する。

もし、複数のサブスクリプションがある場合は、サブスクリプションを指定して実行するといいでしょう。

Login-AzureRmAccount ?subscription xxxxxx-xxx-xxx-xxx-xxxx
image10


例1:WebAppsの追加

それではAzure PowerShellを使って具体的にWebAppsを新規追加する方法を順番にみていきましょう。

(1)リソースグループを新規作成する(既存のものを使うときには省略)
New-AzureRmResourceGroup ?Name myResoureceGroup ?Location ‘Japan West’

image16

これでmyResourceGroupという名前で西日本にリソースグループが作成できます。

(2)フリープランでApp Serviceプランを作成
New-AzureRmAppServicePlan -Name ’mywebapp0409' ?Location ‘Japan West’ -ResourceGroupName myResoureceGroup -Tier Free

image21

App Service プラン名が「mywebapp0409」のApp Serviceプランを西日本に作成しました。

(3)Webアプリを作成
New-AzureRmWebApp -Name ’mywebapp0409' ?Location ‘Japan West’ -AppServicePlan ’mywebapp0409’ -ResourceGroupName myResoureceGroup

App Webアプリ名が「mywebapp0409.azurewebsites.net」のWebアプリを西日本に作成しました。

(4)発行プロファイルの取得
Get-AzureRmWebAppPublishingProfile -Name ’mywebapp0409' -ResourceGroupName myResoureceGroup ?outputfile “outputfile”

image29

これでoutputfileという名前で発行プロファイルが保存できます。

image34

(5)Webソケットの有効化
Set-AzureRmWebApp ?Name 'mywebapp0409' -ResourceGroupName myResoureceGroup ?WebSocketsEnabled true

これでWebソケットが使えるようになります。

(6)アプリケーション設定
$AppSettings = @{"ClientId"="id";"Password"="pass"}
Set-AzureRmWebApp ?Name 'mywebapp0409' -ResourceGroupName myResoureceGroup ?AppSettings $AppSettings 

image

アプリケーション設定にClientIdとPasswordを設定しました。アプリケーション設定を定義することでWeb.Configに設定した設定値を書き換えることができます。

さいごに

あとはWebアプリをデプロイすればOKです。

Azureでは、デプロイオプションとしてWeb Appsへのデプロイ元が選択できます。VSTS、onedrive、ローカルGitリポジトリ、GitHub、Bitbucker、DropBoxなどから選択できます。もちろん自社内のGitを指定することも可能です。

これにはローカルgitやgithubと組み合わせてとかもできます。

Visual Studioからデプロイしてもいいでしょう。

このあたりは機会があれば、別の機会にご紹介したいと思います。

posted @ 2018/04/14 2:01 by 初音 玲

[Azure]Azure PowerShellを使ってみよう

Azure Cognitive Serviceを使ったクライアントアプリを作成するときに、Azure側でサービスを有効化しようとするとAzure PortalからGUIで操作が必要です。

知っている人ならば簡単でしょうけれど、知らない人に操作を伝えようとすると画面のハードコピーを取得して、それをペタペタと貼り付けて「手順書」なるものを作らなければならない場合があります。

しかし、クラウドですからちょっとしたタイミングでAzure Portalが改善され見た目が変わったときに、元の手順書から類推できる人ならばいいのですが、ちょっとでも違っているだけで「画面が違う」というクレームを人がいたりするわけです。

Azure Cloud Shell

Azure PortalにもAzure Cloud Shellというコマンドラインでの操作方法があります。

ポータルの起動

このツールのいいところは特に何かインストールしなくても使える点です。

しかし、Azure Cloud Shellを使うにはMicrosoft Azure Files ストレージを使用するためのセットアップと低額ですが維持費用が掛かる点を嫌がるケースもあります。

そのようなときはクライアントにAzure PowerShellをインストールするのがよいでしょう。

Azure PowerShell

Azure PowerShell を PowerShell ギャラリーからインストールできます。

しかし実際にやってみたらちょっと面倒だったので、Web Platform Installerを使った方がいいでしょう。

http://aka.ms/webpi-azps

image

image

Azureへのログイン

PowerShellを起動して次のコマンドを入力するとAzureへのログインダイアログが表示されます。

Login-AzureRmAccount

image

ここでIDとパスワードを入力してサインインに成功すると対象となるサブスクリプションに接続する。

もし、複数のサブスクリプションがある場合は、サブスクリプションを指定して実行するといいでしょう。

Login-AzureRmAccount ?subscription xxxxxx-xxx-xxx-xxx-xxxx
image

posted @ 2018/04/11 1:01 by 初音 玲

Microsoft Visual Basic 6.0 環境構築 2018年版

今更感ありますが、20年前の製品がまだ使えるっつうのもすごいものだなぁ。 最新は2004年のVB6SP6・・・14年もの・・・

posted @ 2018/04/07 13:33 by まーる

わんくま名古屋N44はじまたー

いつものごとく、わんくま名古屋の時だけ更新になっていますが・・・

セッションは以下3つ、LTはだれが何をやるでしょうかたのしみですねぇ。

  • 「業務システム開発モダナイゼーションガイド」 by You&Iさん
  • 「Microsoft Visual Basic 6.0 環境構築」 by You&Iさん
  • 「ASP.NETでする多言語対応」 by 中博俊

posted @ 2018/04/07 13:06 by まーる

[Windows 10]Windows 10 Ver 1803 (Build 17133.1)

Windows 10 Insider Preview Fast RingにBuild 17133.1がきました。

デスクトップ右下のPreview表示がなくなりましたので、これがRS4の正式版かな?

posted @ 2018/03/31 13:42 by 初音 玲

[Azure]別アカウントのAzure BLOBにアクセスする

自分のAzureサブスクリプションにあるAzure Storageにアクセスするには、Azure PortalやAzure Storage Explorerなど様々な方法がありますが、コンテナにたどり着くルートは次の3つの方法があります。

  1. IDとパスワードとサブスクリプションを指定して、ストレージアカウント名→BLOB→コンテナ
  2. 接続文字列を指定→BLOB→コンテナ
  3. ストレージアカウント名とアクセスキーを指定→BLOB→コンテナ


この中で1の方法はBLOB以外の資源へのアクセス権も得てしまうので自分以外の人には使わせることができないルートになります。

一方、2や3の方法であれば、例えば、データファイルを入れてほしいときなどに「接続文字列」や「ストレージアカウント名とキー」をお知らせして、Azure Storage Explorerからファイルをアップロードしてもらうと手軽です。

複数のお客様とのやりとりも

  1. お客様ごとにストレージアカウントを作成
  2. 接続文字列をお客様にお知らせ(お客様ごとに異なる値になる)
  3. お客様はAzure Storage Explorerを使ってファイルエクスプローラ感覚で指定の場所にファイルを配置

で済んでしまいます。


実際の手順は以下のようになります。

(1)

image

[ストレージアカウント]-[BLOB]-[コンテナ]にあるファイルを確認します。


(2)

image

該当ストレージアカウントの接続文字列を取得します。


(3)

Azure Storage Explorerを起動してAzureとの接続には「Use a connection string a shared access signature URI」を選択します。これで接続文字列指定の接続が可能になります。

image


(4)

image

接続文字列を貼り付けます。


(5)

image

Azure Portalにあったファイルが確認できます。

ここでAzure Storage Explorerをつかってファイルを1個追加してみましょう。

image

image


(6)

ちゃんとAzure側に入ったか確認しましょう。

image

きちんとはいりましたね!

posted @ 2018/03/08 6:52 by 初音 玲

新年のご挨拶

あけましておめでとうございます。

昨年は音声認識と翻訳というCognitiveな領域、そしてxR(AR/VR/MR)をメインにお仕事をさせていただきました。

本年も引き続き突き進んでいきます。

コミュニティー活動についてもHoloMagiciansを始めとして様々なコミュニティーのお手伝いをしていきたいと思いますので、お気軽にお声がけください。

posted @ 2018/01/02 8:33 by 初音 玲

2017年7月~12月までのまとめ

他サイトで書いた7月~12月のブログ記事です。

■Hatenaブログ

ディープラーニング(深層学習)を理解してみる(勾配降下法)

ディープラーニング(深層学習)を理解してみる(勾配降下法:最急降下法と確率的勾配降下法)

ディープラーニング(深層学習)を理解してみる(勾配降下法:ベクトル、内積、微分、偏微分)

ディープラーニング(深層学習)を理解してみる(勾配降下法:計算方法)

ディープラーニング(深層学習)を理解してみる(勾配降下法:計算確認)

ディープラーニング(深層学習)を理解してみる(損失関数)

■Qiitaブログ

Oracle接続エラー(ORA-12528,ORA-214,ORA-12154,ORA-01122)対応の備忘録

【Oracle】トリガーからWindowsバッチを実行する

【Eclipse】プロジェクトのオーバーラップエラー

【Unity】8月8日はそろばんの日 16進そろばんを作ってみた。

Windows Server 2003R2 + Oracle10g から Windows Server 2008R2 + Oracle11g 移行の備忘録

【Unity】シーン表示上のシーンの向きに戸惑わない方法

【ASP】半角1バイト・全角2バイト換算で文字列の桁数を取得する

【Java】UTF-8(BOM付き)が0xFFFD(REPLACEMENT CHARACTER)に変換される

【Unity】スコアの表示:「はじめてのUnity」のブロック崩しを改造しながら学ぶ

【Unity】ゲームマネージャークラスを作る:「はじめてのUnity」のブロック崩しを改造しながら学ぶ

【Unity】ブロックをスクリプトで配置:「はじめてのUnity」のブロック崩しを改造しながら学ぶ

【Unity】音を鳴らす:「はじめてのUnity」のブロック崩しを改造しながら学ぶ

【Unity】索引とまとめ:「はじめてのUnity」のブロック崩しを改造しながら学ぶ

InstallShield LE for VisualStudioによるアップデートインストールの作成

【KB4041681】外部データベース ドライバー(1)で予期しないエラーが発生しました。

なぜ「C」から始まるのか?

【BAT】フォルダの更新日時を維持してコピーする

【.NET】外部アプリケーションの画面上すべてのタイトル(キャプション)を取得する

SQL*Loaderに改行コードが含まれたCSVファイルの取り込み

Visual Basic 2017年の振り返り

Windows Subsystem for Linuxでの .NET Core を使用したVisual Basic のHello World アプリケーションの構築

WSLでJupyter NootbookからVisual Basicを実行する

【.NET】末尾数字を取得する

うんこマークにまつわる話

【.NET】OpenCVSharpとZXing.Netを使ったバーコード読み込み

【VBS】PowerShellを使用した日時書式変換

なぜ「+1」や「-1」をするのか

【VBS】HDD情報を取得する

「ソ」「ソ」による文字化けについて

【.NET】固定長ファイル(複数行一組対応)の読み込み

【.NET】テキストファイルの末尾からn行を読み込む

【.NET】UTF-8対応Iniファイルの読み込みと書き込み

posted @ 2017/12/31 18:48 by やじゅ

[勉強会]12/16 わんくま東京#108 セッション資料

ここしばらく、東京勉強会でしゃべるのは12月だけのような気がします。

今回はデモは内容も含めてあえて非公開です。でもセッション資料とそれにまつわるセッション部分は公開なのでそのまま載せておきます。

当日の模様は Youtube にて公開中…

posted @ 2017/12/20 13:37 by とっちゃん

[NUI]中国の広州にいってきました

「食は広州にあり」

今回は、それを実感しました。


広州は気候も温暖だし、街の中心街しかいませんでしたが、そのあたりの治安は非常に良いですし、食べ物も日本人の口にもきっとあう(どこの国に行ってもその国の食べ物をおいしく食べちゃう人なので日本人の口に本当に合うか自信がない)と思います。

こちらの若者(お客様の試用期間中の方)とかもFateが好きだってことでFGOの話で盛り上がれますし、なかなかいい感じですよ。


街中には、いろいろなところで黄色やオレンジの自転車に乗っている人をみかけますが、これが噂の乗り捨て可能自転車ってやつですね。

駐輪ステーションだけではなく、そのあたりに止められている自転車でも、専用アプリに自転車についているバーコードをかざせば鍵が開いて課金開始、好きなところに乗りしてて鍵をかければ課金終了。

専用アプリには、利用距離、利用時間、消費カロリー、料金が履歴として表示されます。

乗り捨てた自転車は定期定期に駐輪ステーションに運んでいるようですが、運ばれる前であっても、そこから利用が開始できるのがすごいですね。これも高精度GPSが自転車に内蔵されているからできる芸当。

そして、鍵を外してから掛けるまでが課金範囲なので、乗り捨てたときに盗難されるというリスクを使う側が追わないでいいという安心感が重要だなーって思いました。

ほんと、これいいですね。


中国のビジネスのスピード感は、日系企業さんでも早くって、すごく心地いいですね。

ノウハウまねされるというリスクはあるしスピードも速いですが、同時に、マネするよりも「今でしょ!」とマネする間も惜しんでよいものだったら広めちゃえ!的な感覚もすごいあると思います。

日本の国内のスピード感だと「まってられないから仕方がなくマネしてでも手に入れる」ってのもあるんじゃないですかね。だから、スピード感で答えることができれば、いい感じなんじゃないかって思いました。

そして、まじめな人も不真面目な人もいるし、それぞれ優秀、つまり、まじめさ優秀、不真面目さも優秀という感じだし、自分の非を認めないのは共通しているので、だったら、まじめな人と組んで、非を認めさせるのではなくて、そちらが不利益になるよという話し方をするといろいろ捗ります。



それはそうとして、今回の出張で3日間一緒にお客様訪問などの対応してくれた現地社員さんは、150cmくらいでスレンダーでぱっつん前髪でメガネっ子でアニメ声という属性盛りの新卒現地採用の中国人女性で、ファッションなんかも日本での流行を取り入れているからか、街中とかで中国人の若者から「あ、日本の女の子だ」とかすれ違いざまに言われちゃう感じで、日本語も堪能だし、おいしいもの良く知っているし、非常に楽しかったです。

ただ、FateとかFGOの話しても乗ってこないので、ネコをかぶっているのかオタク趣味はないのか、ないならちょっと残念かな。チョコレート好きだってことは聞き出したので、次回訪問する機会があったら、チョコを差し入れてあげようかと思いました。

技術よりもマネージメントに興味があるらしいけど、能力もあって普段厳しいけど、チョコ食べるとほんわか笑顔で、骨付きチキンとかもきれいにおいしく食べたりするわけで、でもって、ドジっ子属性ついていたら、ほぼ、最強布陣なんじゃないかって密かに思いました。

すごいね!広州ということですね。

posted @ 2017/12/09 9:51 by 初音 玲

[HoloLens]仙台IT文化祭の資料を公開しました

2017/10/29に東北大学キャンパスで開催された仙台IT文化祭の登壇資料を公開しました。

https://www.slideshare.net/akirahatsune/hololens-windows-mr

posted @ 2017/11/20 13:11 by 初音 玲

[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 @ 2017/10/15 21:50 by 初音 玲

[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 @ 2017/10/13 0:53 by 初音 玲

[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 @ 2017/10/07 17:31 by 初音 玲

[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 @ 2017/09/24 7:39 by 初音 玲

[勉強会] 9/9 わんくま横浜#10 セッション資料&デモソース

今回もとりとめもなく。。。な資料です。

DL はこちらから https://1drv.ms/p/s!AuVVWpjfPyA0hOU80NmyzhrIT-2eGA

知見の詰まっていないソースコードは、GitHub にあります。

https://github.com/Tocchann/Yokohama10

プロジェクトは、VS2017 です。Community Edition でも動くはずです。ちなみに、名前付きパイプのクライアント以外は、全部C++です(UNICODE版)。

VS2017でプロジェクトを起こしてる関係で、一部のファイルはUTF-8で保存されており、warning が出ます。ま、該当ファイルはコメント以外に非ASCII文字は入っていないので問題はないですけどねw

コードは自由に再利用していただいて構いませんが、自己責任でお願いしますw

posted @ 2017/09/14 11:21 by とっちゃん

[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 @ 2017/09/07 0:36 by 初音 玲

[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 @ 2017/09/06 16:36 by 初音 玲

わんくま名古屋N42はじまた

いつものごとくわんくま参加の時だけ書いてる感じですが、すんまそん。

You&Iさんのセッションはじまたー

posted @ 2017/09/02 13:03 by まーる

[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 @ 2017/08/23 13:58 by 初音 玲

[生存確認] 生きています

はい。生きております。先日久しぶりに中さんから連絡もらってお互い生きてるなーと生存確認w

前回転職してから 5 年ほど経過しておりますが... 実はその間、一切 .NET やってないんですよねww

ずっと Java ばかりで (なぜそうなったかは中部にいる方はわかって頂けると思います)。で、最近はいわゆるスマートデバイス向けが多いです。時代変わりましたよねー。私が技術系掲示板で暴れてた頃は、サーバサイドでとにかくやる。クライアント スクリプトはなくても動作しなきゃダメ!って時代でした。その時にもありましたけど Ajax、JSON、HTML5 (というかカスタム要素) の台頭、そして Angular や有能な UI ライブラリ、スマホのスペック向上で、バリバリとクライアント サイド中心になっています。もちろんビジネス ロジックはサーバサイドですが、サーバサイドは説明が少なくて済むので新人にやらせるのが定石になってきました。まさかこんな時代になるとはw

たとえば私は今、AngularJS + OnsenUI → Ajax(JSON) → Java(鯖側) みたいなベタベタなのをやっています。

某 T 社からの呪縛はとけましたが、10 年以上も付き合いのある「拝承!」なところとは、いくら転職を繰り返しても付き合いが続いています。本体とは切れましたが、はい◯すとかはい◯るとは社名変わる前からずっと付き合いありますね。

ところで、サイトは結局更新しませんでしたね。すいません!許してください!何でもしますから!

ん?(ry

posted @ 2017/08/15 8:44 by じゃんぬ

[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 @ 2017/08/09 19:04 by 初音 玲

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

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

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

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

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

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

また、よろしくです。

posted @ 2017/07/02 1:10 by 初音 玲

2017年1月~6月までのまとめ

他サイトで書いた1月~6月のブログ記事です。
2月に書いた「なぜ機械学習にPythonが選ばれるのか」がそこそこ反響がありました。

■Hatenaブログ

「サザエさんのじゃんけん データ分析」の2016年の結果

Shizuoka.py #6 and shizudevの資料公開

Chainer ver2.xをWindowsにインストールしてみた

ディープラーニング(深層学習)を理解してみる(パーセプトロンと論理演算)

ディープラーニング(深層学習)を理解してみる(TensorFlow Playgroundを試す)

■Qiitaブログ

「サザエさんのじゃんけん データ分析」のR言語からPythonに移植

PostgreSQLのOLEDB接続は使用しない方がいい

なぜ機械学習にPythonが選ばれるのか

ローマ数字のⅣとⅥ、Ⅸと?を混同しなくなる方法

空のプロジェクトからASP.NET MVC5 EntityFramework6 for Oracleを試す(SQL文を直接実行)

SlackクローンのMattermostのWindows版を動かす

仮想シリアル(COM) ポートドライバ「com0com」によるシリアル通信

Wiiリモコンによる安価なインタラクティブホワイトボード(Windows)

自作プロジェクターを作って大きめホログラム映像を見てみた

【Java】列挙型(enum)のリフレクションによる動的メソッド呼び出し

【Visual Basic】ByRef returnについて

■SlideShare

数学史 黎明期 from yaju88

posted @ 2017/06/29 20:56 by やじゅ

WiX 3.14 始動?

Let's Code - WiX: v3.14

3.11 もリリースされたので、3.14 が動き始めたようです。なんで 3.14 なのかって?

Sound goo? I thought so. だそうです。

なんか、バージョニングルールに苦労してるみたい。確かに細かくリリース仕様と思うと難しいのよねぇ。。。

posted @ 2017/06/05 13:38 by とっちゃん

[WiX] WiX v3.11 Released

WiX Toolset v3.11 Released

5/5 に Stable 版がリリースされました。ブログに書くのすっかり忘れてた。

3.11 の主な対応項目は、VS2017対応。

それと、大きな変更点としては、VS機能拡張が独立して、特定バージョンごとにばらばらになったこと。

ちなみに、AppX ビルドは有償版(日本に代理店はないので、直接購入のみだと思います)で別提供されている機能拡張(WiXのExtension)なので、WiX 本体だけでは対応できませんのでご注意をw

そろそろ、VS2017.2 も出てくる気がするし、周りもほぼほぼ対応が進みつつあるので、そろそろ本腰入れて2017環境移行を検討しないといけないなぁ。。。

ダウンロードは、http://wixtoolset.org/releases/

リリースノートは、https://github.com/wixtoolset/wix3/releases/tag/wix311rtm

posted @ 2017/05/09 10:55 by とっちゃん

わんくま名古屋N41はじまった

またしても間が開いてしまった・・・。
わんくま名古屋勉強会の41回目です。
トップはYou&Iさん
「Visual Studio 2017の一部を使ってみた」

posted @ 2017/04/15 13:17 by まーる

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

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

 

http://www.ghostshell.jp/

 

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

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

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

バドーいいね!バドー。

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

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

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

 

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

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

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

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

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

 

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

posted @ 2017/04/08 0:10 by 初音 玲

[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 @ 2017/04/05 23:01 by 初音 玲

[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 @ 2017/04/02 3:36 by 初音 玲