開発環境をmacからwindowsへ移行

# はじめに
自分はフリーランスエンジニアとして約2年間macで開発をしていました。先日初めてwindowsへの移行を試し、結果問題なかったです。本記事では移行した理由、感想、windowsの開発環境などを紹介します。

筆者の状況としては以下になります。
- 2年間macを使用しておりwindowsは未使用
- 開発分野：webアプリのフロントエンド・バックエンド
- 主な使用言語：js・ts・go・php

# 移行した理由
1. 使用していたm1 macの性能不足を感じた
1. macの値段が高い
1. pcでゲームもしたい

## ①使用していたm1 macの性能不足を感じた
スペックは以下です

- CPU：m1
- メモリ：16GB
- ストレージ：256GB

案件にてNext.jsとgoを使用しています。このプロジェクトでエディタが数秒間フリーズしたり、goのビルドで5分ほどかかっておりストレスでした、、、CPUがフル回転するのが頻繁です。

## ➁macの値段が高い
スペックアップを考えると以下の構成になります。

- CPU：m2もしくはm3
- メモリ：24GB
- ストレージ：512GB

しかしこのスペックのmacbookだと軽く25万ほどになります。仕事道具だからと考えると金銭感覚が麻痺しそうですが冷静に高い、、、特にmacはメモリやストレージを一つ上げるだけでも3万円上がるのが納得できませんでした。自分で買えば1万円もしないと思います。

## ③pcでゲームもしたい
macはmチップからかなり性能が上がりゲームをできるスペックはあるのですが、そもそも対応しているゲームがほとんどありません。どうせ高額なpcを買うならゲームもできた方が嬉しいです。

# 購入したwindows PC
MinisforumのUM760 ProというミニPCを購入しました。外での作業が最近は少なかったのでラップトップではなくデスクトップ型にしました。

https://store.minisforum.jp/products/minisforum-um790-pro?variant=44157818568870

スペックは以下の通りで、価格は約10万円です。
- CPU：AMD Ryzen9 7940HS
- メモリ：32GB
- ストレージ：1TB

CPUの性能についてはそこまで詳しくないのでざっくりですが、ベンチマークだとmacのm3チップより高かったです。値段の比較としては同じデスクトップであるmac miniで似た構成の場合、2倍以上高いと思います。

# 移行した感想
## 移行直後
### 良かった点
基本的に当初の目的通りです。
- macに比べて低価格なため、将来的な買い替えを想定しても費用を抑えられる
- スペックアップで開発のストレスがなくなった
- windowsのwsl内で使用しているubuntuがmacと同じUnix系のため開発体験がそこまで変わらない

### 気になった点
スウィッチングコストということでやはり移行には時間と手間がかかります。自分は約2週間windowsの設定をしたりして仕事で使えるようになりました。使用するアプリも変わったりするので手間もかかります。

またmacやiphoneのアプリを開発する場合はmacじゃないとできないため注意です。

## 半年経過後（追記：2024/10/14）
今でもwindowsを使い続けており、移行したことにも満足しています。しかし注意点として、移行前のmacはしばらく持っていた方がいいと感じたので共有です。

理由としては自分が参加しているプロジェクトの他メンバーが全員macのため、windows環境だけのエラーが数回起きたからになります。すぐに解決できない場合は移行前のmacで仕事をして、空いている時間にwindowsエラーを解消するという対応をしてなんとかなりました。他にwindowsを使用しているメンバーがいるのであれば、こういったことは少ないとは思います。

移行直後でなくとも以下理由からサブ機としてmacは持ち続ける予定です。
- メインのwindowsPCが故障した際の予備
- 今後mac・iphoneアプリを開発する可能性もある

余談ですが、プログラミング初心者はwindowsとmacどちらの方がいいかという話をよく聞きますが、自分は今回の体験もありmacの方が良さそうかなと思っています。主な理由はmacの方が使っている人が多い印象で、それだけトラブルに対応しやすいからになります。実際自分の周りでもmacを使っている人の方が多いです。慣れてきたら自分のようにmacからwindowsに移行を試すというのがオススメかなと感じています。

# windowsの開発環境
主にwsl + docker + cursorを使用しています。

## wsl
基本的にはドキュメント通りに進めれば問題なかったです。以前にdockerなどで使用したことがあったので、自分が選択したOSはubuntuです。

### wslのインストールと設定

https://learn.microsoft.com/ja-jp/windows/wsl/install

エディタ・docker含めた開発環境を設定します。

https://learn.microsoft.com/ja-jp/windows/wsl/setup/environment

wslでnode.jsを使えるようにします。

https://learn.microsoft.com/ja-jp/windows/dev-environment/javascript/nodejs-on-wsl

### ターミナル
ターミナルはmacのときから使用しているStarshipでカスタマイズしました。linuxの場合で設定します。gitブランチを簡単に表示できたりと便利です。

https://starship.rs/ja-JP/guide/

### vimへの変更
ubuntuだと初期のエディタがvimではなかったので、vimに変更しました。

https://qiita.com/oouaioi/items/0383747c58ce82d94a51

## エディタ
macから使用していたchatGPTが使用できるcursorです。

https://cursor.sh/

プライグインなどを移行する場合は先にvscodeをインストールして、vscodeの内容をcursorにインポートするのがいいです。

https://www.naporitansushi.com/migrate-vscode-settings/

###  不具合対応
vscodeとcursorの両方を入れているとvscodeのcodeコマンドがcursorコマンドで上書きされる問題がありましたが、以下で解決しました。

https://github.com/getcursor/cursor/issues/1238

現時点（2024/04/13）でwslからcursorコマンドが実行できない不具合があるようですが、現状の回避策は以下で紹介されています。自分の場合cursorコマンドは使わず、cursorのエディタ上からプロジェクトを開くようにしています。

