今回は業務に利用している手元の環境を Mac から Windows に変更したという軽い話です。 交換した理由や Mac から Windows に乗り換えた時にセットアップする点について記します。
交換した理由
マシンスペックに不足を感じたことと WSL の進化が理由となります。
SSH で基本的に作業するため、軽くて持ち運びしやすい SSH クライアントと思って Macbook を利用していました。 しかしながら、昨今のリモートワーク事情により増えたビデオ通話で限界を迎えました。 ビデオ通話は便利である一方 CPU リソースを消費します。 ファンレスマシンは熱によるクロック低下が起こり、円滑なコミュニケーションに支障を来していました*1。
高スペックな Macbook Pro でもいいのではないかと思いましたが、WSL が進化しており Linux が扱いやすくなっていることと、Sansan では Windows ノートパソコンは NVIDIA 製 GPU を搭載したものを選べる*2ことから、Windows としました。
端末のスペック
ThinkPad X1 Extreme
- OS: Windows 10
- CPU: i7 8750H
- メモリ: 32GB
- ディスク: SSD 1TB
- 解像度: 4K(3840x2160)タッチパネル
- GPU: NVIDIA GeForce GTX 1050 Ti with Max-Q Design
- 重量: 約1.8kg
重量は Macbook の約2倍となりました。
移行にあたるセットアップ
WSL (Ubuntu 18.04) と Windows Terminal
重量級のマシンですが、研究開発活動は基本的には SSH を利用して作業を行います。 WSL と Windows Terminal を組み合わせて、WSL 上の Ubuntu の SSH を利用します。
管理者権限の Powershell で次のコマンドを実行し、 WSL を有効にします。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
次に、WSL 用 Linux ディストリビューションをダウンロードし、インストールします。 今回は Ubuntu 18.04 を利用します。
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile Ubuntu1804.appx -UseBasicParsing Add-AppxPackage Ubuntu1804.appx
Windows Terminal は Github レポジトリ の README に従って導入します。 私は Releases page からダウンロードしてインストールしました。
Windows Terminal 起動時に WSL の Ubuntu を利用したいため、settings.json
の defaultProfile
を次のように書き換えます。
"defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
ssh-agent をホストの Windows と共有するよう設定します。 これにより、keychain の共有が可能となります。 ssh-agent-wsl を利用しました*3。
これで、 Mac でターミナルを使っていた頃と同様となりました。少し手間のかかるところだと思います。
その他の開発用ツールなどのインストール
GUI の開発用ツールは、PyCharm や VSCode など Mac・Windows の両方で動くものを使っていたため特に問題ありませんでした。
また、チャットツール Slack やビデオ通話の Zoom も問題なく導入できました。
データベースクライアントや VNC クライアントは Mac でしか動かないものを使っていたため、代替ソフトウェアを利用しています。
やっかいなところ
ErgoDox EZ を外付け USB キーボードとして利用しています。 ノートパソコンは JIS 配列、ErgoDox EZ は US 配列として利用しています。
私はどちらでも入力できるので問題ないと思っていましたが、一つ問題が生じました。 いつからか外付け USB キーボードと内部キーボードでキー配列を別にできなくなったということです*4。 調べた限りできなさそうなので、言語設定から English (United States) を追加し、日本語入力時と アルファベット入力時で言語切り替えを行うようにしました。 Windows キー + スペースキーで切り替え可能ですが、ややこしいです。
もう一つは、全角半角キー相当のキーについて、Windows だとキーを認識しないため、ツールの導入が必要です。 AutoHotKey というツールで、KC_LANG1 を変換に、KC_LANG2 を無変換に割り当てることで解消されます。 以下は設定ファイルの例です。
sc071 Up::Send,{vk1Dsc07B} sc072 Up::Send,{vk1Csc079}
キーバインドは少し困った
小指が痛くなっても Emacs キーバインドを使っているのですが、カーソルキーやバックスペースを久々に利用しています。 IDE やエディタ、ターミナルでは Emacs キーバインドが利用可能ですが、例えばブラウザ上で動くドキュメンテーションツールではカーソルキーが必須です。
間違えて検索や全選択を行ってしまいがちです。 一文字消そうと Ctrl + D を押して、ブックマークに追加してしまいます。 慣れるまで少し時間を要します。
GPU を試してみる
NVIDIA GeForce GTX 1050 Ti with Max-Q Design を搭載しているため、GPU を試します。 CUDA ライブラリを導入し、サンプルの nbody を動かします。
GPU 使用率が上がっていたので、うまく利用できているようです。
久々の Windows は面白い
Mac から Windows の移行ですが、キーボード以外は特別支障なかったです。 GPU付きの 6コア12スレッドは快適です。画面共有しながらのコーディングやブラウジングが軽快に動作します。
今度は WSL2 で CUDA が利用できるアップデートが導入できたら、試してみたいと思います。
宣伝
最後に宣伝ですが、2020/07/26 にオンライン開催される Sansan Career Event for Engineer で R&D の開発体制や面白さについて、お話させていただく予定です。ぜひ、ご覧ください。
執筆者プロフィール
高橋寛治 Sansan株式会社 DSOC (Data Strategy & Operation Center) 研究開発部 研究員
阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。同大学大学院電気電子情報工学専攻修了。在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。大学院を卒業後、2017年にSansan株式会社に入社。キーワード抽出など自然言語処理を生かした研究開発に取り組む。
*1:USBファンで冷やしていたが、風きり音が入りそう。
*2:ちょこっと確認したいときに手元にあると楽です。
*3:wsl-ssh-agent のほうが、新しくて良いようです。
*4:以前はレジストリの変更でできていました。