Sansan Builders Blog

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

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

f:id:s_yuka:20200424095303j:plain

こんにちは。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 を動かします。

f:id:kanjirz50:20200703175906p:plain
nbody

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

久々の Windows は面白い

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

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

宣伝

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

sansan.connpass.com

執筆者プロフィール

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

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

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

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

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

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

© Sansan, Inc.