基本ツールと環境設定(2021年睦月)

# 初めに
こんにちは、本書をご覧になっていただき、ありがとうございます。
今回はシェルの環境設定と使い勝手の良い基本ツールの導入です。
- 2022-08-14 改定：LibreOfficeのパッケージ変更

## 対象の読者
以下のような方々のお役にたてれば幸いです。

- ソフトウェア開発、特に製造や評価などに関わる人
- Windows用のアプリやツールをコマンドから使いたい人
- Windows用のアプリやツールをスクリプト化して処理したい人

#　環境設定

ターミナルを導入しシェルが使いやすくなったので、次は環境定義を充実させていく。やりたいことは、パスや別名(Alias)の設定、環境変数定義など、bashの.bashrcや.bash_profileで定義していることだ。

## マシン環境
### ディレクトリ作成
よく使うディレクトリをあらかじめ作成しておく。スペースが入るパス名で問題が発生することが多いので、それを防止する目的もある。ドライブレターなど、自分の環境に合わせて変えておく。今後の解説では、以下のディレクトが存在する前提で進めていく。

```powershell
mkdir c:\home\seeds
mkdir c:\home\docs
mkdir c:\opt\bin
mkdir c:\opt\tools
mkdir c:\tmp
mkdir c:\var
```

# 基本ツール

プロジェクトで統一しておきたい基本ツールなどを順次インストーしていく。

## ファイル編集系
#### オフィス：LibreOffice
2022年葉月において、以前Bucketに存在した「libreoffice-stable」パッケージがなくなっているため、現状に合わせて更新する。

<details><summary>以前の記事(2021)</summary>
```powershell
# 検索
scoop search libreoffice
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/5488f7aa-a83d-3ecc-eafa-73e8650083cf.png)

```powershell
# インストール
scoop install libreoffice-stable
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/17f3ca09-b248-6f1c-70b4-479bdd0260f4.png)
</details>

```powershell
# 検索
PS C:\opt\bin> scoop search libreoffice
Results from local buckets...

Name        Version Source Binaries
----        ------- ------ --------
libreoffice 7.4.0.3 extras
```

```powershell
# インストール
PS C:\home> scoop install libreoffice
Installing 'libreoffice' (7.4.0.3) [64bit] from extras bucket
LibreOffice_7.4.0.3_Win_x64.msi (339.3 MB) [==================================================================] 100%
Checking hash of LibreOffice_7.4.0.3_Win_x64.msi ... ok.
Running pre_install script...
Linking ~\scoop\apps\libreoffice\current => ~\scoop\apps\libreoffice\7.4.0.3
Creating shortcut for LibreOffice\LibreOffice (soffice.exe)
Creating shortcut for LibreOffice\LibreOffice Base (sbase.exe)
Creating shortcut for LibreOffice\LibreOffice Calc (scalc.exe)
Creating shortcut for LibreOffice\LibreOffice Draw (sdraw.exe)
Creating shortcut for LibreOffice\LibreOffice Impress (simpress.exe)
Creating shortcut for LibreOffice\LibreOffice Math (smath.exe)
Creating shortcut for LibreOffice\LibreOffice Writer (swriter.exe)
'libreoffice' (7.4.0.3) was installed successfully!
Notes
-----
If you are upgrading from portable version, you can migrate settings by copying
"C:\Users\cintake\scoop\persist\libreoffice\Data" to "%AppData%\LibreOffice"
'libreoffice' suggests installing 'extras/vcredist2022'.
```
scoopにてインストールや更新の管理はできるが、残念ながらこのままではcliから利用できないので、パスなどの設定を追加する。やり方は最後にまとめておく。

最後に「vcredist2022」のインストールを勧められるが、すでにインストールしている場合は不要。もし、未インストールであっても、以下でインストールするMySQLWorkbenchに絡んで最新版を入れるので、ここでは無視。

Visual C++ 2015 以降は共通化された「Universal CRT」を採用しており、より新しいランタイムが入っていれば「vcredist2015」も含まれているとのこと。逆に「vcredist2015」をインストールしても新しいランタイムには影響がないとのこと。[^1]

