LinuxからWindowsに戻って。

ずっとFedoraでGUIにはGnome3を使っていたのですが、この度Windows10に戻ってまいりました。
ここ半年ぐらい使ってきていろいろ試したのでターミナルや開発ツールを列挙していこうと思います。

ちなみに開発用のクライアントマシンは WindowsXP -> Win7? -> mac -> Fedora -> Windows10って感じで一通り使いました。

# 普段いじるもの

業務内容はいいとして、普段どんなツールを使っているかを並べてみます。

- ブラウザ
- インフラ系
  - 開発系サーバ Linux CLI
  - 社内サーバ系 Windows GUI, Linux CLI
- 開発環境
  - golang, typescript(フロントもバックエンドも)
  - 開発する用のIDE, エディタ
  - DB操作系
- 業務系
  - えくせるとか。Google Docs全般

# マシン
2021/11月追記: ChromeとWSLがメモリをモグモグしていくのでMEM24Gにしました。そろそろ新しいの欲しい。

Thinkpad T480sでi7-8550U, MEM16Gです。GPUオプションは後述のeGPUを使っているので入れてないです。

## eGPU

2021/11月追記: eGPUやめちゃいました。抜き差しめんどくさいんで。でもやっぱり処理能力的にはほしい。

別にゲームとかするわけではないのですが、eGPUでGTX 1050tiをつなげています。ブラウザのレンダリングが快適になってよいです。

## 外部ディスプレイ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56925/17bdcee9-f106-2fdc-8612-770883ed16d7.png)

1(Builtin)と2(25inch)がWQHDで3(15inch)が4Kです。
サイズ、解像度はビルトインと同じぐらいのものを用意したほうがよいように思えます。（大きいと離れたり近づいたりしないといけない。Scale合わせてもいまいちです。）

# OS周り

外部GPUの設定がほとんどいらないくてドライバ入れるだけでoptimusなどをやってくれるのがとっても良い。Linuxはいろいろ設定してもいまいち動かなかった。
ファイラー周りもいい動きしますね。ただし、node_modulesなどの中身でPATHが長くなりすぎたりする場合にはこけます。ダメです。シンボリックリンクもいまいちうまく動かん。

# ターミナル

2021/11月追記: ここ1年ぐらいWindows Terminalを使っています。WSL2 のDebianをデフォルトで上げていますがディストリはなんでもよさそうです。設定もJSONファイルを直接いじるのではなく、GUIから行えるようになったので楽ちん。ただ、レンダリングが遅いのは相変わらず。Windowsだから仕方ないのか？


HyperからのPowerShellを使っています。
結局キーバインドがつらいので、PSReadLineをONにした。Profileでbash_profile的なものが作れて、 `Set-Alias ll ls` とかってできるので我慢ができないやつだけ設定してます。
まぁ結局wslなり開発サーバ使っちゃうんですけどっ。

https://hyper.is/

~~今のところ問題なのが、C-/のキーバインドが通らなくてemacsでundoできない！ってところぐらい。~~
~~→intel graphics control panel を削除したところうまく動くようになりました。キーバインドを持っていかれていたみたいです？~~
→ PowerShellからwslを上げてsshすればうまく動くようです。（何かあるが謎

Linuxの環境が欲しい場合にはHyper -> PowerShell -> wslします。
sshするときもwsl経由です。~/.ssh/configとかのkeyファイル指定やプロキシコマンドがうまく動かないので。。。

Windows Terminalも使ってみましたが、描画が遅くて間違えてでかいファイルをcatしてしまうと止まらないので止めました。同じ理由でPowerShellを直接使うのもやめた。

## WSL

DebianをWSL2で使っています。ファイルアクセスはWinからDebianのアクセスはWSL2のほうが早いですが、WinのIDEからWSL2のファイルをいじってもだいたい動かないので1でも2でも変わらんやろって思います。
UbuntuでもDebianでもどっちでもいいと思います。

X入れてgnome-terminalをWinに飛ばしたりしてみましたが、どうしてもレスポンスが気になって結局使わなくなりました。
IDEをLinuxで動かしたくなればこの辺が必要かなと。もうLinuxでいいじゃんてのはナシで。（うすうす気づいてるから）

2021/11月追記: WSLgでgnome-terminal試してみましたが、行き来とIME周りとかの問題でWindowsTerminalでいいじゃんってなりました。

# 開発環境

## IDE, エディタ

2021/11月追記: 結局Intellijやめてvscode一択になりました。Remote Developmentが便利すぎる。ただし、仕組み上サーバ側に結構CPU/MEMが必要になるので複数人で同一サーバ使うときは注意

js, typescriptにはWebStorm、それ以外にはvscodeを利用しています。
linterなどが必要で、ローカルに実行環境があったほうがよい場合に使っています。anyenvなどがないので最終的には開発サーバのDocker等で動かす感じにしています。

まだ試し中なのですが、vscodeのremote Developmentはあたかもリモートサーバにいる感じでデバッグなどができるのでこれが正解なのでは？と思っています。Intellijにも同じ機能があるのかな。どうなのかな。
これであればWSLもいらないし！

## Docker, k8s

最初はローカルにDocker for Windowsを入れてやっていましたが、どうにも遅かったりファンがうるさいので開発サーバにk8s環境を用意して利用しています。
デメリットとしてはネットワークがなくなると開発できなくなるのですが、PCを持ち歩いたりしないのでOKです。

## DBいじくりツール

mysql, Auroraを使うことが多いので、ターミナルとMysql WorkBenchをLinuxのころから使っています。
Mysql workbenchってモデリングツールってイメージがあるけど、今はクエリもちゃんと流せるし便利です。

# ファイラー

ショートカットキーを覚えればデフォルトで大丈夫。
便利なのはPowerShellなどから `explorer .` とかってするとそのディレクトを開いてくれるところかな。だいたいできるかｗ

# Ctrl2Caps

CapsLockはCtrlにしてます。Ctrl2Capってので変えるのがシンプルでよい。https://docs.microsoft.com/en-us/sysinternals/downloads/ctrl2cap
Linuxのときはキーリピートを爆速にしていたのですが、Windowsではうまくできなかったのでしていないです。（リピート感覚がしっくりこない。）

# まとめ

好みによるので人によって良し悪しありますが、参考になれば幸いです。
Windowsはターミナルだけなんとかなればいいのになぁと思ってます。えくせるとかもちゃんと動くのはよいところ。
逆にLinuxはGPU回りが何とかなればいいんですけどね。。。


- ~~eGPU~~
- Windows Terminal ~~Hyper~~
- vscode, ~~Intellij Webstorm Goland~~
- Mysql Workbench
- Ctrl2Caps
- 要開発サーバ

って感じかな。経験してきたWindows中ではWin10が一番よさげ。Macは一番中途半端でLinuxでいいじゃんってなった。
結局Fedora -> Win10 -> Macの順番かな。