76
46

More than 1 year has passed since last update.

約10年ぶりにWindowsで仕事する環境を整えてみた

Last updated at Posted at 2022-12-11

はじめに

ここ10年ほど仕事でもプライベートでもMacしか使っていなかったのですが、WSLが出てからずっとWindowsでもいけるんじゃないかと気になってました。
WSLも2になりいろいろ枯れてきてそうだったので、Windows機を用意してもらい乗り換え検証をしています。

試行錯誤しながらやっていたので履歴やメモなど残っていないものもあり、WSLも最新にできていないので、まだ道半ばですが、ここまでのまとめを備忘録として残します。

簡単なまとめ

  • まずは winget を入れてから色々入れる
  • WindowsとWSLはかなりシームレスに連携できる
    • bashと打つとカレントディレクトリそのままでLinuxに入れてちょっと便利
    • Linux側でWindowsの実行ファイルを起動しても普通に動く
  • Windows Hello 顔認証最高

目次

  1. まずやったこと
  2. WSLに関連する対応
  3. 端末へのログイン方法

まずやったこと

Slackで「Windowsでやるべき初期設定」を聞いたら、winget, Windows Terminal, Power Toysのインストールと教えてもらったのでインストール

winget

Microsoft Storeからインストール
詳細はwinget ツールを使用したアプリケーションのインストールと管理を参照

Windows Terminal

wingetをインストールしたら、コマンドプロンプトを開いて以下を実行

C:\Users\isono>winget install "9N0DX20HK701"

ちなみにWindows Terminalと指定してもインストールできない

C:\Users\isono>winget install "Windows Terminal"
複数のパッケージが入力条件に一致しました。入力内容を修正してください。
名前             ID                        ソース
--------------------------------------------------
Windows Terminal 9N0DX20HK701              msstore
Windows Terminal Microsoft.WindowsTerminal winget

インストール後起動して、設定からデフォルトのターミナルアプリケーションをWindows Terminalに変更した

Power Toys

こちらは名前でインストール可能

C:\Users\isono>winget install "Power Toys"

今のところ、Keyboard Managerを利用して、Caps LockCtrl (Left)に変換するためだけに利用している。
便利な使い方あったらコメントで教えてください。

最低限ほしいと思いwinget経由でインストールしたもの

多くはLinux側にもインストールするがWindows側にあるとその場で使えて楽なのでインストールしている

  • Git for Windows winget install Git.Git
  • GitHub CLI winget install GitHub.cli
  • Docker Desktop winget install Docker.DockerDesktop
  • JetBrains Toolbox winget install JetBrains.Toolbox
  • AWSCLI winget install -e --id Amazon.AWSCLI
  • GoLang winget install -e --id GoLang.Go.1.19

gitに関するtips

EDITOR

gitをインストールすると内部用にvimがインストールされるらしい。
git commit した時に何もしなくても慣れ親しんだエディタで表示されてとても助かった。

改行コード

一部のスクリプトがLinux側で動かないためいろいろ悩んだ結果改行コードの問題だとわかった
事前に以下を設定しておくことを推奨

git config --global core.autocrlf input

winget経由でインストールできなかったもの

  • ghq

仕方ないので scoopもインストールして、scoop経由で入れた。
wingetをやめてこちらに統一すべきなのか補助的に使っていいのか悩み中。

PS C:\Users\isono> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
PS C:\Users\isono> iwr -useb get.scoop.sh | iex
PS C:\Users\isono> scoop install ghq

MacとWindowsで日本語入力モードに入るキーを統一

US配列を利用しているが、Macでは ⌘+Space Windows では Alt + ` と違う操作で入力モードを切り替えることになる
プライベートの端末はMacなこともあり2つの端末を行ったり来たりした際に入力モード切替でもたつくのでキーバインドを変更した

軽く調べた感じ、Windows側での入力モード切替をMac側に寄せる方法を見つけることができなかったため、
とりあえず、Mac側の設定を Option(Alt) + ` に変更して試している

WSL関連の設定

WSLのインストール

後述のWSLのバージョンが古い問題があり以前のバージョンの WSL の手動インストール手順の手順で対応した。

ただし、ほとんどの方はWSL を使用して Windows に Linux をインストールするを参照して簡単に対応できると思われる。

また、これ以降Windows Terminal内で bash と打つとLinux側に入れるようになる。最初何事が起きたのかわからなくてびっくりした。(環境変数などwslコマンドで起動したときと違う気がするので不安であまり活用はできていない)

homebrewのインストール

基本的にアプリケーションはaptを利用してインストールするが、Macを使っていたこともあり足りないものはhomebrewで入れたいと思いインストール
WSLは基本的にrootで起動してしまうため、まずはユーザーを作りsudoできるようにしたうえで、公式サイトにあるコマンドを利用してインストールした

