Windows 10 PCでの環境構築2019夏

# 0. まず最初に

## 0.1. 基本操作

### 0.1.1. 管理者権限でコマンドプロンプトを起動

![stard-cmd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/9702cff6-39be-b3e7-0f2a-b660f54bcd56.png)

1. Windowsキーを押す。
2. 検索ボックスに「cmd」と入力。
3. Ctrl + Shift + Enterを押す。(管理者として実行)
4. Alt + Yを押す。(ユーザーアカウント制御ウィンドウで「はい」を選択)

もちろんマウスを使っても構いません。

### 0.1.2. コマンドプロンプトにテキストを貼り付け

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/a2495b41-d722-0448-7e1e-dcb684fce91d.png)
右クリックするとメニューが出ます。


## 0.2. プロキシ設定

インターネット(HTTP/HTTPS)への接続にプロキシサーバーの設定が必要な場合は、まずそれを設定しましょう。ややこしいことに設定が2つ(以上)あります。

### 0.2.1 Microsoft Edgeのプロキシ設定

Microsoft Edgeやそのほかのウェブブラウザが使用するプロキシサーバーの設定です。
![proxy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/5e8574a1-148d-382c-c24c-2a7aef55c904.png)
しっかりと「保存」をクリックしましょう。


### 0.2.2 WinHTTPのプロキシ設定

Windows Updateなどが使用するプロキシサーバーの設定です。管理者権限でコマンドプロンプトを起動し、次のコマンドを実行すると、その時点でのMicrosoft Edgeのプロキシ設定をWinHTTPのプロキシ設定にコピーします。

```:コマンドプロンプト(管理者)
netsh winhttp import proxy source=ie
```

管理者権限付きで次のコマンドを実行すると、WinHTTPのプロキシ設定を既定の状態(直接アクセス)に戻せます。

```:コマンドプロンプト(管理者)
netsh winhttp reset proxy
```

次のコマンドで、WinHTTPのプロキシ設定を確認できます。

```:コマンドプロンプト
netsh winhttp show proxy
```

### 0.2.3 環境変数でプロキシ設定

いくつかのアプリケーションは独自のプロキシ設定を持っています。しかし、独自のプロキシ設定以外にも環境変数を適宜見てくれるものもあります。なので環境変数も設定しましょう。

```powershell:コマンドプロンプト(管理者)
setx http_proxy プロキシアドレス:ポート /M
setx https_proxy プロキシアドレス:ポート /M
' たとえば setx http_proxy http://example.com:8080 /M
```

設定を削除するには以下のようにします(ただしレジストリにゴミが残ります)。

```:コマンドプロンプト(管理者)
setx http_proxy "" /M
setx https_proxy "" /M
```

以下のコマンドで(環境変数が設定されていれば)表示されます。

```:コマンドプロンプト
echo %http_proxy%
echo %https_proxy%
```


## 0.3. Windows Updateの設定

「時間のかかる処理をさせて放っておいたら、いつの間にか勝手に再起動されてやり直しになった」は卒論/修論/D論/繁忙期Windowsあるあるです。少なくとも自動再起動を「アクティブ時間」の設定によって停止、また「更新プログラムの通知」によって再起動前に通知させるようにした方がよいでしょう。(自動インストールの完全無効はお勧めしません。)

