VSCodeの拡張機能を自動インストールするバッチファイル作ってみた　for Mac

# 背景
いつも思うのですが、VSCodeの拡張機能で良いものって決まってませんか？
更に、その決まったものを何回もインストールするの時間の無駄じゃないですか？
（同じことの繰り返しは計算機の得意領域なのに！）
ということで、**Macでバッチファイル**作りましたぁ🔥
(Railsの拡張機能のみで、まだ勉強中ですがアウトプットします！)

Windows版＆CLIアプリは↓です！

https://qiita.com/yuuki-h/items/cee80ab5134a22e341d8

# 内容
以下の２本立てです！
1. バッチファイルって何？
    1. 普通のプログラムファイルとバッチファイルの違い
1. 作ってみた
    1. 動作フロー

（Railsの拡張機能を対象に自動インストールするバッチファイルです！）

## 1. バッチファイルって何？
バッチファイルとは、Windowsで使える拡張子が「bat」のファイル（Macでは、「.command」の拡張子）のことで、**複数のコマンド（命令）やプログラム起動などを一つのファイルにまとめて記述し、一度に連続して実行できるようにしたもの**のことです。たくさんのコマンドを1回の実行で済ませるなんて便利ですね！
でも、こう思った方いませんか？
**「別にターミナルで実行するプログラムと変わらんくね？」**
実は、ここが大きな違いです。
### 普通のプログラムファイルとバッチファイルの違い
通常のユーザプログラム（ファイル）は
1. ターミナルを開いて、
1. ./ファイル名　実行

**2Step**を必要とします。それに対し、バッチファイルでは
1. バッチファイルをクリック
    1. （勝手に）実行

**1Step**で実行できるという訳です！
プログラム(2Step)を10回も繰り返せば、バッチ（1Step）との違いは明白です。
プログラム： 2x10=20
バッチ　　： 1x10=10
20-10=10Stepの差が生まれますね😇

## 2. 作ってみた
### 1. 動作フロー
バッチファイルの動作は以下の通りです。
1. 拡張機能のインストールコマンドに必要な拡張機能たちを格納する配列っぽいものを用意する
1. `code --install-extention <ext>(拡張機能)`を繰り返す

それでは、実際にコードを見てみましょう🙌

[Github URL](https://github.com/YuukiHayashi0510/ExtensionsForVScode-bat)
↑のGithubでリポジトリごとダウンロードすれば、バッチファイルが手に入ります！

```batchfile:rails-ext.command
rem 拡張機能の配列; 作成者.機能名
exts=(
"vscode-icons-team.vscode-icons"
"aki77.rails-db-schema"
"aki77.rails-routes"
"bung87.rails"
"bung87.vscode-gemfile"
"CraigMaslowski.erb"
"ecmel.vscode-html-css"
"formulahendry.auto-close-tag"
"formulahendry.auto-rename-tag"
"Hridoy.rails-snippets"
"jduponchelle.rainbow-end"
"jeff-hykin.better-cpp-syntax"
"kaiwood.endwise"
"manasxx.background-cover"
"mosapride.zenkaku"
"MS-CEINTL.vscode-language-pack-ja"
"oderwat.indent-rainbow"
"pranaygp.vscode-css-peek"
"rebornix.ruby"
"shardulm94.trailing-spaces"
"Vense.rails-snippets"
"VisualStudioExptTeam.vscodeintellicode"
"vscode-icons-team.vscode-icons"
"wingrunr21.vscode-ruby"
"xabikos.JavaScriptSnippets"
"Zignd.html-css-class-completion"
)
rem 実行するコマンド
cmd="code"

rem コマンドのループ、拡張機能毎に実行するよう格納
for ext in "${exts[@]}" ; do
    cmd="$cmd --install-extension $ext"
done

rem 実行
eval $cmd
```
このコードを「.command」形式のファイルに貼り付けるか、私のGithubからダウンロードしたファイルを使えば、Rails関連の便利な拡張機能が自動でインストールできます😻

実行すると、まだ入っていない拡張機能だと以下のような表示になります！
```zsh
Installing extension 'aki77.rails-db-schema'...
Installing extension 'aki77.rails-routes'...
Installing extension 'hridoy.rails-snippets'...
Installing extension 'bung87.rails'...
Installing extension 'vense.rails-snippets'...
(node:15048) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `Electron --trace-deprecation ...` to show where the warning was created)
Extension 'aki77.rails-db-schema' v0.2.5 was successfully installed.
Extension 'aki77.rails-routes' v0.6.3 was successfully installed.
Extension 'hridoy.rails-snippets' v1.0.8 was successfully installed.
Extension 'vense.rails-snippets' v0.5.0 was successfully installed.
Extension 'bung87.rails' v0.17.8 was successfully installed.
```
もしインストールしている拡張機能だと、、、
```zsh
Extension 'vscode-icons-team.vscode-icons' v11.14.0 is already installed. Use '--force' option to update to latest version or provide '@<version>' to install a specific version, for example: 'vscode-icons-team.vscode-icons@1.2.3'.
Extension 'wingrunr21.vscode-ruby' v0.28.0 is already installed. Use '--force' option to update to latest version or provide '@<version>' to install a specific version, for example: 'wingrunr21.vscode-ruby@1.2.3'.
```
このような表示になりますが、気にしなくて良いです！

以上で終わりになります！
バッチファイルは便利なので、勉強してみると面白いです✨

# 参考文献
https://qiita.com/kshibamo/items/9368b0b2a4a2f40b61f1