なお、WSL側のデフォルトユーザーの変更は以下のコマンドで可能

PS C:\Users\isono> ubuntu config --default-user xxxx

また、sudoできなくなるなど、何らかの理由でwsl側のrootで入らないといけない場合には以下のようにすれば入れる

PS C:\Users\isono> wsl -u root

WSL側からIntelliJを起動する

基本的にはLinux側を使いたいがまだLinux版のIntelliJを使えるようにできていないため、以下のように強引にWindows側のバイナリを呼び出して起動している。
ソースコードは /mnt/c/ のほうにあるためかシームレスにIDEが起動される。

強引すぎる感はあるので、WSLgが使えるようになったらLinux版を利用することを検討中。

設定内容抜粋

cat ~/.zshrc
function idea() {
  EXE=$(find /mnt/c/Users/isono/AppData/Local/JetBrains/Toolbox/apps/IDEA-U/ch-0/ -name "idea*exe" | sort -r | head -1)
  eval "$EXE . &" >/dev/null 2>&1
}

起動方法

cd /mnt/c/path/to/project
idea

WSL2での課題

WSL上でドメイン名が解決できない

まだよくわかっていないが、WSL側から名前解決ができなくて困ったため、以下のような設定をすることで回避中。
(この設定では社内ネットワークとの接続では問題がでるのでまだ調整中)

一部抜粋

% cat /etc/wsl.conf
[network]
generateResolvConf = false

一部抜粋

% cat /etc/resolv.conf
nameserver 1.1.1.1

WSL2でsystemdが利用できない

systemd利用の詳細はSystemd support is now available in WSL!を参照

systemdを利用したい要件があるが、業務用端末なのでもちろんWSUS配下にて管理されていて、ポリシー上アップデート出来なくて現在管理部門に確認中
特定のパッチが当たったWindows10もしくはWindows11にてWSLをMicrosft Storeから最新版をインストールすれば使えるはずだが、アップデートできていない

以下のような状況

PS C:\Users\isono> wsl --update
更新をチェック中...
エラー: 0x8024500c

PS C:\Users\isono> winget install "Windows Subsystem for Linux"
見つかりました Windows Subsystem for Linux [9P9TQF7MRM4R] バージョン Unknown
このパッケージは Microsoft Store から提供されています。winget は、現在のユーザーに代わって Microsoft Store からパッケージを取得す
る必要がある場合があります。

...中略...

パッケージ取得の確認/要求...
パッケージ取得の成功の確認/要求
パッケージのインストールを開始しています...
Microsoft Store パッケージのインストールまたは更新に失敗しました。エラー コード: 0x8024500c

WSLgも利用できない

今でもX serverを入れればできるが、公式にWLS側のGUIアプリをWindows側で操作できるようになる(はず)

上の件と同様、アップデートが必要なのでアップデート出来たら検証する予定
WSLg

端末へのログイン方法

Windows Hello 顔認証が便利すぎる

最近のスマートフォンでは当たり前になっている顔認証がWindowsでもできるようになっている
(もちろんハードウェアの対応とポリシーの許可が必要)

画面を開いた直後に自動的に識別してログインまでしてくれるため、ほぼシームレスに作業に入ることができるのは体験としては控えめに言って最高。

自宅ではクラムシェルモードで使っていたため恩恵を得られていなかったが、先日ELECOMのUCAM-CF20FBBKを購入したことにより、クラムシェルでも顔認証が使えるようになり正直なところMacのログインが最近めんどくさい。

Macもそのうち対応する気もするが、外付けのデバイスは出ないと気がするので、こういった拡張性に関してはWindowsでないとできない部分だなと感じた。

Windows Hello 指紋認証

Macにもあるので特に差はない
設定はしているが顔認証使ってるので出番なし

PINコードでの認証

2022/12/12 17:30追記
コメントにてMicrosoftの見解を教えていただきました。
ポリシー依存な部分もありそうですが、ローカルでの管理を含めパスワードよりも安全なようで安心しました。

セキュリティ上どうなんだろう?
最低限だと4桁数値でいけるので、楽な反面怖い感じを受けている

この件について詳しい方いたらぜひコメントで教えてください。


最後に

というわけで、MacユーザーがWindowsに乗り換えるための第一歩としてやったことをまとめてみました。
自分がWindowsを受け取った直後は何をしたらいいのかわからない状況だったので、一例として切り替える方の参考になれば幸いです。

また、WSLのアップデートができるようになったら最新のWSLでいろいろ試して共有したいと考えています。

76
46
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
46