レンガ積みのブログ

開発ツールとかの忘備録

Hololens開発環境の構築

2016/12/2に日本で予約開始とのことで開発環境を構築中

以下の通り結構厳しい必要環境になっている

  • OSはWindows10の64bit版(Hyper-Vが使えないのでHomeはダメ)
  • CPUは64bit
  • CPUは4コア以上
  • RAMは8GB以上
  • BIOSは仮想化が有効になっていること(Hyper-Vの有効化)
  • GPUDirectXの11.0以降
  • GPUWDDM 1.2ドライバまたはそれ以降

https://developer.microsoft.com/en-us/windows/holographic/install_the_tools


1. 自分のPCのスペックの確認

  • OSはWindows10の64bit版 Home
  • CPUは64bit
  • CPUは4コア
  • RAMは6GB
  • BIOSは仮想化が有効にできない(WindowsがHomeのため)
  • GPUDirectXの12
  • GPUWDDM 2.1


WindowsのエディションをHomeからProにすること、RAMを6GBから8GBへの増設が必要と判明
Windowsのエディションは必須なので泣く泣くアップデート(1万円ほど)
RAMはもしかしたらギリギリ動くかもしれないという淡い期待を抱いてそのまま
6GBでは動作しなかったため、8GBへRAMを増設


2. 開発環境の構築

すでにVisual Studio2015は入っていたが、最新版でなかったのでアップデート(かなり時間がかかる)


3. Hololens用のテンプレートからプロジェクトを作って動作させる
VisualStudio2015を起動し、
新しいプロジェクト>テンプレート>VisualC#>Windows>ユニバーサル>Holographic>Holographic DirectX11App(Universal Windows)
でプロジェクトを作成

ターゲットをHololens Emulatorに設定してデバッグ実行
f:id:goods-tmu:20161207202231p:plain

エミュレーターが起動
これは周囲の物体をスキャンしてメッシュを構成しているところ
f:id:goods-tmu:20161207202717p:plain

3. Hololens専用Unityをインストールする
下記ページからDL
Unity - Microsoft Windows - HoloLens

最近流行りのテキストエディタまとめ(書きかけ)

プログラマ向けテキストエディタのメモ

ほんの少し前まではVimEmacsかぐらいしか話に上がってこなかったのに、最近はいろいろ話題にでるエディタが登場している。

現在はVisualStudioCodeで開発するのが気に入っているが、身の回りの人が使っていたり、話に上がるような同種のツールも調べてみた。
どのエディタも更新頻度が高いので、ネットに転がっている昔の情報と、実情が異なっていることがあるので自分の目で確認したいというのもある。


今回調査比較したエディタとその時エディタのバージョン

f:id:goods-tmu:20160726213701p:plain
動作確認環境はWindows10
web開発はほぼしないので、web向け機能に関してはあまり調べていない


Visual Studio Code

https://www.visualstudio.com/ja-jp/products/code-vs.aspx
開発元:MicrosoftOSSGitHub
価格:フリー(OSS、MITライセンス)
対応OS:WindowsLinuxOSX

f:id:goods-tmu:20160726204708p:plain
プラグインの充実度:○

Sublime Text 3

http://www.sublimetext.com/
開発元:Sublime HQPty Ltd
価格:シェアウェア(試用期間制限なし、約7500円)
対応OS:WindowsLinuxOSX

f:id:goods-tmu:20160726204834p:plain
プラグインの充実度:◎

Atom

https://atom.io/
開発元:GitHubOSSGitHub
価格:フリー(OSS、MITライセンス)
対応OS:WindowsLinuxOSX

f:id:goods-tmu:20160726210042p:plain
プラグインの充実度:◎

Brackets

http://brackets.io/
開発元:アドビ システムズOSSGitHub
価格:フリー(OSS、***ライセンス)
対応OS:WindowsLinuxOSX

f:id:goods-tmu:20160726205730p:plain
プラグインの充実度:◎

秀丸

http://hide.maruo.co.jp/software/hidemaru.html
開発元:サイトー企画
価格:シェアウェア(試用期間制限なし、4320円)
対応OS:Windows

f:id:goods-tmu:20160726204959p:plain
プラグインの充実度:△

シェアウェアとは

ライセンス購入前に試用することが可能で、継続して使用したい場合に送金するというソフトウェア形態。上記で紹介したSublime Text3と秀丸は試用期間に制限がない。

Visual Studio Codeのtasks.jsonメモ

code.visualstudio.com


Visual Studio Codeの tasks.jsonとlaunch.json内で使える変数

${workspaceRoot} the path of the folder opened in VS Code
${file} the current opened file
${fileBasename} the current opened file's basename
${fileDirname} the current opened file's dirname
${fileExtname} the current opened file's extension
${cwd} the task runner's current working directory on startup

自分のPython開発の際のtasks.json設定

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "python",
    "isShellCommand": true,
    "args": ["${file}"],
    "showOutput": "always"
}

