二宮、MacBookProやめるってよ

〜今さら戻れと言われてももう遅い!SaaS企業のSREがWindows+WSL2環境に転生して無双している件〜

はじめに

 MNTSQでSREとして活動している二宮です。入社エントリー以来の投稿となりますが、今回の投稿は入社時に支給されたMacBookProからWindows11(ThinkPad X1 Carbon Gen 9)へ作業環境を完全移行した経緯と現在の作業環境についてです。

 このエントリでは、MacからWindowsに移行したこと体験を書いていますがMacは使いにくい!Windowsの方が優れている!などという愚かなことを伝えたい意図では有りません。実際に入社してからmacOSを毎日使って仕事をしましたがWindowsにはない良さがあり本気で使い込む機会に巡りあえてよかったと思っています。

 さて、入社エントリーにも記載しましたがMNTSQでは入社時に希望すれば、 Macに限らずにLinuxやWindowsといったOS、ハードウェアを指定可能です。

MNTSQの選べる作業環境

 採用スライドでは、MacBookProが全面に押し出されていますがMacBookPro以外にも選択可能です。エンジニアチームには、ThinkPadにUbuntuを入れて開発しているエンジニアも在籍しており、macOSに限定せず自分の慣れ親しんだ作業環境を選択することが可能です。

なぜWindowsなのか?

 それは簡単です。私が単にWindowsに慣れていたからです。MNTSQに入社する前は、10年以上Windows系の開発環境が中心だったので、「こうやりたい」「こんなツールを使いたい」が完全にWindowsベースでの作業が染み付いており、これを完全にMac環境に移行することが困難でした。

 あと、作業用の自作ツールなどもあり、.NET Coreで書き直してMacでも使えるようにするのはさすがに断念していました。

では、なぜ入社時にMacを選択したのか?

 それも簡単です。第一に使ってみたかったから。パソコンに初めて触れてMNTSQに入社するまでWindows環境しか使ってこなかったので、macOSというものに触れる機会がなかったです。

 ただし、MNTSQ入社のタイミングでWindowsを選択することもできましたが、「おそらくmacOSが前提のいろいろな仕組みとか手順になっているだろう」と思いトラブル回避の意味でWindowsではなくmacOSを選択しました。
あと某コーヒー屋さんに入店するには必須のオシャレアイテム(棒)

  • macOSをきちんと使ってみたかった

  • 自分以外のエンジニアがMacを使っているなら合わせた方が都合がよさそう

  • Macはオシャレアイテム(棒)

結果としてこの選択は正しく、入社時にWindowsを選択していたら間違いなく完全に詰んでいましたね。

MacでやっていたことがWindowsでできるのか?

 今であればできます。2016年以前であれば、不可能とまでは言わずとも困難、非常に手間がかかるため現実的ではなかったと思います。
 ここ数年で、Windowsを取り巻く開発環境は大きく変わりました。その変化の中心にあるのが、2016年にMicrosoftのイベント「Build 2016カンファレンス」で突如として発表された「Windows Subsystem for Linux(以下、WSL)」でしょう。

 従来、Windows環境ではBashシェル(以下、シェル)が必要であれば仮想マシンにLinuxをインストールして、SSHが必要であればTera Term を使ってと、お世辞にも使いやすい環境ではなかったですが、WSLが登場したことで状況は一転してシェル環境、SSHが非常に身近なものになりました。
 現在では、当初リリースされたWSLを改良したWSL2が主流となっており当エントリでは、WSL2を前提として記載しています。

 その結果、Windowsを使いながら必要に応じて、WSL2上のUbuntuで作業するといったことが可能となり、WindowsとLinuxのいいとこ取りをした作業環境を構築しています。

 WSL2については、Microsoftの公式サイト、その他多くの記事で紹介されているためここでは割愛します。

MNTSQのSREとしてWindowsをどう使っているか?

 前述のWSL2は、必須アイテムとして普段使っているツールを一部紹介します。
 私の場合には、顧客から受領したOfficeファイルを扱うことが多いためWindows版のOfficeが使えるようになったのは非常にありがたいです。

Windows側(Windows11)
Officeソフト、GoogleChrome、Slack、EmEditor、Visual Studio Code、etc.