https://github.com/getcursor/cursor/issues/870#issuecomment-1951864065

goの拡張機能でエラーが起きたので、wslにgoをインストールしたところ解決しました。

https://qiita.com/Sicut_study/items/4b00c64c067df43260e9

https://qiita.com/sola-msr/items/93fbf9c988ee81a2f196

# windowsでの代替アプリ
macで使用していたアプリがwindowsで使えなかったときに、探した代替アプリです。

## キーバインドの変更 
mac：karabinar 

https://karabiner-elements.pqrs.org/

↓

win：Ctr2cap + Microsoft PowerToys


https://learn.microsoft.com/ja-jp/sysinternals/downloads/ctrl2cap#installation-and-use

https://learn.microsoft.com/ja-jp/windows/powertoys/

PowerToysはキーバインド以外にも便利な機能が沢山あります。

### 2つ利用している理由
最初はPowerToysだけ使用していましたが、capslockキーの箇所と他のキーを組み合わせたショートカットを設定して使っていると誤動作することが多くありました。capslockキー自体は他のキーに入れ替えているはずなのですが、他のキーと同時に押すとcapslockキー判定にされている印象です。このためCtr2capも追加してcapslockキーをctrキーに変更したところ誤動作がなくなりました。同じ現象が起こる場合はこの組み合わせが現状ではオススメです。

### 気になる点
macの時と完全に同じキーバインドが実現できていないことです。理由としてはwin標準のwin + Lの画面ロックショートカットが変更できなかったからです。

### 追記（2024/10/14）
Change Keyを使用することで上述していたcapslockキーとwin + Lの問題が解決しました。

https://forest.watch.impress.co.jp/library/software/changekey/

以下記事を参考にさせていただきました。

https://qiita.com/hush_in/items/1ac22f4c4c07c7df7900#change-key-keyhac-autohotkey-%E3%81%A7%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA

このため現在の構成としてはChange Key + Microsoft PowerToysになります。
Microsoft PowerToysでキー変更すると動作が安定しない、capslockキーとwinキーだけChange Keyで変更し、それ以外はMicrosoft PowerToysでキー変更しています。

自分は簡単にできたMicrosoft PowerToysを使用していますが、こちらはUI操作になるため、コードで設定できるAutoHotkeyなどを使用するのもいいと思います

https://www.autohotkey.com/


## ランチャーアプリ
mac：alfred 

https://www.alfredapp.com/

↓

win：ueli

https://ueli.app/#/

https://it.hideharublog.com/alfred-windows/

自分の場合アプリやchromeのブックマークを開くときに使用しています。
ほぼalfredと同じ使用感です。

## ダークモードへの自動切換え
mac：標準機能

↓

win：Auto Dark Mode

https://apps.microsoft.com/detail/xp8jk4hzbvf435?hl=ja-jp&gl=JP

https://it-afi.com/windows/windows11%E3%81%A7%E3%80%81%E6%97%A5%E3%81%8C%E6%9A%AE%E3%82%8C%E3%81%9F%E3%82%89%E8%87%AA%E5%8B%95%E3%81%A7%E3%83%80%E3%83%BC%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AB%E3%81%99%E3%82%8B%E3%81%AB/

macだと標準機能としてありますが、windowsだと追加のアプリをインストールする必要があります。

## クリップボード
mac：paste

https://pasteapp.io/

↓

win：clibor

https://chigusa-web.com/clibor/

基本的に同じように使えました。pasteはサブスクの有料ですがcliborは無料です。

## 外部モニターの明るさ変更
mac：Monitor Control Lite

https://github.com/MonitorControl/MonitorControlLite?tab=readme-ov-file

↓

win：Monitorian

https://apps.microsoft.com/detail/9nw33j738bl0?hl=ja-jp&gl=JP



# macに近づけるwindowsの設定

## マウススクロール速度
macのときよりスクロールの速度が遅いなと感じたので以下で速くしました。

https://qiita.com/hachisukansw/items/125cfafc6c67d7594781

## マウススクロールの向き
windowsはデフォルトだとmacと逆向きです。以下記事でmacと同じ向きにできました。

https://leo-pcblog.com/windows10-mousescroll/#toc2

## 仮想デスクトップ切り替えを高速化
windowsにもmacと同じように仮想デスクトップがあります。

https://atmarkit.itmedia.co.jp/ait/articles/1608/05/news047.html

デフォルトだとアニメーションがあることで仮想デスクトップの切り替えが非常に遅いです。以下記事の通りにすることでアニメーションをオフにして瞬時に切り替えできました。注意点としては仮想デスクトップ切り替え以外の全てのアニメーションがなくなるようです

https://zenn.dev/takashiaihara/articles/a1dfc9899a5fe7

windowsはmacと違い特定の仮想デスクトップへ切り替えるショートカットがないのは不便に感じます、、、

# 使用しているショートカット
## スクリーンショットと画面収録
以下2つの方法があります。

### win + Shift + S

https://support.microsoft.com/ja-jp/office/%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%BE%E3%81%9F%E3%81%AF%E7%94%BB%E9%9D%A2%E3%81%AE%E5%86%85%E5%AE%B9%E3%82%92%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B-98c41969-51e5-45e1-be36-fb9381b32bb7

### win + Gでゲームバーを起動
ゲームバーという名前ですがゲーム以外でも使用できます。

https://support.microsoft.com/ja-jp/windows/%E3%82%B2%E3%83%BC%E3%83%A0-%E3%83%90%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6-pc-%E3%81%AB%E3%82%B2%E3%83%BC%E3%83%A0-%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%82%92%E8%A8%98%E9%8C%B2%E3%81%99%E3%82%8B-2f477001-54d4-1276-9144-b0416a307f3c