はじめに
長年MacBookで開発してきたが、案件の都合でWindows PCでの作業に切り替わることになった。
「うっ・・・」となったMacユーザー向けに、最初にやるべき設定と注意点をまとめる。
対象読者: 長年Macを愛用されてきたエンジニアで、
普段はMacのターミナル中心の開発スタイルに慣れている人。Vimmer。
TL;DR
- 実際の開発作業(Python実行、git、Docker、venv操作)は WSL2 (Ubuntu) に寄せる
- PowerShellはWindows自体の管理・軽い作業用と割り切る
- ショートカットキーの再割り当てには PowerToys を使う
- 改行コード・大文字小文字の扱い・パス区切りの違いに注意する
- Vimはaptで即インストールでき、クリップボード連携だけ少し工夫が必要
- 案件先支給PCの場合、OSをまるごと入れ替えるのはNGな場合が多いので事前確認する
1. 開発基盤のセットアップ
WSL2(Windows Subsystem for Linux)
Macのbash/zsh環境に一番近い体験を得られる。Ubuntuを入れて、Python・Docker・Gitなど
実際の開発作業はここで行うのが定番。
wsl --install
Windows Terminal
PowerShell・WSL・Git Bash・SSHなどを複数タブで切り替えられるので最初に導入しておく。
Git / Python環境の再構築
git config --global user.name "your name"
git config --global user.email "you@example.com"
pyenv(Windowsでは pyenv-win、WSL内なら通常のpyenv)や poetry / pipenv を入れ直す。
VS Code
Macと共通で使えるエディタなので、Settings Sync をオンにしておけば拡張機能・
キーバインド・スニペットがそのまま移行できる。WSL Remote拡張を使えば、
WSL内のファイルをそのまま開発できる。
Docker Desktop
WSL2バックエンドを選択すること。Hyper-V経由よりパフォーマンスが良く、
Docker ComposeやTerraformもWSL側で動かすのが安定する。
2. キーボード・操作系のカスタマイズ
MacのCommandキー中心の操作からCtrl中心に切り替わるため、最初の数週間は指が迷う。
主要ショートカット対応表
| 操作 | Mac | Windows |
|---|---|---|
| コピー | Command+C | Ctrl+C |
| 貼り付け | Command+V | Ctrl+V |
| アプリ切替 | Command+Tab | Alt+Tab |
| スクリーンショット | Command+Shift+3/4 | Win+Shift+S |
| 検索起動 | Command+Space | Winキー単押し |
PowerToys
Microsoft公式の無料ツール。「Keyboard Manager」でショートカットの再割り当てが可能。
日本語入力のオン/オフ切替に慣れている場合、AutoHotKeyで似た挙動
(Ctrl空打ちでIME切替など)を再現するスクリプトもある。
3. データ・設定ファイルの移行
-
dotfiles・SSHキー:
.ssh、.gitconfigなどはgitやクラウドストレージ経由で移す -
ユーザー辞書・環境変数: Windows側はエクスポート/インポートやregファイルでの
環境変数バックアップが可能 - .env等gitに含めていないファイル: 事前にリストアップしておく
4. 特に気をつけたい技術的な差異
改行コード(CRLF/LF)
GitやDjangoのファイルでCRLFが混入すると、Linuxサーバーとの差分が出やすい。
.gitattributes で以下を設定し、VS Codeの改行設定もLFに統一しておく。
* text=auto
ファイル名の大文字小文字
macOSはデフォルトで大文字小文字を区別しないことが多いが、WSL上のLinuxファイル
システムは区別する。インポート時のファイル名衝突・参照ミスに注意。
パス長・パーミッション
Windowsネイティブ側はパス長制限やUnixパーミッション(chmod)の概念が薄い。
DockerボリュームやスクリプトをWSL側で動かすかネイティブ側で動かすか、
最初に方針を決めておくと混乱が減る。
セキュリティソフトの除外設定
Windows Defenderのリアルタイム保護が node_modules や仮想環境フォルダの
スキャンでビルドを遅くすることがある。開発用フォルダを除外設定に入れると
高速化できる。案件PCの場合は会社のセキュリティポリシーを先に確認すること。
5. PowerShellとの付き合い方
PowerShellは「Windows自体の管理・軽い作業」用と割り切り、実際の開発作業は
WSL2に寄せるのがおすすめ。
| 用途 | 推奨シェル |
|---|---|
| Python/Django開発、Docker、Git操作 | WSL2内のbash/zsh |
| Windowsの設定変更、サービス管理 | PowerShell |
| 通常のファイル操作 | どちらでもOK |
スクリプト(.ps1)を実行する場合、初期状態では実行ポリシーでブロックされている
ため、管理者権限で以下を一度実行しておく。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
6. Vimのセットアップ
MacではHomebrewで一発だったVimも、WSL2上ならほぼ同じ感覚で導入できる。
インストール
sudo apt update
sudo apt install vim
より高機能な後継としてNeovimを使いたい場合は以下。
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update
sudo apt install neovim
クリップボード連携で詰まりやすいポイント
WSL2は素の状態だとVimのヤンク(コピー)内容がWindows側のクリップボードと
共有されない。以下のいずれかで解決できる。
-
win32yank を使う(手軽な方法):
win32yank.exeをダウンロードし、
Neovimのinit.vimやVimの.vimrcでクリップボードプロバイダとして設定する -
クリップボードオプション付きでVim自体をビルドし直す(本格的な方法):
VcXsrvなどのX Serverと組み合わせて+clipboardを有効にする
日常的な開発用途であれば、win32yankを使う方法で十分。
curl -fLO https://github.com/equalsraf/win32yank/releases/download/v0.0.4/win32yank-x64.zip
unzip win32yank-x64.zip -d win32yank
chmod u+x win32yank/win32yank.exe
sudo mv win32yank/win32yank.exe /usr/local/bin/win32yank
VS Code + Vimキーバインド
エディタ自体はVS Codeを使いつつ、Vimの操作感を活かしたい場合は
vscode-neovim拡張を使うと、実際のNeovimエンジンで動作するため
プラグインや.vimrcの設定もほぼそのまま活かせる。
7. さらに踏み込む場合: OSごと入れ替える選択肢
Windowsを完全に消してUbuntu等に入れ替える、あるいはデュアルブートにするという
選択肢もある。
| 方法 | 内容 | 向いているケース |
|---|---|---|
| Windowsを完全に消してUbuntu等に入れ替え | USBブートメディアからクリーンインストール | 私物PCで今後Windowsを使わない |
| デュアルブート | WindowsとLinuxを両方残し起動時に選択 | どちらも使う可能性がある |
| WSL2でLinuxを共存 | Windowsを消さずLinuxカーネルを仮想的に動かす | Windows前提の業務ツールも使う必要がある |
注意: 案件先から支給・レンタルされたPCの場合、OSをまるごと入れ替えるのは
契約違反やセキュリティポリシー違反になり得るため、必ず事前に確認すること。
私物PCでない限りは、WSL2での運用にとどめるのが無難。
8. 手順まとめ
作業の流れを時系列でチェックリスト化した。上から順に進めればつまずきにくい。
| # | フェーズ | やること | 目安タイミング |
|---|---|---|---|
| 1 | 事前確認 | 私物PCか案件先支給PCかを確認し、OS変更やセキュリティポリシーの制約を把握する | 着任前 |
| 2 | バックアップ | dotfiles・SSHキー・.env・ユーザー辞書・ブックマークなどをクラウド/外部ストレージへ退避 | 着任前 |
| 3 | 基盤導入 |
wsl --install でWSL2導入、Ubuntuをセットアップ |
初日 |
| 4 | ターミナル整備 | Windows Terminalを導入し、PowerShell・WSL・SSHをタブで使えるようにする | 初日 |
| 5 | エディタ移行 | VS CodeをインストールしSettings Syncを有効化、WSL Remote拡張を追加 | 初日〜2日目 |
| 6 | 開発環境構築 | WSL内でgit・pyenv・poetry(pipenv)・Dockerを再構築し git config を設定 |
2日目 |
| 7 | Docker設定 | Docker DesktopをインストールしWSL2バックエンドを選択 | 2日目 |
| 8 | Vim導入 |
apt install vim(またはneovim)、win32yankでクリップボード連携を設定 |
2〜3日目 |
| 9 | ショートカット調整 | PowerToys(Keyboard Manager)導入、Mac→Windowsのキー対応を設定 | 2〜3日目 |
| 10 | IME調整 | 必要ならAutoHotKeyで日本語入力切替の挙動を再現 | 2〜3日目 |
| 11 | Git設定の安全策 |
.gitattributes に改行コード設定を追加、VS Codeの改行設定をLFに統一 |
3日目 |
| 12 | セキュリティ調整 | Windows Defenderの除外設定に開発用フォルダを追加(案件PCなら要許可確認) | 3日目 |
| 13 | PowerShell初期設定 | 必要に応じて Set-ExecutionPolicy RemoteSigned -Scope CurrentUser を実行 |
必要になった時点 |
| 14 | 動作確認 | 既存プロジェクトをcloneしてビルド・テストが通ることを確認 | 1週目終わりまで |
| 15 | (任意)OS再検討 | 私物PCで今後もLinux中心にしたい場合、デュアルブートや完全移行を検討 | 運用が安定してから |
まとめ
- 開発作業はWSL2に寄せる、PowerShellはWindows管理用
- Vimはaptで即導入、クリップボードだけwin32yankでひと工夫
- PowerToysでショートカットを慣らす
- 改行コード・大文字小文字・パーミッションの違いに気をつける
- 案件PCなら勝手にOSを吹き飛ばさない
以上、同じ境遇のMacユーザーの参考になれば幸いです。