2017年版Windowsでそれなりな暮らしをするには

# 背景

本当に個人メモのままかもしれないが、
気が向いたら、追記していくつもり。

# どうでもいいけど念のため今回のPCのハードウェア構成

- [久しぶりに自作PCをリニューアルした - non vorrei lavorare](http://abrakatabura.hatenablog.com/entry/2016/12/25/010732)

# 現在できてること

- Node.js
- VS環境でのmrubyのビルド
- cgo
- OpenCV
- Tensorflow
- Docker
- Rust
- Julia
- OCaml

# なにはなくともNode.jsのネイティブモジュールがビルドできる環境

## Python 2.7系を公式で入れる

Pythonの場合はAnaconda等があるので、3系はそちらにして、2系は普通に入れた。

## VS2017にアップデートした

Node.jsのV8エンジンがVS2017を要求するようになりVS2017に
アップデートした

- [Edge.jsをnodeのv9.x系で動かすには - Qiita](https://qiita.com/kjunichi/items/514a6fe84f2e46fd701f)

こっちに詳細？がある。

## VS2015を入れる(旧)

こちらも特にC++がビルドできるようにVC++をチェックする程度でインストール。

## nvm-windows

LinuxやmacOSではnodebrewを絶賛愛用中なのだが。。。

Windowsではnvm-windowsというGo実装のバージョン管理ツールを利用。

- https://github.com/coreybutler/nvm-windows

githubページに従い、msiインストーラー版をおとなしく入れた。

nodebrewと違い、v6とかやるとNG 「6.9.2」のようにきっちりバージョンを指定する必要あり。

```shell
nvm arch
nvm list available
nvm install 6.9.2
nvm use 6.9.2
```

### 確認
 
ffiを入れて、factorialを動かす
VSの開発者用プロンプトを起動して、ここで操作
 
```shell-session
cd %HOMEPATH%\Documents\work\nodejs
mkdir ffi 
cd ffi
npm install ffi
cd node_mudules\ffi\examples\factorial
type README.md
```

## node-canvasを入れる

node-canvasに必要なGTK2のインストールに関して

- [たぶんGTK2をChocolateyのgtk-runtimeで入れても64ビット環境ではダメな件](http://abrakatabura.hatenablog.com/entry/2017/05/11/220650)

# 画面キャプチャー

- [Windowsでデスクトップキャプチャーして動画をつくるには](http://abrakatabura.hatenablog.com/entry/2017/04/07/070355)

# VSでmrubyをビルドできる環境の構築

## ChocolateyでCRubyとbison&flexを入れる

- https://chocolatey.org/

```shell-session
cinst ruby
cinst winflexbison
```

VSの開発者用のプロンプトを開いて、
以下のように環境変数YACCを設定する。

- [cinstしたbison,flexでmrubyをビルドするには - Qiita](http://qiita.com/kjunichi/items/baf5aa83b2074081f7ce)

あとはrakeでmrubyがビルドできる。


# GPU利用のOpenCV

NVidiaの公式からCUDA8.0系を入れた。

どうやらOpenCV 3.1.0だとCUDAありでビルドがうまくできない模様。
githubのOpenCVをcloneしてこちらでcmakeでビルドしたらうまくできた。

ちなみに、python3のモジュールはworldがオンだとビルドされない模様。


# GPU利用したTensorflowを動かす

## cuDNNだかを入れる

なんか適当に英語で回答して、メールを受け取り、zipファイルを展開してCUDAのディレクトリの

```shell-session
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\
```

配下にコピーした。


## Anacondaで3.5系のPythonを入れる

昔、GPUを使う場合は有料版が必要みたいな記述見かけた記憶があるが、少なくともTensorflowはGPU利用できる環境がタダで出来るようなので、Anacondaでチャレンジした。

### pipのアップデートとsetuptoolsのアップデート

公式のTensorflowのWindows向けのガイド通りにしてもエラーだった。
pipのアップデートをしろとこのエラーの際に言われて、これを実行した。
しかし、その後もエラー。

以下のようにsetuptoolsなるものをアップデートして

```shell-session
pip install --upgrade -I setuptools
```

その後、ガイド通り、インストールできた。

## 動作確認

Tensorflowのサンプル的にな画像分類のコードをWebアプリ化したものを
Windows環境で動かせている。

- [Tensorflowのclassify_image.pyをWebアプリ化した](http://abrakatabura.hatenablog.com/entry/2017/04/16/205611)

# GPUを使った[PyTorch](http://pytorch.org/)でCycleGANをやった

Tensorflowに続いて2017年はPyTorchをつかったCycleGANを手元で動かせた。

- [pytorchによるcycleGANの実装をWindowsで動かした](http://abrakatabura.hatenablog.com/entry/2017/12/24/234358)

# Cordova

- JDK
- Android Studio

```shell-session
npm install -g cordova
```

### 確認コマンド

```shell-session
cordova create myapp
cd myapp
cordova add platform android
cordova requirements
```

# Docker

Windows 10 Proじゃないので、Docker Toolboxを入れた。
VitrualBoxはすでに入れているのでチェックを外してインストール。

# OpenSSHでsshdを動かす

- [WindowsでDocker ToolboxとMSのOpenSSHのサーバーと共存するには](http://abrakatabura.hatenablog.com/entry/2017/01/29/175851)

# cmderをつかう

chocolatyで入れた

- [cmderのことが分かってきたきがするので、fluentd用のtasksを作ってみた](http://abrakatabura.hatenablog.com/entry/2017/03/26/221935)

# chocolatyで入れたパッケージの管理

- [chocolateyでインストールしたあとの話](http://abrakatabura.hatenablog.com/entry/2017/04/18/072150)

Qiita内では以下の記事で、インストール済みのパッケージリストが

```shell-session
choco list -lo
```

で取得できることを知った。

- http://qiita.com/basabasa/items/0c29df0f176e48f34812

# Goでcgoをつかうには

chocolateyでmsys2をいれてそこに64ビット版のgccを入れた模様。。


```shell-session
set PATH=C:\tools\msys64\mingw64\bin;%PATH%
```

この状態でcgoが使える。


# WindowsでJuliaを組み込んで使う

- [Windows(MSVC)でmrubyからGPU対応のTensorflowを動かせた](http://abrakatabura.hatenablog.com/entry/2017/01/28/125353)

# OCamlをいれる

いくつか選択肢がある模様。
とりあえず、公式を選択。

以下のドキュメントを読めとのこと

- https://github.com/protz/ocaml-installer/wiki

- [Windowsで公式のOCamlをいれて、utop動かすところまで出来た](http://abrakatabura.hatenablog.com/entry/2017/05/04/074542)
 
# OSSの代表格ともいえるWebブラウザのFirefoxをソースからビルドする

- [Windows 10でFirefoxをソースからビルドして動かしてみた](http://abrakatabura.hatenablog.com/entry/2017/05/10/071020)

# WSLでXクライアントを動かす

WindowsにXサーバーを入れれば動かせるが、それ以外の方法を試した。

- [Xサーバーを入れずに、WSLでXクライアントを動かす](http://abrakatabura.hatenablog.com/entry/2017/12/26/214414)

# 関連記事

- [Windowsでmruby-http2を動かした](http://abrakatabura.hatenablog.com/entry/2017/01/24/121826)
- [Windows(MSVC)でmrubyからGPU対応のTensorflowを動かせた](http://abrakatabura.hatenablog.com/entry/2017/01/28/125353)
- [Windows 10でMSVCでnghttp2のサンプルを動かす](http://abrakatabura.hatenablog.com/entry/2017/01/14/072846)
- [Windowsで64ビットなPythonでPython-Fuが動くgimpをビルドした](http://abrakatabura.hatenablog.com/entry/2017/06/01/073843)
- [WindowsでmrubyからGoで作ったライブラリを呼び出して、Webカメラの画像をコマンドプロンプトに表示した](http://abrakatabura.hatenablog.com/entry/2017/09/01/072123)
- [RustでWebカメラの映像をコマンドプロンプトに出すコマンドを作った](http://abrakatabura.hatenablog.com/entry/2017/09/21/064630)
- [ChocolateyでImageMagickをヘッダ、Libファイルとレガシーコマンドも一緒に入れるには](http://abrakatabura.hatenablog.com/entry/2018/02/21/071914)
[Surface Goが来たら開発機として使えるようにする作業手順](https://abrakatabura.hatenablog.com/entry/2018/08/26/215050)