自分のelectron開発の際のtasks.jsonの設定

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "electron",
    "isShellCommand": true,
    "args": ["${workspaceRoot}/"],
    "showOutput": "always"
}

WindowsでElectronの開発環境を整える

Electronとは?

Node.js+HTML+CSSでデスクトップアプリを作る・・・らしい
一番気になるのは、これ一本でWindows,Mac,Linuxのアプリを作れるらしいということ
今回はHello worldまで

準備

Node.jsのインストールは以前の記事の通り

renga.hatenadiary.com

Electronのインストール

上記記事のとおりNode.jsをインストールしてあれば、npmもインストールしてあるはず
npmでElectronをインストールする

コマンドプロンプトから以下のコマンドを打ち込む

npm -g install electron-prebuilt

f:id:goods-tmu:20160715220840p:plain

作業フォルダの作成

適当に作業フォルダを作り、そこで以下のコマンドを打ち込む

npm init -y

f:id:goods-tmu:20160715221314p:plain

すると「package.json」というファイルができているので内容を以下のように変更

  • package.jdon
{
  "name": "sample",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

作業フォルダ内に「main.js」と「index.html」を新規作成し、以下のようにする

  • main.js
"use strict";

const electron = require("electron");
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
let mainWindow;

// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function() {
  if (process.platform != 'darwin') {
    app.quit();
  }
});

// Electronの初期化完了後に実行
app.on('ready', function() {
  // メイン画面の表示。ウィンドウの幅、高さを指定できる
  mainWindow = new BrowserWindow({width: 800, height: 600});
  mainWindow.loadURL('file://' + __dirname + '/index.html');

  // ウィンドウが閉じられたらアプリも終了
  mainWindow.on('closed', function() {
    mainWindow = null;
  });
});
  • index.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Sample</title>
</head>
<body>
  <p>Hello World</p>
</body>
</html>

作業フォルダの一階層上で以下のコマンドを打ちこむ

electron sample/

f:id:goods-tmu:20160715230605p:plain

すると以下のようにアプリが立ち上がる!
f:id:goods-tmu:20160715230629p:plain


main.jsのapp.on内に以下の処理を加えることでデバッグ情報を出しながら実行できるようになる

  // デバッグツールを起動(開発中のみ必要な機能)
  mainWindow.webContents.openDevTools();
"use strict";

const electron = require("electron");
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
let mainWindow;

// 全てのウィンドウが閉じたら終了
app.on('window-all-closed', function() {
  if (process.platform != 'darwin') {
    app.quit();
  }
});

// Electronの初期化完了後に実行
app.on('ready', function() {
  // メイン画面の表示。ウィンドウの幅、高さを指定できる
  mainWindow = new BrowserWindow({width: 800, height: 600});
  mainWindow.loadURL('file://' + __dirname + '/index.html');

  // デバッグツールを起動(開発中のみ必要な機能)
  mainWindow.webContents.openDevTools();

  // ウィンドウが閉じられたらアプリも終了
  mainWindow.on('closed', function() {
    mainWindow = null;
  });
});

f:id:goods-tmu:20160715232027p:plain

参考サイト

qiita.com
qiita.com

WindowsでVisual Studio Codeの拡張機能開発環境を整える

事前準備

renga.hatenadiary.com


yo,generator-codeをインストール

コマンドプロンプトから以下のコマンドでインストールできる

npm install -g yo
npm install -g generator-code

generator-codeで雛形コードを生成する

コマンドプロンプトから以下のコマンドを実行する

コマンドプロンプトはひな形を作成したい場所に移動しておくこと

yo code

統計に協力するか聞かれるのでy/nをタイプする
「Welcom to the Visual Studio Code Extension generator!」としゃべっているアスキーアートが現れれば成功
(AA崩れしているが、気にしない)
f:id:goods-tmu:20160712210757p:plain

必要事項を入力する

まずはどの拡張機能タイプを作るのか聞かれている。
今回は一番上のExtention(TypeScript)を選択(上下キーでカーソルを動かせる)してEnter

f:id:goods-tmu:20160712211442p:plain

後は今回以下のように設定

f:id:goods-tmu:20160712211807p:plain

できたひな形を確認する

作業場所に以下のようなフォルダが作られている
f:id:goods-tmu:20160712212546p:plain

このフォルダをvscodeで開く
f:id:goods-tmu:20160712212756p:plain

デバッグしてみる

雛形では、コマンドパレットでHelloWorldと打つと「HelloWorld!」と表示してくれるものが書かれている

左側のデバッグを開いて、デバッグの開始をクリックする
新しくvscodeのウインドウが開く(この新しいウインドウがデバッグ環境)
f:id:goods-tmu:20160712212940p:plain
[ctrl]+[shift]+[p]でコマンドパレットを開いて、Hello World 拡張機能を実行する
f:id:goods-tmu:20160712213301p:plain