「タスクバーにピン留め」しておくと便利。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/d8cdbf11-aebb-419a-c8d4-6985df0e7b38.png)

#### エディタ：sakura
```powershell
# 検索
scoop search sakura
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/2a6746c8-6868-2746-2e32-1e95d71f627b.png)


```powershell
# インストール
scoop install sakura-editor
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/885c5f17-6ac1-f6a0-b1dd-78c16f6370e3.png)
「sakura」で起動できることを確認。
Explorer上で、ファイル右クリックして「SAKURAで開く」のコンテクストメニューに追加するには、以下のスクリプトを流してRegistryにキーを追加する。

```powershell
# コンテクストメニューに追加
REG ADD "HKCU\Software\Classes\*\shell\SakuraEditor" /d "SAKURAで開く"
# プログラムパスを指定
REG ADD "HKCU\Software\Classes\*\shell\SakuraEditor\command" /d "${ENV:userprofile}\scoop\apps\sakura-editor\current\sakura.exe %1"
```

特定のファイルタイプだけ設定したい場合は、【設定】-【タイプ別設定一覧】でファイルタイプを選択し、「右クリックメニューに追加」をチェック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/ddd15389-5304-70b2-a4aa-22105f47edb2.png)

#### SSH/SFTPクライアント：rlogin
Bucktを追加してからインストール

```powershell
# Bucket追加
scoop bucket add scoop-leaky-bucket https://github.com/kentork/scoop-leaky-bucket
# 検索
scoop search rlogin
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/30e23cb0-33f9-d917-f9fa-33eb5d2abef6.png)

```powershell
# インストール
scoop install rlogin
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/bb6e2938-021d-f1ff-625a-5d070b0b7c2f.png)

あれ、現時点ではURLの指定先が見えなくなってる、、、ということで、改造版を作った。

```powershell
# Bucketを変更
scoop bucket rm scoop-leaky-bucket
scoop bucket add scoop-leaky-bucket https://github.com/korabo/scoop-leaky-bucket.git
# 検索
scoop search rlogin
# インストール
scoop install rlogin
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/50e8e29a-2c72-2d1d-a1a1-abf53b46e399.png)
あれ！！今度は別のエラー。前回のインストールが中途半端に残っていて邪魔しているようだ。

```powershell
# 再インストール
scoop uninstall rlogin
scoop install rlogin
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/f0aeacf8-4e5a-db89-e8c8-1b773c289a96.png)
「rlogin」で起動を確認

#### ブラウザ：Chrome/FireFox
```powershell
# 検索
scoop search googlechrome
scoop search firefox
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/4af2b23d-bdff-fccc-0571-6e71f8a77831.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/3642f770-24b0-4a18-9db2-b7149c0e5d81.png)

```powershell
# インストール
scoop install googlechrome
scoop install firefox
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/73a1b895-d416-e0cf-4a38-4e077fbacba2.png)
起動は、「chrome」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/4c7d8d59-144f-a53c-6c5f-ab14e9f4d8be.png)
起動は、「firefox」

