Sansan Tech Blog

Sansanのものづくりを支えるメンバーの技術やデザイン、プロダクトマネジメントの情報を発信

【Techの道も一歩から】第30回「久々の Windows」

こんにちは。DSOC 研究開発部の 高橋寛治です。

今回は業務に利用している手元の環境を 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.jsondefaultProfile を次のように書き換えます。

"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 を動かします。

nbody

GPU 使用率が上がっていたので、うまく利用できているようです。

久々の Windows は面白い

Mac から Windows の移行ですが、キーボード以外は特別支障なかったです。 GPU付きの 6コア12スレッドは快適です。画面共有しながらのコーディングやブラウジングが軽快に動作します。

今度は WSL2 で CUDA が利用できるアップデートが導入できたら、試してみたいと思います。

宣伝

最後に宣伝ですが、2020/07/26 にオンライン開催される Sansan Career Event for Engineer で R&D の開発体制や面白さについて、お話させていただく予定です。ぜひ、ご覧ください。

https://sansan.connpass.com/event/180704/sansan.connpass.com

執筆者プロフィール

高橋寛治 Sansan株式会社 DSOC (Data Strategy & Operation Center) 研究開発部 研究員

阿南工業高等専門学校卒業後に、長岡技術科学大学に編入学。同大学大学院電気電子情報工学専攻修了。在学中は、自然言語処理の研究に取り組み、解析ツールの開発や機械翻訳に関連する研究を行う。大学院を卒業後、2017年にSansan株式会社に入社。キーワード抽出など自然言語処理を生かした研究開発に取り組む。

*1:USBファンで冷やしていたが、風きり音が入りそう。

*2:ちょこっと確認したいときに手元にあると楽です。

*3:wsl-ssh-agent のほうが、新しくて良いようです。

*4:以前はレジストリの変更でできていました。

© Sansan, Inc.