【Win11】Win11 に入れたらいいなと思うアプリの備忘録

●　はお薦め or 必須、▲　は場合によって。
基本は Microsoft Store（以下ストア）と [winget](https://docs.microsoft.com/ja-jp/windows/package-manager/winget/) を使って入れていく。

ちなみに、ストアでインストールされるものと winget でインストールされるのは異なる場合があるので注意。
```
PS> winget search gimp
名前         ID                バージョン 一致      ソース
-----------------------------------------------------------
GIMP         XPDM27W10192Q0    Unknown              msstore ← ストアでインストールされる。
GIMP         GIMP.GIMP         2.10.32              winget ← winget でインストールされる。
```
ストアで入れると、\Program Files\WindowsApps という隠しフォルダーの下にインストールされるが、
実体がどこに入ったのかを見つけるのがかなり難しい。
ソースが winget からインストールすると、スタートメニューから「ファイルの場所を開く」が選択できるので
実体を見つけるのが簡単になる。

# ユーティリティ
## [● winget（入っているかも）](https://docs.microsoft.com/ja-jp/windows/package-manager/winget/)
winget は、Windows 10/11 上で、アプリケーションを管理できる Microsoft社謹製のパッケージマネージャー。
Windows 11 と最新バージョンの Windows 10 には標準でバンドル（インストール）されているので、
特にインストールする必要はない。
コマンドラインから winget と入力して見つからない場合は、
最新バージョンにアップデートするか ストア から「アプリ インストーラー」としてインストールする。
名前は違うが「アプリ インストーラー」で winget がインストールされる。

```
PS> winget
Windows パッケージ マネージャー v1.2.11601
Copyright (c) Microsoft Corporation. All rights reserved.

WinGet コマンド ライン ユーティリティを使用すると、コマンド ラインからアプリケーションやその他のパッケージをインストールできます。

使用状況: winget [<コマンド>] [<オプション>]

使用できるコマンドは次のとおりです:
  install    指定されたパッケージをインストール
  show       パッケージに関する情報を表示します
  source     パッケージのソースの管理
  search     アプリの基本情報を見つけて表示
  list       インストール済みパッケージを表示する
  upgrade    指定されたパッケージをアップグレードします
  uninstall  指定されたパッケージをアンインストール
  hash       インストーラー ファイルをハッシュするヘルパー
  validate   マニフェスト ファイルを検証
  settings   設定を開くか、管理者設定を設定する
  features   試験的な機能の状態を表示
  export     インストールされているパッケージのリストをエクスポート
  import     ファイル中のすべてのパッケージをインストール

特定のコマンドの詳細については、そのコマンドにヘルプ引数を渡します。 [-?]

次のオプションを使用できます。
  -v,--version  ツールのバージョンを表示
  --info        ツールの一般情報を表示

詳細については、次を参照してください。 https://aka.ms/winget-command-help
```

## ● Java
Jdk または OpenJDK を入れる。winget で openjdk で search すると候補は沢山表示されるが、
とりあえず使えそうなのは以下かな？

```
名前                                       ID                             バージョン  一致         ソース
---------------------------------------------------------------------------------------------------------
Java SE Development Kit 18                 Oracle.JDK.18                  18.0.2.0    Tag: openjdk winget ← Oracle純正
Java SE Development Kit 17                 Oracle.JDK.17                  17.0.4.0    Tag: openjdk winget
Microsoft Build of OpenJDK with Hotspot 17 Microsoft.OpenJDK.17           17.0.3.7    Tag: openjdk winget ← Microsoft謹製
Microsoft Build of OpenJDK with Hotspot 16 Microsoft.OpenJDK.16           16.0.2.7    Tag: openjdk winget
Microsoft Build of OpenJDK with Hotspot 11 Microsoft.OpenJDK.11           11.0.15.10  Tag: openjdk winget
```
親和性は高いだろうから Microsoft 制をインストール。
```
PS> winget install --id Microsoft.OpenJDK.17
```
ターミナルを再起動（追加されたパスを有効にする）してバージョンの確認
```
PS> java --version
openjdk 17.0.3 2022-04-19 LTS
OpenJDK Runtime Environment Microsoft-32931 (build 17.0.3+7-LTS)
OpenJDK 64-Bit Server VM Microsoft-32931 (build 17.0.3+7-LTS, mixed mode, sharing)
```
## [● VisualStudio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
軽量コードエディタ。WindowsでもMacでも使える。
Microsoft の VisualStudio のエディタ部分だけパッケージングしたもの。
プラグインで色々な機能を追加できる。

```
PS> winget install "Microsoft Visual Studio Code"
```
ストアから「Visual Studio Code」をインストールしても良い。

## ▲ NVM for Windows
複数バージョンの node を使いたいなら、Node.js のバージョン管理ツール NVM を入れる。
複数のバージョンをインストールしたり、切り替えたりできる。
（Mac には nodebrew をインストールしたが、nvm もあるので、そちらを入れた方が覚えるのが半分で済んだかも。）
```
PS> winget install "NVM for Windows"
```
ターミナルを再起動すると nvm が使用可能になる。インストール可能なバージョンの一覧を見るには、
```
PS> nvm list available

|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    18.7.0    |   16.16.0    |   0.12.18    |   0.11.16    |
　　　　　　:
|    17.2.0    |   14.17.5    |   0.10.48    |    0.9.10    |

This is a partial list. For a complete list, visit https://nodejs.org/en/download/releases
```
これは部分的なリストで、完全なリストは[ココ](https://nodejs.org/en/download/releases)。完全なリストにあればインストール可能。
18.7.0 をインストールするには
```
PS> nvm install 18.7.0
```
インストールしたものをカレントに設定しようとするとエラーになる。
```
PS> nvm use 18.7.0
exit status 1: �A�N�Z�X�����ۂ����܂����B
```
これはリンクの作成先がデフォルトでは Program Files に作成されるので管理者権限がないと変更できないため。
なので、管理者権限で PowerShell を立ち上げる。-verb runas が管理者として実行するオプション。
```
PS> Start-Process powershell -verb runas ← 既存の Powershell を実行する場合はこちらを使う。
PS> Start-Process pwsh -verb runas ← 新たに適用した Powershell 7 を使う場合はこちらを実行。
```
実行すると別ウィンドウが開くので、そちら側でコマンドを実行する。
```
PS> nvm list

    18.7.0
PS> nvm use 18.7.0
Now using node v18.7.0 (64-bit)
PS> node --version
v18.7.0
PS> npm --version
8.15.0
```

## ▲ Git
ソース管理を Git で行っているなら必須。
```
PS> winget install --id Git.Git
```
## ● 7-zip
圧縮/解凍ソフト。.rar などの形式にも対応している。

```
PS> winget install 7zip.7zip
```
# ネットワーク
## [● Chrome](https://www.google.co.jp/intl/ja/chrome/)
ブラウザ。でも、Edge も中味は Chrome なので入れなくても良いかも。
開発者は動作確認のため入れた方が良い？
```
PS> winget install --id Google.Chrome
```

## [▲ Zoom](https://zoom.us/)
Web会議アプリ。シェアは多いので、仕事で使っているなら入れておいた方が良い。
```
PS> winget install --id Zoom.Zoom
```
ストアから「Zoom Cloud Meetings」をインストールしても良い。

## [▲ xampp(Apache + MariaDB + PHP + Perl)](https://www.apachefriends.org/jp/index.html)
WordPress のプラグイン開発など、手っ取り早く Webサーバーの環境を整えたいならこれを入れる。

```
PS> winget search xampp
名前      ID                      バージョン ソース
----------------------------------------------------
XAMPP 8.1 ApacheFriends.Xampp.8.1 8.1.6-0    winget
XAMPP 7.4 ApacheFriends.Xampp.7.4 7.4.29-1   winget
XAMPP 8.0 ApacheFriends.Xampp.8.0 8.0.19-0   winget
```
新しいのを入れておけば間違いないと思う。
```
PS> winget install "XAMPP 8.1"
```
ただし、DB がマリアなんだよなぁ
## [▲ FileZilla](https://filezilla-project.org/)
ローカルとリモートのディレクトリやファイルの一覧を並べて表示して、
ドラッグ＆ドロップでコピーや移動ができるFTPクライアント。
自分でWebサーバを持ってて、コンテンツアップロードを頻繁にするならあった方が良い。

```
PS> winget install "FileZilla Client"
```

# メディア
## [▲ Gimp](https://www.gimp.org/downloads/)
![gimp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63139/22dcb401-c8fa-3b28-d273-3a7849ec6c5b.png)
画像編集ソフト。絵とか画像を扱う人なら要れた方が良い。
お金が有り余っている人は Adobe社製品を使ってね。

```
PS> winget install --id GIMP.GIMP
```
ストアから「GIMP」をインストールしても良い。

# DB
## [▲ mysql](https://dev.mysql.com/downloads/mysql/)
何かと使うデータベースなので、開発等で必要ならば入れておく。
**インストール**
```
PS> winget install --id Oracle.MySQL
```
インストールすると「MySQL Installer - Community」がメニューに追加されるので、
それを起動してインストールしていく。

[Microsoft Windows に MySQL をインストールする（公式）](https://dev.mysql.com/doc/refman/5.6/ja/windows-installation.html)
## MySQL Workbench（DB管理ツール）
上のインストーラーで標準でインストールされるので、GUI形式のDB管理は、これを使えば良さそう。

## mysql（クライアントツール）
C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe にインストールされるが、残念ながらパスは通っていない。
メニューに作成される「MySQL 8.0 Command Line Client」または「MySQL 8.0 Command Line Client - Unicode」から使う。

# その他
## 新機能と改善のために最新の PowerShell をインストールしてください!
標準のターミナルを実行すると、以下の様なメッセージが表示される。確認すると Version は 5。最新は 7。
```
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows

PS>  $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.22000.832
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22000.832
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
```
「新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows 」
と出るが、[インストール方法の選択肢が沢山ありすぎる。](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.2)

バージョン管理ができないのは問題なので、msi や zip からのインストールは捨てて
ストアから入れるのが一番楽なのだが、制限事項が適用されるらしい。
次善の策として winget でインストールする。
```
PS> winget install --id Microsoft.Powershell --source winget
```
モノは c:\ProgramFiles\PowerShell\7\ 以下にインストールされる。
もちろん、Windowsメニューにも PowerShell 7 が追加されるが、
Windowのターミナルからも呼び出したい場合、
設定を開いて、既定のプロファイルを 追加した PowerShell のプロファイルに変更すればOK。

## 環境変数の再読み込み
アプリをインストールするとパスが変更されるので、ターミナルを再起動せず、それを再読み込みする方法。
パス以外の環境変数が追加された場合はターミナルの再起動してね。
```
# 以下の行を実行する。
PS> $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
# 再設定されたか確認。
PS> $env:PATH
```