#### DBツール：mysql-workbench
```powershell
# 検索
scoop search mysqlworkbench
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/9d648f25-2bfe-f98e-547f-33aa2aedf8e1.png)

前提として、.NetFrameworkとVCライブラリが必要なので、それもインストールする。[^2]

```powershell
# インストール
# dotnet-sdk (6.0.400)
scoop install dotnet-sdk
# vcredist2022 (14.32.31332.0)
scoop install vcredist2022
# MySQLWorkbench
scoop install mysql-workbench
```
##### .NetFrameworkを含むSDK
```powershell
PS C:\home> scoop install dotnet-sdk
Installing 'dotnet-sdk' (6.0.400) [64bit] from main bucket
dotnet-sdk-6.0.400-win-x64.zip (249.6 MB) [===================================================================] 100%
Checking hash of dotnet-sdk-6.0.400-win-x64.zip ... ok.
Extracting dotnet-sdk-6.0.400-win-x64.zip ... done.
Linking ~\scoop\apps\dotnet-sdk\current => ~\scoop\apps\dotnet-sdk\6.0.400
Creating shim for 'dotnet'.
'dotnet-sdk' (6.0.400) was installed successfully!
'dotnet-sdk' suggests installing 'extras/vcredist2022'.
```

「dotnet --list-runtimes」「dotnet --list-sdks」でインストールされたSDKとRuntimeがわかる。
```powershell
PS C:\home> dotnet --list-runtimes
Microsoft.AspNetCore.App 6.0.8 [C:\Users\cintake\scoop\apps\dotnet-sdk\current\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.8 [C:\Users\cintake\scoop\apps\dotnet-sdk\current\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.8 [C:\Users\cintake\scoop\apps\dotnet-sdk\current\shared\Microsoft.WindowsDesktop.App]

PS C:\home> dotnet --list-sdks
6.0.400 [C:\Users\cintake\scoop\apps\dotnet-sdk\current\sdk]
```
##### VCランタイムライブラリ(未インストールの場合)

<details><summary>以前の記事(2021)</summary>
VCライブラリ(途中でエラーが発生するが、Windowsの再起動にからむもの[^3])

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/25eb05be-f299-f3d4-4811-bbea462acadf.png)
</details>

```powershell
PS C:\home> scoop install vcredist2022
```

scoopで入れたのは単なるインストーラなので、scoopからは削除してよい

```powershell
scoop list
scoop uninstall vcredist2022
```
vcredist2022自体を削除するには、Windowsの「プログラムのアンインストール」で行う。(以下の画像はvcredist2019のもの)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/c7c5798b-91ac-c6fa-4120-f4e6fcc803d8.png)

##### MySQLWorkbench

<details><summary>以前の記事(2021)</summary>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/86589093-4bb9-30aa-8eda-641411286a5a.png)

</details>

```powershell
C:\home> scoop install mysql-workbench
Installing 'mysql-workbench' (8.0.30) [64bit] from main bucket
mysql-workbench-community-8.0.30-winx64.msi (44.5 MB) [=======================================================] 100%
Checking hash of mysql-workbench-community-8.0.30-winx64.msi ... ok.
Extracting mysql-workbench-community-8.0.30-winx64.msi ... done.
Linking ~\scoop\apps\mysql-workbench\current => ~\scoop\apps\mysql-workbench\8.0.30
Creating shim for 'MySQLWorkbench'.
Creating shim for 'mysql'.
Creating shim for 'mysqldump'.
Creating shortcut for MySQLWorkbench (MySQLWorkbench.exe)
'mysql-workbench' (8.0.30) was installed successfully!
```

起動は、「MySQLWorkbench」

念のためここで再起動しておく

```powershell
shutdown /r
```
#### 開発用IDE：Visual Studio Code
MS製汎用IDE フリー版 (NodeJS, Electron製)

```powershell
# 検索
scoop search vscode
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/dab3655b-5d78-be42-a559-b18a4e6bd1f9.png)

```powershell
# インストール
scoop install vscode
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/97e09b7e-2e6a-394a-17f3-86b54adcb72d.png)

起動は、「code」

#### その他
プロジェクトで使用するツール類もなるべくscoopでインストールする。
例）Slack, keepassxc, inkscape, gimp, putty, , ,
nodejsはnvmを入れてから複数バージョンを設定できるようにするとよい。
PHPやPythonなども複数バージョンを使う場合には仮想環境として構築する。本書ではDocker環境を利用するので、Windows環境での開発言語設定などは省略。 

## デスクトップ
#### タスクバーにピン止め
よく使うものはピン留めしておく。スペース節約のためコルタナさんなどはアイコンだけにしている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/d933a5ea-d9c5-0818-31b4-de3bb4b24ce6.png)

## パスとエイリアス
LibreOfficeや、独自にインストールしたアプリなどもCLIから起動できるようにプロファイルとスクリプト類を設定する。

### スクリプトファイル
「c:\opt\bin」にファイルを配置する。ファイル添付できないので、Githubのリポジトリをリンクしておく。下記の 「platform/windows/opt/bin」の下のファイルを「c:\opt\bin」にコピーする。
PowerShellではcmd.exeのdoskeyのようなパラメータ付きでのコマンド置き換え機能がなく、単純なコマンド入れ替えしかできないため、パラメータを加工するようなものは、.cmdファイルとして作成した。例えば、hostsファイルを編集するコマンドとか。

https://github.com/korabo/workenv

自分の環境に合わせて変数やスクリプトを追加する。
### cmd.exe のプロファイル
Registryに起動時に読み込むスクリプトを指定する。「.bashrc」みたいなもの。エイリアスが定義され、パスに「c:\opt\bin」が追加される。

```powershell
REG ADD "HKCU\Software\Microsoft\Command Processor" /v AutoRun /t REG_EXPAND_SZ /d "c:\opt\bin\.cmdrc.cmd"
```

* もし、HKLMに同様なキーが存在すると、そちらが優先される。その場合は、HKLMの 'AutoRun' を削除するか修正しておく。
* HKCU: Hkey Current User
* HKLM: Hkey Local Machine

「cmd」を起動して確認

```bat
hlp
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/8caf5ea9-9247-20e0-5ac7-5e10176a58c9.png)