[情報] Hello World! と出れば成功
f:id:goods-tmu:20160712213402p:plain

参考にしたサイト

www.atmarkit.co.jp

WindowsにNode.jsのインストール

環境は

  • Windows10 64bit

Node.jsのダウンロード

以下からダウンロード
https://nodejs.org/en/

f:id:goods-tmu:20160712204542p:plain

Node.jsのインストール

ダウンロードした「node-v4.4.7-x64.msi」を実行してインストール

f:id:goods-tmu:20160712204834p:plain

Node.jsとnpmがインストールされているか確認

コマンドプロンプトで確認

C:\Users>node --version v4.4.7 C:\Users>npm --version 2.15.8 C:\Users>

f:id:goods-tmu:20160712205427p:plain

参考にしたサイト

qiita.com

Pythonで機械学習の練習

Pythonでロスアラモス大学が配布しているSHMTools(構造ヘルスモニタリング機械学習デモ)をやってみた
開発環境は以下の記事通り
renga.hatenadiary.com


www.lanl.gov

とりあえず、データのセットアップと特徴量探索の途中まで

# coding: Shift_JIS
import numpy as np
import pandas as pd
import scipy.io

## データセットの構成
#
# ロスアラモス大学の配布ページからダウンロードする
# SHMTools Software
# http://www.lanl.gov/projects/national-security-education-center/engineering/software/shm-data-sets-and-software.php
#
# \Examples\ExampleData\data3SS.mat
#

data3SS = scipy.io.loadmat("data3SS.mat")

for ch in range(1,5):
    data = np.squeeze(data3SS["dataset"][:,ch,:])

    np.save('data_ch'+str(ch), data)


State = data3SS["states"].T.astype(np.int)
Cond = np.empty((0,1),int)
for i in range(0, State.size):
    if State[i] >=10:
        Cond=np.append(Cond,np.array([['damaged']]),axis=0)
    else:
        Cond=np.append(Cond,np.array([['undamaged']]),axis=0)


df = pd.DataFrame({'State': State.T[0],'Cond':Cond.T[0]})
df.to_csv('StateCond.csv')
# coding: Shift_JIS
import numpy as np
#import scipy.io
from scipy import signal
import matplotlib.pyplot as plt
from statsmodels.tsa import ar_model


## データの読み込み
data = np.load('data_ch4.npy')

dataGood = data[:,1-1]
dataDamaged = data[:,170-1]

Fs = 320
time = np.arange(0, dataGood.size) / Fs


# 時系列データの表示
plt.figure()
plt.subplot(2,1,1);
plt.plot(time,dataGood)
plt.xlabel('time [s]'), plt.ylabel('acc [m/s^2]'), plt.title('undamaged')
plt.axis('tight'), plt.ylim([-2,2])

plt.subplot(2,1,2);
plt.plot(time,dataDamaged);
plt.xlabel('time [s]'), plt.ylabel('acc [m/s^2]'), plt.title('damaged')
plt.axis('tight'), plt.ylim([-2,2])

plt.tight_layout()
plt.show()


## ヒストグラムの表示
plt.figure()
plt.subplot(2, 1, 1)
plt.hist(dataGood, 50)
plt.xlim([-3,3])
plt.title('histgram : undamaged')

plt.subplot(2, 1, 2)
plt.hist(dataDamaged, 50)
plt.xlim([-3,3])
plt.title('histgram : damaged')

plt.tight_layout()
plt.show()


## 周波数スペクトルの表示
freq1, P1 = signal.welch(dataGood, Fs)
freq2, P2 = signal.welch(dataDamaged, Fs)

plt.figure()
plt.subplot(2, 1, 1)
plt.plot(freq1, 10*np.log10(P1), linewidth=2, label="nseg=n/4")
plt.xlabel("Frequency[Hz]"), plt.ylabel("Power/frequency[dB/Hz]")
plt.title('PSD : undamaged')

plt.subplot(2, 1, 2)
plt.plot(freq2, 10*np.log10(P2), linewidth=2, label="nseg=n/4")
plt.xlabel("Frequency[Hz]"), plt.ylabel("Power/frequency[dB/Hz]")
plt.title('PSD : undamaged')

plt.tight_layout()
plt.show()


## 自己回帰モデルの係数取得と表示
arOrder = 10;

# TODO : モジュール化
N = data.shape[1]   # dataの列数取得

coef = np.zeros((N, arOrder+1))

for id in range(0,N):
    model = ar_model.AR(data[:,id])
    results = model.fit(maxlag = arOrder)
    coef[id,:] = results.params

Features = coef

# 可視化
plt.figure()
for id in range(0,N):
    if id>90:
        plt.plot(Features[id],'b')
    else:
        plt.plot(Features[id],'r')
plt.show()

f:id:goods-tmu:20160709113740p:plain
f:id:goods-tmu:20160709113752p:plain
f:id:goods-tmu:20160709113800p:plain
f:id:goods-tmu:20160711080502p:plain