[超初心者]yarnがインストールできない

# 目次
[1.環境](#-環境)
[2.インストール手順](#-インストール手順)
[3.背景](#-背景)
[4.エラー内容について](#-エラー内容について)
[5.試したこと](#-試したこと)
[6.結論](#-結論)
[7.解決方法](#-解決方法)
[8.yarnのインストール](#-yarnのインストール)
[9.今回のエラーで間違って試したこと](#-今回のエラーで間違って試したこと)
[10.参考URL](#-参考URL)


# 環境
・Windows10
・node.js(node-v18.18.0-x64)
・Visual Studio Code

# インストール手順
インストーラーは下記です。
[node-v18.18.0-x64](https://nodejs.org/ja/download)
[Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)

手順は下記を参考にしました。

https://qiita.com/sefoo0104/items/0653c935ea4a4db9dc2b

https://www.javadrive.jp/vscode/install/index1.html

https://www.javadrive.jp/vscode/install/index4.html


# 背景
node.jsをインストール後、VSコードでyarnコマンドが使用できない。
ただし、Windowsのコマンドプロンプト上ではyarnが使用できるといった事象が発生。
開発はVSコード上で行うため、できればVSコード上のターミナルで実行したいといった理由から解決方法を探りました。

# エラー内容について
下記のコマンドを実行後、エラーが発生。
```
# npmでyarnをインストール
$npm install -g yarn
# yarnのバージョン確認
$yarn -v
```

```ruby:エラー内容
yarn : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\hoge\AppData\Roaming\npm\yarn.ps1 を読み
込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してくだ
さい。
発生場所 行:1 文字:1
+ yarn -v
+ ~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
```

# 試したこと
・Node.jsを[参考URL①](https://qiita.com/piguchi/items/f3c4906416cb3614c48d)に従って再インストール
・node、yarn、実行ファイルのディレクトリの確認
・実行ポリシー スコープの変更（[参考URL④](https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.3)）

# 結論
PowerShell を使用した実行ポリシーの変更を行う必要があった。
下記のコマンドで実行ポリシーを確認したところ、
LocalMachinの実行ポリシーが「Undefined」のため、yarnを実行することができなかった。
```ruby:PowerShell
$Get-ExecutionPolicy -List
```
```ruby:失敗
Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined
```
```ruby:成功
Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine       AllSigned
```

# 解決方法
１Windowsの検索ボックス上で「Windows PowerShell」と入力し、右クリック＞「管理者として実行」を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3563615/5077c283-2b21-8196-82b8-ad13951553f6.png)
２「このアプリがデバイスに変更を加えることを許可しますか？」＞「はい」を押下
３PowerShellが起動。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3563615/cd7d99e3-d94d-4eec-9f66-c44bc301eebc.png)
４下記のコマンドを順に叩たく。
　[参考URL④](https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.3)に同様の内容が書いているので、スコープの意味など気になる方はURLを参照してください。
①現在のセッションに影響を与えるすべての実行ポリシーを取得し、優先順位で表示する.
```ruby:PowerShell
$Get-ExecutionPolicy -List
```
```ruby:結果
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined
```
②CurrentUserのスコープを変更する。
```ruby:書き方
$Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
```
私の場合は下記のように変更しました。
```ruby:PowerShell
$Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
③変更されているか確認する。
```ruby:PowerShell
$Get-ExecutionPolicy -Scope CurrentUser
```
```ruby:結果
RemoteSigned
```
④LocalMachine のスコープを変更する。（③と同様の書き方）
```ruby:書き方
$Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
```
私の場合は下記のように変更しました。
```ruby:PowerShell
$Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope LocalMachine 
```
⑤変更されているか確認する。
```ruby:PowerShell
$Get-ExecutionPolicy -Scope LocalMachine
```
```ruby:結果
AllSigned
```
⑥最後に念のため、変更内容を一覧で確認する。
```ruby:PowerShell
$Get-ExecutionPolicy -List
```
```ruby:結果
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       RemoteSigned
 LocalMachine       AllSigned
```
⑦変更内容が確認出来たら「exit」でPowerShellを終了して大丈夫です。

# yarnのインストール
やっと、yarnをインストールできる環境が整いました。
yarnをインストールするには、node.jsを予めインストールしてください。
（参照）インストール手順：

https://qiita.com/sefoo0104/items/0653c935ea4a4db9dc2b

①VSコードでターミナルを開き、cdコマンドでyarnコンポーネントを追加したいフォルダまで移動
```
$cd <yarnを追加したいディレクトリ>
```

②npmでyarnをインストールします。
```
$npm install -g yarn
```
③バージョンを確認
```
$yarn -v
```
終了



# 今回のエラーで間違って試したこと
参考資料を間違えていた。
[参考URL②](https://yularis.com/nvm-permission-error/)はLinux環境でnodeをインストールするものであり、今回Windows環境で開発を行うため、全く別のものをインストールしていました。
また、Linux環境がもともとないPCだったため、1から環境を作成したですが、Vimの知識がなかったため、編集方法に戸惑いました。[参考URL③](https://zenn.dev/mo_ri_regen/articles/vim-four-modes)はとても分かりやすかったので、是非参考にしていただけたらと思います。

# 参考URL
①[【Qiita】yarn：一生インストールできない](https://qiita.com/piguchi/items/f3c4906416cb3614c48d)
②[yarnのインストールができない](https://yularis.com/nvm-permission-error/)
③[Vim編集方法](https://zenn.dev/mo_ri_regen/articles/vim-four-modes)
④[PowerShell 実行ポリシー](https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.3)