### PowerShell のプロファイル
起動時に読み込まれるファイルを作成する。エイリアスが定義され、パスに「c:\opt\bin」が追加される。「WindowsPowerShell」と「PowerShell (Core)」で別のファイルの場合もあるので、両方とも設定する。
#### WindowsPowerShell
「PowerShell」を起動。

```powershell
. c:\opt\bin\.psrc.ps1
.prof-upd
```

* 注意：先頭の '.'(ピリオド) はスクリプトをsource(読み込んで実行)する意味を持ち、必要なので、忘れずに入力すること。

標準設定の場合、「WindowsPowerShell\Microsoft.PowerShell_profile.ps1」ファイルが未作成なら新規作成され、メモ帳が開く。以下の行が最後にあればOK。もし重複する行があれば削除して保存して終了。

```powershell
# .psrc.ps1 v1.0-210611 ST(KRB/SPG/RPA/SCR)
. "c:\opt\bin\.psrc.ps1"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/ef885ceb-67d1-afb4-ce31-4e9297dff62a.png)

#### PowerShell (Core)
「pwsh」を起動し、profileが共通かどうかを調べ、独自プロファイルになっている場合は、上記と同じことを繰り返す。

調査方法：「powershell」から以下を実行。

```powershell
type $profile
```
WindowsPowerShellのプロファイルと同じものが見えている場合は、設定終了。
ファイルがない場合や、内容にWindowsPowerShellの時の行がない場合は、同様にして設定する。

```powershell
. c:\opt\bin\.psrc.ps1
.prof-upd
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352975/dfdda7a7-e79c-4ccf-08c7-84dbee2f0888.png)
「PowerShell\Microsoft.PowerShell_profile.ps1」ファイルが作成され、メモ帳が開く。WindowsPowerShellの時と同じ1行があればOK。

はあ、はあ、、、やっと時間がとれて少し進んだ。

親記事：[WSL2とVSCで作るWindowsでのDocker内開発環境(2021年睦月)](https://qiita.com/CinTAKE/items/ee348acec54195ef5bd1)

[^1]: https://community.amd.com/t5/general-discussions/microsoft-ends-visual-c-redistributable-chaos/td-p/85049
[^2]: FAQでは、.NetFramework4.0とvcredist2010aとなっている　＝＞https://mysqlworkbench.org/faq/faq-3/
[^3]: 次の記事中に「3010」エラーの解説あり　＝＞　[Windows に .NET をインストールする](https://docs.microsoft.com/ja-jp/dotnet/core/install/windows?tabs=net500)