- [Windows 10 Windows Update 後の再起動を停止または無効にする](https://www.tipsfound.com/windows10/13003)


## 0.4. そのほか

拡張子は表示した方がよいでしょう。

- [Windows 10 ファイルの拡張子を表示する](https://www.tipsfound.com/windows10/07004)


# 1. Chocolateyを導入する

古き良き昭和の時代、人々が自分のパソコンにアプリケーションを入れたいと思ったときには、お店に行ってソフトを買って50枚くらいのフロッピー経由でインストールしたり、いちいちウェブサイトにアクセスして圧縮されたファイルに入っているソフトをダウンロードさらに解凍してからインストーラーをなんとダブルクリックで実行しアンチウイルスソフトの妨害やすぐブルースクリーンを出すWindowsの皮を被ったDOSの仕様を乗り越えてインストールする、など原始時代のようなことをやっていました(個人の感想です)。牧歌的な時代でした。我々は高度情報化社会が発達した令和の時代を生きているので、本来なら「おっけー、○ーグル。ワードとインターネットをインストロールしといて」と念仏を唱えただけで即座にLibreOfficeとGoogle Chromeの自動ダウンロードおよびインストールと初期設定が完了しなければならないはずですが、残念ながら時代はまだ我々に追い付いていません。仕方がないので平成の技術を使います。パッケージマネージャです。

[Chocolatey](https://chocolatey.org/)はWindows用のパッケージマネージャです。よく使われているWindowsアプリケーションのインストールや管理作業が非常に簡単になります。

https://chocolatey.org/docs/installation を見てインストールを行ってください。管理者権限付きのコマンドプロンプトを使ったインストールの方が楽です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/afb936c0-c3ab-d610-4d7b-e7a39e8eb452.png)
「Copy Command Text」の左のアイコンをクリックしてコマンドをコピーし、管理者権限付きのコマンドプロンプトに貼り付けて実行します。インストールに成功すると`choco`コマンドが使えるようになります(コマンドプロンプトを新しく開く必要があるかもしれません)。以下のコマンドでヘルプメッセージを確認してみましょう。

```:コマンドプロンプト
choco -? 
```


# 2. Chocolateyを使ったアプリケーションのインストール

管理者権限付きのコマンドプロンプトに、次のコマンドをコピペして実行します。

```:コマンドプロンプト(管理者)
choco install -y 7zip atom cmdhere firefox ghostscript git gnuplot googlechrome jdk8 notepadplusplus sumatrapdf vscode wget
choco install -y anaconda3 --params "/AddToPath"
```

以下のWindowsアプリケーションがインストールされます。

- [7-Zip](https://sevenzip.osdn.jp/): 圧縮・解凍ソフト。
- [Atom](https://atom.io/): GitHubが開発しているテキスト/ソースコードエディタ。
- [Anaconda](https://www.anaconda.com/): Python3ディストリビューション。
- [Command Prompt Here](https://chocolatey.org/packages/cmdhere/): エクスプローラにコマンドプロンプトを開く右クリックメニューを追加する。
- [Firefox](https://www.mozilla.org/ja/firefox/): Mozillaが開発しているウェブブラウザ。
- [Ghostscript](https://www.ghostscript.com/): PS/PDFインタプリタ。
- [Git](https://git-scm.com/): 分散型バージョン管理システム。
- [gnuplot](http://www.gnuplot.info/): グラフ作成ソフト。
- [Google Chrome](https://www.google.co.jp/chrome/): Googleが開発しているウェブブラウザ。
- [Java SE Development Kit 8](https://www.oracle.com/technetwork/jp/java/javase/overview/index.html): Javaソフトウェア開発キット。
- [Notepad++](https://notepad-plus-plus.org/): テキスト/ソースコードエディタ。
- [SumatraPDF](https://www.sumatrapdfreader.org/free-pdf-reader.html): 軽量なPDFビューア。(GhostScriptをインストールすることでEPS/PSファイルもサポートする。)
- [Visual Studio Code](https://code.visualstudio.com/): Microsoftが開発しているテキスト/ソースコードエディタ。
- [GNU Wget](https://www.gnu.org/software/wget/): ダウンローダ。

次のセクションで使う`conda`コマンドなどを実行する前に、コマンドプロンプトを新しく開く必要があるかもしれません。一度コマンドプロンプトを閉じましょう。


# 3. Anacondaを使ったPythonパッケージのインストール

たぶん仮想環境を作ってその中にいろいろ入れるべきなんでしょうが、もう何も考えずにbase(root)にいろいろ突っ込んでしまいます。管理者権限付きのコマンドプロンプトに次のコマンドを打ちます。

```:コマンドプロンプト(管理者)
conda install -y autopep8 flake8 flake8-import-order keras mypy pep8-naming
conda install -y -c conda-forge flake8-builtins flake8-comprehensions flake8-docstrings flake8-quotes jupyter_contrib_nbextensions tensorflow-hub
```

あとはスタートメニューから Anaconda Navigator を検索して起動しましょう。そこから Jupyter Notebook などの各ツールを起動することができます。


# 4. Pleiades All in One (日本語化された Eclipse) のインストール

[Eclipse](https://www.eclipse.org/)はIBMによって開発された統合開発環境(IDE)です。高機能でかつ拡張性が非常に高いのですが、その分設定やら日本語化やらが正直しんどいので、ここでは[Pleiades All in One](http://mergedoc.osdn.jp/)というパッケージを扱います。また、開発言語はJavaのみと仮定します。

- [ダウンロードページ](http://mergedoc.osdn.jp/#pleiades.html)から好きなバージョンを選びます(現在`Eclipse 2019-06`が最新版) 。JavaのFull Editionを選びましょう(Full EditionにするとJDKなども漏れなくついてきます)。ダウンロードに時間がかかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/8408860f-97fb-6c91-233f-87d6a062bbd9.png)

- ダウンロードしたZipファイルを解凍します。`Eclipse 2019-06`の場合、Windows 10標準の機能では解凍ができないようなので7-Zipなどを使いましょう。ファイルを右クリックして「7zip」-「展開...」を選びます。展開先は**Cドライブ直下**として、OKを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/179429d2-8f0d-5858-0f12-33ef63815a80.png)

- 展開できたら`C:\pleiades\eclipse\eclipse.exe`を実行します。初回起動時は設定に時間がかかるので気長に待ちます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/d7c45364-1786-3023-f11a-75184b4a51ca.png)

- Eclipseへのショートカットを作ってデスクトップなどに置いておくとそこそこ便利でしょう。さらに、起動時に開くワークスペースを指定するには`-data`オプションを使います。たとえばデスクトップの`workspace`フォルダをワークスペースとして使いたいときは、ショートカットのプロパティの「リンク先」に下図のようにオプションを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/6a5cfb98-e852-9c16-484d-ce24777bddfe.png)

- メニューから「設定」→「Java」>「エディター」>「保存アクション」で「ソース・コードのフォーマット」をONにする。


# 5. TeXLiveのインストール

[TeX](https://tug.org/)とは数学者・計算機科学者であるドナルド・クヌースが[自分の本](https://www-cs-faculty.stanford.edu/~knuth/taocp.html)を出版する際に開発した組版処理システムであり、[LaTeX](https://www.latex-project.org/)とはそれを魔改造したものです。よく[数物系の論文](https://arxiv.org/help/submit_tex)を執筆したり、[ナップザック問題を動的計画法](https://doratex.hatenablog.jp/entry/20190520/1558323856)で解いたりするのに使われます。最近流行りのクラウド化の波はLaTeXにもやって来ていて、[これ](https://cloudlatex.io/)とか[これ](https://ja.overleaf.com/)などの選択肢がありますが、やはり理工系ならば誰もが一度はLaTeXを自分のPCにインストールしてみたいと憧れることでしょう。

ここでは[TeXLive](https://www.tug.org/texlive/)というディストリビューションを紹介します。インストールの仕方は[ここ](https://texwiki.texjp.org/?TeX%20Live%2FWindows#w369638d)にあるように、[install-tl-windows.exe](http://mirror.ctan.org/systems/texlive/tlnet/install-tl-windows.exe)をダウンロードし、(右クリックメニューから)管理者として実行、あとはボタンをぽちぽちクリックしていくだけです(だいたいデフォルトの設定のままでよい)。ファイルサイズが大きく時間がかかるので気長に待ちましょう。Windows Defender SmartScreenに引っ掛かった場合は[ググって](https://pc-karuma.net/windows-10-protected-your-pc/)どうにか回避してください。

TeXLiveをデフォルトの設定のままインストールすると、ついでに[TeXWorks](http://www.tug.org/texworks/)もインストールされます。スペルチェックの辞書はインストールされていませんので[ここ](https://texwiki.texjp.org/?TeXworks%2F%E8%A8%AD%E5%AE%9A#ycb12d64)を見て自分で設定する必要があります。


# 6. Linuxのインストール

Windows10には[Windows Subsystem for Linux (WSL)](https://docs.microsoft.com/ja-jp/learn/modules/get-started-with-windows-subsystem-for-linux/)が搭載されており、Linuxアプリケーションが動きます。

- 参考記事
  - [WSLのインストール・アンインストール方法](https://qiita.com/tkj06/items/b5c195db860241663485)
  - [WSL(ubuntu18.04)の初期設定](https://qiita.com/misosiru6655/items/218246c17d95fd12f5fb)
  - [wsl でパスワードを忘れてしまった際の対処](https://qiita.com/iszk/items/557cd99739ea6cc82941)

- 「Windowsの機能の有効化または無効化」で「Windows Subsystem for Linux」をチェックする(再起動が必要)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43042/295fae8c-fdf8-d02d-ca14-0e537f62e0fe.png)

- Microsoft StoreからUbuntu(ほかのLinuxディストリビューションでもよい)をインストールする。スタートメニューから起動する。初回起動時にいろいろと初期設定される。

- [WSLtty](https://github.com/mintty/wsltty)をインストールして快適なターミナル環境を実現する。

```:コマンドプロンプト(管理者)
choco install wsltty
```
WSLttyを実際に使う前に、各ユーザーでスタートメニューにできた「WSL Generate Shortcuts」を実行する必要があることに注意(アップデート時も)。あと、「add default to context menu」でエクスプローラーの右クリックにメニューを追加できる。

- `screen`が`Cannot make directory '/var/run/screen': Permission denied`で動かないとき: 一番簡単な解決方法は[これ](https://github.com/Microsoft/WSL/issues/1245#issuecomment-400855065)を`.bashrc`に書くこと。

- X Window について何を入れるかあてがなければ、

```:コマンドプロンプト(管理者)
choco install vcxsrv
```
して、[このあたり](https://qiita.com/ryoi084/items/c4339996c50c0cf39df4#vcxsrv%E3%81%AE%E8%87%AA%E5%8B%95%E8%B5%B7%E5%8B%95%E8%A8%AD%E5%AE%9A)を見てWindows起動時に[VcXsrv](https://sourceforge.net/projects/vcxsrv/)を立ち上げたり(`config.xlaunch`を作ってスタートアップに放り込んでおくとか)、Linux側から`$DISPLAY`に設定したりしてください。

- WSLからWindowsのローカルドライブは`/mnt/c`のように見えます。

- Windows 10 May 2019 Update (version 1903) 以降では、WindowsからWSLのドライブは[`¥¥wsl$¥`というUNCパスから見えます](https://forest.watch.impress.co.jp/docs/shseri/win10may2019/1182605.html)。


# 7. Cygwinのインストール

[Cygwin](https://www.cygwin.com/)とは、Windows上でLinuxっぽいものを提供する互換レイヤーです。

```:コマンドプロンプト(管理者)
choco install -y cygwin --params "/InstallDir:C:\Cygwin"
choco install -y cyg-get
cyg-get ca-certificates gnupg wget
```

```bash:Cygwin64&nbsp;Terminal
wget https://raw.githubusercontent.com/kou1okada/apt-cyg/master/apt-cyg
chmod 755 apt-cyg
mv apt-cyg /usr/local/bin
apt-cyg set-mirror http://ftp.jaist.ac.jp/pub/cygwin/
apt-cyg update
apt-cyg install automake gcc-fortran gcc-g++ git libgmp-devel make openssh python rsync ruby zlib-devel vim
```

Mintty (Cygwinのデフォルトのターミナル)はタイトルバーを右クリックして「Options...」からフォントなどの設定を変えることができます。


# 8. Visual Studio Codeの設定

- Ctrl + ,: 設定を開く。
- Ctrl + Shift + X: 拡張機能を開く。

## 8.1. 全般的な設定

- 設定"editor.formatOnPaste"にチェックを入れる。
- 設定"editor.formatOnSave"にチェックを入れる。
- 設定"editor.formatOnType"にチェックを入れる。
- 設定"files.autoGuessEncoding"にチェックを入れる。
- 設定"files.insertFinalNewline"にチェックを入れる。

## 8.2. 日本語化

- 拡張機能"Japanese Language Pack for Visual Studio Code" (ms-ceintl.vscode-language-pack-ja)をインストール。

## 8.3. Java

- 拡張機能"Java Extension Pack" (vscjava.vscode-java-pack)をインストール。

## 8.4. Python

- 拡張機能"Python" (ms-python.python)をインストール。


## 8.5. LaTeX

- 拡張機能"LaTeX Workshop" (james-yu.latex-workshop)をインストール。


# 9. そのほかのアプリケーション

(本当に)必要であればインストールしてください。

```:コマンドプロンプト(管理者)
choco install -y adobereader
choco install -y ccleaner
choco install -y crystaldiskinfo
choco install -y crystaldiskmark
choco install -y docker-desktop
choco install -y dropbox
choco install -y gimp
choco install -y golly
choco install -y inkscape
choco install -y libreoffice-fresh
choco install -y lockhunter
choco install -y nodejs
choco install -y openhardwaremonitor
choco install -y pdfsam
choco install -y putty
choco install -y screentogif
choco install -y teraterm
choco install -y typora
choco install -y winscp
```

- [Adobe Acrobat Reader DC](https://acrobat.adobe.com/jp/ja/acrobat/pdf-reader.html): PDFファイル閲覧。
- [CCleaner](https://www.ccleaner.com/ccleaner): 不要ファイル削除。 
- [CrystalDiskInfo](https://crystalmark.info/ja/software/CrystalDiskInfo/): HDD/SSD状態チェック。
- [CrystalDiskMark](https://crystalmark.info/ja/software/crystaldiskmark/): HDD/SSDベンチマーク。
- [Docker Desktop](https://www.docker.com/products/docker-desktop): Dockerコンテナ実行環境。
- [Dropbox](https://www.dropbox.com/): Dropboxデスクトップアプリ。
- [GIMP](https://www.gimp.org/): ビットマップ画像編集ソフト (Adobe Photoshopの代わり)。
- [Golly](http://golly.sourceforge.net/): ライフゲーム。
- [Inkscape](https://inkscape.org/ja/): ベクター画像編集ソフト (Adobe Illustratorの代わり)。
- [LibreOffice](https://ja.libreoffice.org/): オフィススイート。
- [LockHunter](https://lockhunter.com/): ファイルをアンロック。
- [Node JS](https://nodejs.org/ja/): JavaScript実行環境。
- [Open Hardware Monitor](https://openhardwaremonitor.org/): ハードウェア状態監視ソフト。
- [PDFsam Basic](https://pdfsam.org/): PDFファイル編集ソフト。
- [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/): リモートログオンクライアント。
- [Screen To Gif](https://www.screentogif.com/): 画面録画ソフト。
- [Tera Term](https://ttssh2.osdn.jp/): リモートログオンクライアント。
- [Typora](https://typora.io/): Markdownエディタ。
- [WinSCP](https://winscp.net/):  SFTP、SCP、S3、FTPクライアント。


# 10. Update

```:コマンドプロンプト(管理者)
choco upgrade -y all
conda update -y --all
```

```bash:Cygwin64&nbsp;Terminal
apt-cyg dist-upgrade
```

```bash:WSL&nbsp;(Ubuntuの場合)
sudo apt update
sudo apt-get upgrade
```

```bash:WSL&nbsp;(Homebrewを入れた場合)
brew upgrade
```


# 11. TODO

- ~~[Eclipse](https://www.eclipse.org/)はChocolateyを使う or [Pleiades All in One](http://mergedoc.osdn.jp/)?~~
- ~~[MiKTeX](https://miktex.org/)はChocolateyでインストール可能だが日本語非対応。[TeXLive](https://www.tug.org/texlive/) or [W32TeX](http://www.w32tex.org/)?~~
- ~~[Cygwin](https://www.cygwin.com/)は必要か?~~
- ~~[Tera Term](https://ttssh2.osdn.jp/index.html.ja)や[PuTTY](https://www.putty.org/)はまだ必要か?~~
- ~~[Ubuntu on Windows](https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/)?~~
- ~~[Node.js](https://nodejs.org/ja/)? (JupyterLab extensionが使う。)~~
- ~~[Firefox](https://www.mozilla.org/ja/firefox/new/)?~~
- ~~[LibreOffice](https://ja.libreoffice.org/)? (MS Office関連のファイルの拡張子ごとの設定が変更される?)~~