この記事は コネヒト Advent Calendar 2020 の20日目の記事です。
僕はプライベートで過去6年位、また業務利用でも直近3年半くらいずーっとArchLinuxで過ごしてきていて、過去にこんな記事も書いています。
続・ラフなラボ – ArchLinux なラップトップで仕事しはじめて大体1年経った
ただ、今月コネヒトに入社するにあたって業務利用するPCを Windows 10 Professional マシンにすることを選択したので、実際に過ごしてみてどうなのかを書いてみようと思います。
自分の仕事について
Web系のインフラエンジニアとして働いています。今のところは AWS の ECS や EventBridge 周りを触っていることが多く、Python で業務に必要なスクリプトを書いたり、PHP,Go のコードを触る機会もあります。他には Terraform のコードも触ったりしています。
SSH でリモートのサーバにログインする機会はほぼありません。 Docker はバリバリ使います。
なんで Windows にしたの?
もともと入社時にLinuxで仕事できないか?とは交渉はしていました。ただコネヒトはCASB/IT資産管理のためのサービスが導入されている状態で、Linuxにおけるその領域のいい解決策が見つからなかったのが大きいです。1 また Windows の開発環境についても WSL2 をはじめここ数年でかなり良くなっている話も見かけるので心機一転、Windows でやってみるかという気持ちになりました。
mac も選択肢にはあったのですが、3年半前に業務PCをLinuxに移したあたりで気持ち的に完全に mac から離れていることに加え、Intel アーキテクチャでなくなっていく mac が今後どうなっていくのかまだ見えていない状況での選択は微妙だなと思えたのもあります。PCの選定をした時期が M1 mac が発表される前というのもありますが。
実際に業務で使っている PC の環境をもろもろ紹介
本当は Ryzen 7 PRO / メモリ64G 搭載のモリモリの Thinkpad L14 を使う予定なのですが、パーツの調達の関係でまだ納品されておらず、私物の Thinkpad X270 を特例で業務で使わせてもらっています。そのため今は若干チートリアル感もあったりします。PCの納品日が楽しみです。
ターミナル環境
基本的に以下の記事を参照するのが間違いないです。本当に最近の Windows における開発環境の知見がまとまっていてこの記事がなければここまで「Windowsいいじゃん!」という感覚にならなかったかもしれません。
ターミナルエミュレータそのものは、今のところは PowerShell Core 利用時は Windows Terminal(Preview版)、WSL2 環境を使うときは mintty の WSL対応版である wsltty で落ち着いています。
ターミナルエミュレータも探してみると Windows 対応のものもかなりの種類があり驚きました。色々試してみた感じだと他にも ConEmu は歴史があるだけあって日本語周りもしっかり対応されており、パフォーマンス的にもよかったのですが若干 Window サイズを変更時の描画が崩れがありました。Alacritty は基本的には Windows 対応もしっかりされておりパフォーマンス面が間違いないなとは思っていたのですが、日本語入力周りにまだ難がありちょっと常用するのは厳しいという結論になりました。このあたりは先月に Twitter でもごちゃごちゃつぶやいています。
Windows のターミナル、どれも一長一短という感じだなー。 Windows Terminal もややもっさり感があったり日本語関連ちょいちょい怪しい。Alacritty はパフォーマンスは申し分ないけど日本語変換の表示位置がずれて気になってしまう...
— Kei IWASAKI (@laugh_k) November 18, 2020
パッケージマネージャ scoop
https://scoop.sh/
今回 Windows に戻ってきて感動しているのが scoop の存在です。mac でいうところの homebrew 的なもので、コマンドライン経由で様々なアプリケーションの導入ができます。特に以下の点が気に入っています。
- 管理者権限が不要
- update が簡単
- versions バケットが素晴らしい
- terraform などの複数バージョン持っておきたいものきちんと棲み分けできる
scoop reset terraform@x.xx.xx
とするだけでバージョン切り替えが可能
- zip を展開してそのまま PATH を通すようなインストーラーのないアプリケーションも多く、管理がしやすい
- 開発者、エンジニアが必要としそうなツールが大体そろっている
git
はもちろん、sudo
やtar
など Unix系OS ではおなじみのコマンドがあっさり導入できてしまうfzf
,ghq
,ripgrep
,vim
,neovim
なんかもコマンド一発で入る
昔 Windows を利用していた際はこのあたりの管理がとても面倒だった記憶があるのですが、scoop のおかげでものすごく楽になるだけでなく、Unix系のコマンドについては「これWindows対応してたのか!」というものも簡単に発見できるのでとてもよいです。
PowerToys (Keyboard Manager, PowerToys Run, ColorPicker など)
うまく説明できないのですが、MS製のWindows便利キットセットという感じのものでしょうか。launcher や Image Resizer などの便利アプリがセットになっている感じのものです。
僕がメインで使っているのは Keyboard Manager で、具体的に言えばキーバインド変更です。そこまでゴリゴリにキーバインド変更しているわけではないですが、以下の変更は個人的に必須なので GUI でさくっと設定できるのはありがたいです。
Alt(Right)
→VK243
(右Altを全角半角キー)VK 22
→VK 243
(qmk_firmware の LANG1 を全角半角キーへ) 2Capslock
→Ctrl
他の機能はそこまで頻繁に使わないものの、Image Resizer や Color Picker なんかは不定期に使う機会がありそうです。こういった細かい調整みたいなことは昔は一つ一つ野良のフリーツールを入るなりレジストリを直接いじったり...という感じでやらなければいけなかったのですが、MS製ツールでこのあたりができるのようになったのが個人的にとてもうれしいです。
Docker
Docker Desktop for Windows - Docker Hub
Docker については Docker for Windows があるのでそれを使っています。ここについては情報がすでに溢れてそうなので深くは触れませんが、Hyper-V ではなく WSL2 を利用しています。PowerShell からも Unix系と特に変わりなく docker が利用できていますし、Linux で使っていた時は GUI 部分がなかったので GUI アプリで docker の状態を見れるのは便利かもなーと感じています。
パフォーマンス面は、今のところは極端に重く感じることもなく概ね快適です。
WSL2 (ArchWSL)
今まで ArchLinux 環境どっぷりできたので WSL2 で利用するディストリビューションも ArchLinux を使いたいと思って色々探したところ、作って公開されているされているものを見つけたのでありがたく使わせて頂いてます。
導入も scoop で簡単にいけました。本当に scoop 便利です。
導入後のセットアップもドキュメントがまとまっているのでそちらに従います
yay をは入れておきたいので導入します。ちょっとハマりどころがあったので軽くメモしておくと以下のような感じ
## base-devel を入れなおしておく
## fakeroot に関して聞かれるがいじってほしくないので n で
$ sudo pacman -S base-devel
$ mkdir Downloads
$ cd Downloads
## URL は Jguer/yay のその時の最新 release のもので
$ curl -LO https://github.com/Jguer/yay/releases/download/v10.1.0/yay_10.1.0_x86_64.tar.gz
$ tar xf yay_10.1.0_x86_64.tar.gz
$ cd yay
$ ./yay -S yay-bin
また Docker については ArchWSL で pacman/yay で入れるのではなく、Docker for Windows 側の integration を有効にすることで使えます。Windows 側と共通で使えるので pull した image などが双方で使い回せて便利です。
これで大体普通の Linux 環境として使える感じなりました。
エディタ、コーディング
今のところは書くものとしては、Terraform コード、YAML、Python スクリプト、たまに PowerShell スクリプトなどです。読むのであれば、PHP や Go もあります。あとはよく Markdown も書きます
メインで使うことが多いのが neovim(neovim-qt) です。ちょっとしたことであればターミナル内で利用することもありますが、PowerShell + Windows Terminal だと日本語の表示が安定しないので neovim-qt を多く使うようになりました。サブで VS Code も使えるようにしていますが、今の所あまり出番が無いです。
必要になれば JetBrains の IDE も導入するかもしれませんが、今は必要なさそうということと、マルチプラットフォーム対応なのでいざというときも安心して使えそうな感じがあります。
ちなみに Windows 側で大体間に合っている感じがあり、メモを書くために ArchWSL のターミナルを起動して neovim を開くということはほとんどしません。(パフォーマンス的にはかなり快適ですが)
Windows 標準でいい感じのもの
Windows 標準の機能でも以下はいい感じです。(macでもありそうですが)
ペイント、ペイント3D
雑にスクリーンショットを加工したりするのにちょうどいいです
スクリーンショット
昔ながらの Snipping Tool とかも使えますが、2020年12月時点では Winキー
+ Shift
+ s
でやるのがいい感じです。ボタンを押してから特定のWindowなのか、選択範囲なのか、画面全体なのかを指定してそのまま加工まで行けるのは個人的にはわかりやすくて良いなと感じています。
クリップボード管理
実は標準でついてる機能で便利に使っているもので、Winキー
+ v
で履歴がずらずら出てきてそこから選択する形で貼り付けができます。こういうことも何らかのツールを入れずにできるのがとても良いです。ちなみにデフォルトでは無効になっていますが、無効の状態でショートカットキーを押すと有効にする画面が出てくるので、このへんもわかりやすいなと思いました。
その他
やはり世の中一般でみるとメジャーなOSな Windows は色々と周辺サポートが充実しているなと言うのはものすごく感じます。業務で必要なアプリ(Slack, Zoom, ブラウザ各種)は当然使えますし、ハードウェアのドライバもサポート含め充実しているのはやはり安心感があります。(Linuxでも大分よくはなっているのですが)
たまに Paw のような mac のみに提供されているツールで多少困ることもありますが、だいたいの場合はクロスプラットフォームの別のツールで代替えが効くのでそこまで致命的ではないかなと思ってます。
まとめ的な所感
まだ戻ってきて1ヶ月くらいですが、どんな感じで Windows と過ごしているかを書いてみました。実際に戻ってくるまでは「きっとほとんどのことを WSL2 でやることになるんだろうなー」と思っていたのですが、いざ環境を整えてみると思いの外 Windows だけでも快適な環境が整い、アレルギーに感じていた PowerShell も「これは良いものだな」となったり、むしろUnix系ではない新たな技術との出会いみたいにも思えて「なんだか今の Windows 使ってみると楽しいな」と思えてきています。今 M1 mac もかなりアツくて楽しそうだなと思いつつも、Windows は Windows で進化していて開発環境としてもとても快適に使えるなと思う今日この頃です。