Linux側(Ubuntu 20.04.3 LTS)
Terraform、aws-vault、Git、AWS CLI、SSH、etc.

 見ていただいてお分かりの通り、Windows側では非エンジニアツール、Linuxではエンジニアツールで使い分けています。Gitのレポジトリは全てLinux側にクローンしているため、Terraformなどの編集作業はVisual Studio Codeを通して全てLinux側で行っています。もちろんWindows側でも作業可能ですが、標準の文字コード、改行コードが異なるためLinux側で全部やってしまったほうが安心です。

 仮にWindows側で文字コードなどに気をつけて作業したとしてもシェルスクリプトが実行できないなどで作業全体をWindowsで完結させることはできません。
 今のところは、WSL2 GUIを利用するシーンに遭遇していないので、使い込んでいませんがGUIアプリケーションがどこまで快適に使えるのかは探っていきたいです。

では、Windowsに移行してまったく困ったことはないか?

 これは明確にNOです。シェル環境が必要な場合には、Linux側で作業していますがここでのシェルは、Ubuntuの「Linuxのシェル」と他のエンジニアが使っている「macOSのシェル」で若干、コマンドが違っているところを合わせて行くことが必要です。これは、個人の努力というよりもチーム内での理解が必要な部分です。

 MNTSQのSREチームでは、Windows環境を使うことに理解を示しており一部のシェルではどちらでも動くように記載されています。

##e.g. sed/gsed

ARC=$(uname)

if [ "$ARC" = "Linux" ];then
  SED="sed"
elif [ "$ARC" = "Darwin" ];then
  SED="gsed"
else
  exit
fi

$SED -r "s/hoge/fuga/g" nyan.txt

また、Windows+WSL2を組み合わせて使っているので、問題が起きた場合に原因の切り分けのための確認ポイントが増えているので、WSL2慣れをしていないと解決に時間を要します。

  • Windows側でVPNを接続した場合にインターネットに出れない

  • systemdのPIDが1になっておらず使えない

 この2点が、WSL2を使う上で間違いなく出てくる障壁で、WSL2が登場してから5年が経ち解決策が多く共有されていますが、こういったWSL2特有の問題が付きまとうので誰にでも手放しでWindows+WSL2の環境を勧めるのは躊躇する部分があります。

Windows環境への移行はどうだったか?

 結果として、Windows環境へ移行したのは正解だったと思っています。前述の私がWindows環境に慣れていることでの作業効率向上は言うまでも有りませんが下記の点で、利便性を感じています

複数のディストリビューションが使える
Microsoft Storeには、Ubuntuの他にDebian、SUSE Linux Enterprise Server、 Oracle Linuxなどが公開されており利用可能です。
 Ubuntuを利用する機会が圧倒的に多い状況ですが、RHELベースのLinuxが利用できるのは嬉しいです。

バックアップとリストア
 WSL2で稼働するLinuxは、エクスポート、インポートがサポートされています。作業環境を構築したLinuxイメージをエクスポートして、いつでもその時点に復元することも可能ですし、別名でインポートして複製することも可能になります。
 そのため、TerraformやRubyなどの破壊的なバージョンアップも躊躇なく行えるようになりました。

 従来の仮想マシンを使ったLinux環境でも仮想マシンごとバックアップを取得することは可能でしたが、バックアップイメージサイズが大きいなど運用的に手軽ではなかった点が改善されたことも嬉しいです。

さいごに

 従来であれば、開発にmacOS一択だった状況から、Linuxを使うエンジニアが現れ、二宮がWindowsに移行し、macOS、Linux、Windowsの三つ巴の状況となりました。
 OSは、何がいいのか討論には、対応しているツールの多さ、シェル環境など様々な要素が混じり合っていますが、一番はどれくらい使い慣れているかも重要な検討要素になりうると思っているのでWindows環境も一つの選択肢になってきたこの状況を嬉しく思っています。

 今後、Windows+WSL2の環境で、GUIアプリケーションが使えるようになるなどの進化が楽しみです。

MNTSQではエンジニアを募集しています

 周りがオシャレなMacBookを使っている中で、一人Windowsを使って仕事をしている気持ちをシェアしたいので、一度カジュアル面談などいかがでしょうか? 
 今回はWindows環境にスポットを当ててお話しましたが、MNTSQでは、引き続き多様な作業環境が利用可能です。macOSに限定せずLinuxやWindowsでもやってみたいと考えるエンジニアは大歓迎です。

 このエントリを読んでいただいてMNTSQに興味を持っていただけたのであれば是非、エントリーフォームからご応募いただければと思います。

この記事が気に入ったらサポートをしてみませんか?