Archive

VAIO SX14, Windows11 環境構築 2023.12

この記事は コネヒト Advent Calendar 2023 - Adventar 6日目の記事です。

先日業務PCが Thinkpad L14 から VAIO SX14 と新しくなり、 もろもろの業務環境のセットアップを久しぶりにしたのでその内容をまとめます。

PC情報: VAIO SX14

きっかけは以前まで利用していた Thinkpad L14 の調子がだいぶ悪いケースが増えてきたことが大きいです。 どの機種にするかは基本的に自由にリクエストできることから今回は Thinkpad シリーズではなく VAIO を選択しました。

納品されたVAIO SX14ブラックエディション

今回選定した大まかなスペックをこれまで使っていた Thinkpad 14L と比較すると次の通りです。

Thinkpad L14 VAIO SX 14
CPU Ryzen 7 PRO 4750U Intel Core i7-1370
メモリ 64G 32GB
ストレージ 1TB SSD 1TB SSD
ディスプレイ Full HD (1920x1024) 4K (3840x2160)
キーボード配列 英字配列 英字配列
重さ 約 1.61kg 約 999g

所感など

  • メモリはこれまでの半分の32GBとなりましたが、ここ数年業務で利用している感じ64GBをフルで使うようなケースもほぼ無かったこともあり、今のところ全く困っていません
  • CPUの世代は新しいものとなり、Intel CPUですがとても快適になりました。 1
  • VAIO も機種によっては英字配列キーボードを選べるのがうれしいですね
  • 重さは正直まったく考慮していなかったのですが、実際にVAIO SX14を持ってみると薄さも相まって持ちやすさが段違いによく、それにも関わらずPC全体はとても頑丈で扱いやすく一瞬で「VAIO最高じゃん!」という気持ちになりました
  • 4Kディスプレイも相まって、どこでも作業効率を落とすことなく作業できそうで色々な可能性を感じます
  • 情シスにお願いしたタイミングがちょうどブラックフライデーと重なり、ブラックエディションだったのにも関わらず30万円ほどで購入できたのはラッキーでした。 気に入って私物にも同じものを購入しようとしましたが、その時には既にブラックフライデーは終わっていました...
  • ALL BLACK EDITION で隠し刻印のキーボードがカッコいい

納品されたVAIO SX14ブラックエディション2

Windows11 のセットアップ

基本的には以前書いた次の記事で紹介しているものがベースとなってはいますが、2023年12月版ということで改めてまとめます

また、すべてを網羅的にまとめるととんでもない長さになりそうなので、大まかものとなっている点はご了承ください。


大まかに最初やったことの流れ

  1. Win + v でクリップボード履歴の有効化
  2. Edge の最低限の設定
    • Edge デフォルトの週刊誌みたいなトップの無効化
    • Edge で会社のGoogle Workdspaceへのログイン
  3. スナップの余計な機能を無効化
  4. パスワードマネージャ
    • Enpass (主に会社用の情報を扱っている。あくまで個人利用だが Vault は会社のGoogle Driveを使っている)
    • 1passowrd (主に個人用途。GitHub や X、Discord などの認証情報はこっちなので)
  5. Slack のインストールとセットアップ
  6. Firefox のインストールセットアップ(業務と切り離した用途でWebブラウジングするときに使う。デフォルトにはしない)
  7. PowerToys のインストールとPowerToys Keyboard Manager でキーバインド変更
  8. シンボリックリンク有効化
  9. IMEの設定
  10. scoop のインストール、CLI環境整備
  11. WSLの引っ越し
  12. 業務で使うツール類のインストール
  13. コンテナ環境(今回は Docker Desktop ではなく podman をしばらく使ってみることにした)
  14. フォントの追加(UDEV Gothic, BIZTER など)
  15. SSH越しに旧PCから細かいファイルの転送

いくつかはもう少し詳しくピックアップします

Edge の最低限の設定

最近は Edge の挙動がほとんど Chrome と一緒なので業務で使うメインブラウザは Edge にしています。 ただ、久しぶりにまっさらな状態で起動してみたところ週刊誌のような記事が大量に目に入ってきて「うわ...」となってしまいました。

デフォルトの最初に開かれるタブの右上の歯車アイコンを選択し、画面表示内容から設定可能で、「ニュースを非表示」にしました。

  • 「ニュースを非表示」の場所 Edgeの画面からニュースを非表示にするメニューの場所
  • 実際に非表示にした様子 Edgeでニュースを非表示にした様子

スナップの余計な機能を無効化

Windowsを利用する際はWinキーと方向キーの組み合わせでウィンドウをスナップ(寄せる)させる動作はよく利用するのですが、 Windows11 標準では次のように、都度残りのスペースに何かを配置するように促されるのがうっとうしいです。

Firefoxを右に寄せたものの、左側に何かを配置するように促されている様子

この動作は止めることができて、設定の「システム」 > 「マルチタスク」 の中にある「ウィンドウのスナップ」の中にチェックボックスが多数あります。 その中の「ウィンドウをスナップしたときに、その次にスナップする対象を提案する」のチェックを外せばよいです。

スナップ時の余計な提案を無効化する設定

PowerToys のインストールとPowerToys Keyboard Manager でキーバインド変更

Windows の便利なユーティリティである PowerToys を導入します。詳細は次のページにあるので割愛します。

PowerToys は多くの機能がありますが、私の主な導入のモチベーションは Keyboard Manager によるキーバインド変更です。 あまりヘビーにキーバインドを作りこんでいるわけではありませんが、個人的に以下の置き換えは必須です。

  • Alt(Right)VK243 (右Altを全角半角キー)
  • CapslockCtrl

シンボリックリンクの有効化

Windows はデフォルトの状態ではシンボリックリンクが利用できないのですが、それでは git リポジトリのクローン時に問題が発生することはもちろん、 細かい環境構築時にもいろいろと不便なことが多いので利用できるようにします。

やり方は Windows の「開発者モード」を有効化するか、ローカルグループポリシーエディターからシンボリックリンク作成の権限を自分が利用するユーザーに付与する方法があります。私は「開発者モード」にすることによって何が起こるかあまり把握していないので、後者の方法でやりたいことに対する権限を最低限つけるようにしています。

ローカルグループポリシーエディタでシンボリックリンクの作成ポリシーを選択している様子

ポリシー「シンボリックリンクの作成」に自分のユーザーを追加する際は、PCのホスト名\PCのログインユーザー名 で追加すればよいです。

IMEの設定

地味な奴ですが、私は常に半角スペースを使いたい人間なのでやっておきます。 Windows キーを押して、「IME」と入力すれば「日本語 IME 設定」という項目が一番上に表示されます。

Windowsキーを押してから「IME」と入力している様子

ここから「全般」をクリックして、「スペース」の内容を「常に半角」にすればOKです

scoop のインストール、CLI環境整備

業務中のほとんどを基本的にはCLI環境で過ごすので環境を整備します。 個人的に Windows の場合は Weztermnushell の環境を整えたいのでそこを目指します。

Weztermでnushellを起動した様子

大まかな流れとしては次の通り

  1. パッケージマネージャ scoop のインストールとセットアップ
  2. nushell, wezterm を含むツールをインストール
  3. dotfiles を git clone し、必要に応じてシンボリックリンクを張る
  4. neovim のセットアップ
  5. よく使う言語ランタイム(go, python, node)をインストール

1. パッケージマネージャ scoop のインストールとセットアップ

Windows のパッケージマネージャは他にも chocolaty もありますが、個人的に scoop のほうが好みなのでそちらを導入します。2 nushell 環境が整うまでは powershell で環境整備します。

まずは公式サイトにある手順で導入

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

これで scoop コマンドはインストールされますが、初回に git をインストールしないと基本的な機能が扱えないので入れます

scoop install git

git のインストールが終わると scoop が完全に使えるようになるので追加しておくと便利な extrasversions バケットの追加と必要なツールをインストールします。

scoop bucket add extras
scoop bucket add versions

2. nushell, wezterm を含むツールをインストール

ここまでくれば scoop の準備は大体できたので、必要なツールのインストールをします

scoop install `
    vim `                # テキストエディタ、システムの設定とかをいじるときに使う
    neovim `             # メインで使うテキストエディタ
    nu `                 # メインで使う CLI シェル
    starship `           # CLIシェルのプロンプトをいい感じにするやつ。最近重いのでやめようかなとも思ってるけどいったん追加
    wezterm `            # メインで使うターミナルエミュレータ
    fzf `                # CLIの fizzy finder
    aws `                # aws cli 、これがないと仕事にならない
    terraform-switcher ` # 複数バージョンの terraform の切り替えができるツール
    make `               # GNU make、もはやタスクランナー
    bat `                # リッチな cat コマンド、Windows でも問題なく動くので重宝する
    dog `                # CLIのDNSクライアント
    ripgrep `            # 高速 grep
    sd `                 # sed コマンドの rust 実装版
    difftastic `         # CLI diff ツール、Windows でも問題なく動く diff コマンドとして重宝する
    sudo `               # 管理者権限であれこれやりたいときに便利
    gh `                 # GitHub CLI
    ghq `                # git repository をいい感じに clone してくれる君
    jq `                 # json パーサー
    jasper `             # GitHub Issue クライアント、GUI
    ScreenToGif `        # GifCapture ツール。あるとドキュメント作るときに結構便利
    sass `               # marp のテーマをいじるときに地味に使う
    keypirinha `         # Windows のランチャーツール、正直 PowerToys Run とどっちをメインにするかちょっと悩んでる
    heidisql `           # 軽量な MySQL クライアント、Cleartext Plugin にも対応(GUI)
    obsidian             # ローカルで使う用の強力なメモツール (GUI)

3. dotfiles を git clone し、必要に応じてシンボリックリンクを張る

私は自分の dotfiles は GitHub で公開しているので clone してきます。(なので、ここは完全に私個人用のメモです)

ghq get laughk/dotfiles

clone できたら最低限必要なシンボリックリンクを張ります

cd ~/AppData/Roaming
New-Item -type Symlink -Target ..\..\ghq\github.com\laughk\dotfiles\nushell nushell

cd ~/AppData/Local
New-Item -type Symlink -Target ..\..\ghq\github.com\laughk\dotfiles\nvim nvim

cd ~
New-Item -type Symlink -Target ghg\github.com\laughk\dotfiles\wezterm\wezterm.windows.lua .wezterm.lua

4. Neovim のセットアップ

実は scoop で neovim を install しただけではエラーが出て起動しません。 3
キャプチャ等を取り損ねてしまったのですが、公式のWikiにも記載があり、Visual Studio 2015 C++ redistributable が必要です。

これは Wiki に従い次のページから最新のインストーラーをダウンロードしてインストールすればOKです。 今回の VAIO SX14 では x64 で問題なく使えました。

vcruntimeインストーラーの配布場所

Visual Studio 2015 C++ redistributable がインストール出来たら neovim が使えます。 私はプラグインを多数利用しているので、インストールをしておきます( lazy.nvim, nvim-treesitter を使っている前提)

:Lazy install

また、nushell のスクリプトや設定編集を支援するツール( LhKipp/nvim-nu )も nvim-treesitter 経由でインストールしておきます

:TSInstall nu

これで neovim のセットアップは完了です

5. よく使う言語ランタイム(go, python, node)をインストール

個人的に go や python でコードを書く機会は多く、node製のツールのお世話になることが多いので入れておきます。 nodeに関してはツールの利用が主な目的なので lts を入れます。また、Python は個人的に得意なことに加え、社内に多く存在する AWS lambda の function のほとんどが Python であることから複数バージョン入れておきます。

scoop install `
    go `
    python python311 python310 python39 `
    nodejs-lts

Python は Windows の場合、 py コマンドというインストールされている Python のランタイムバージョンを指定して利用できる便利なコマンドがありますが、 scoop 経由でPythonを複数バージョン入れる場合はインストール時に表示されるメッセージに従い、次の reg ファイルを使ったレジストリ変更が必要です。忘れずにやります。

powershell -C 'C:\Users\laughk\scoop\apps\python39\current\install-pep-514.reg'
powershell -C 'C:\Users\laughk\scoop\apps\python310\current\install-pep-514.reg'
powershell -C 'C:\Users\laughk\scoop\apps\python311\current\install-pep-514.reg'
powershell -C 'C:\Users\laughk\scoop\apps\python\current\install-pep-514.reg'

これで py コマンドからそれぞれのバージョンを扱えるようになります

❯ py --list
 -V:3.12 *        Python 3.12 (64-bit)
 -V:3.11          Python 3.11 (64-bit)
 -V:3.10          Python 3.10 (64Label)
 -V:3.9           Python 3.9 (64Label)

ここまでで最低限の CLI 環境が整いました

WSLの引っ越し

WSLはイメージの export/import ができます。基本的には次の記事を参考に次の流れで旧PCの環境をそのまま引っ越しできました。 4

export -> 外付けHDDへ移動  外付けHDDから新PCへコピー  import  

移行元

wsl --export Arch2 .\wsl_archlinux_image.tar

移行先

mkdir ~\wsl\data ~\wsl\images
mv wsl_archlinux_image.tar ~\wsl\data\

cd wsl
wsl --import ArchLinux images\archlinux .\data\wsl_archlinux_image.tar --version 2
rm data\wsl_archlinux_image.tar

コンテナ環境: Podman

podmanのページ

業務ではECSを中心にコンテナはバリバリ使うので環境構築は必須です。 コネヒトは2023年12時点の組織状況では Docker Desktop を利用する際に特にライセンス料などは発生しませんが、Docker 以外のコンテナランタイムも興味があるので 今回は podman で環境を整えてみました。

インストール

Windows でも導入は簡単で、次のリリースページから Windows 向けのインストーラーをダウンロードしてインストールすればOKです

Podman の GitHub リポジトリには Windows 向けのドキュメントもあり、基本的な使い方はここを見れば大体わかります

また、Windows 環境で podman のインストールをすると自動的に WSL の Linux 環境の PATH にも podman コマンドが追加されて利用もできそうなことが確認できました。 おそらく Docker Desktop の WSL Intergration を有効にした状態と一緒なんだろうと理解しています。

ちなみに、podman desktop というアプリケーションもありますが、これだけを入れても podman は使えないです。 Docker Desktop と違い、純粋に podman(およびその他コンテナランタイム)の GUI 画面のみを提供しているものと見たほうがよさそうです。

イメージを pull する際の挙動を docker にそろえる

業務で扱う環境は基本的に Docker の利用が前提となっているので、イメージの検索対象となるレジストリに docker.io を追加します。 ~\.config\contaners\registories.conf ( Windows でも ~/.config 配下であっています) に次の内容を追記すればよいです。

unqualified-search-registries = ["docker.io"]

もっとも、短縮名を使うことにはリスクもあるという情報もあるので、状況をみつつこの辺の設定は見直していけたらと感じています。

参考:

podman-compose のインストール

docker compose を使う機会もあるので同等のコマンドを使えるようにします。 幸い、 containers/podman-compose というツールがあったのでありがたく導入します。

Python 製で pip 経由のインストールが必要なので、 pipx を使って導入します。 pipx は Python 製のツールを純粋に使うためだけの目的に導入する際に便利なもので、ツールごとに隔離した環境を作ってインストールを行い、PATH はシンボリックリンクなどでいい感じに整えてくれるものです。

インストールしていなかったので pipx の導入から始めます。 私は「純粋にCLIのツールとして使うだけなのであればpipxはシステムワイドに入れてしまっても構わない」と考えているので専用の venv などは用意せずそのまま入れます。 5

py -3.12 -m pip install pipx
py -3.12 -m pipx ensurepath

pipx が導入できたら pipx 経由で podman-compose を導入します。

pipx install podman-compose

これで podman-compose podman compose コマンドが利用できるようになり、 docker-compose.yml なども活用できるようになりました。

フォントまわり

UDEV Gothicがインストールされている様子

PCで文字の読み書きが長くなるならフォントは見やすいものを選びたいと個人的に思っています。 私は最近は以下のフォントが気に入っているので今回インストールをしています

SSH越しに旧PCから細かいファイルの転送

旧PC環境には多くのファイルがあり、必ずしもすべてを移行する必要はないのですが それでもどうしても移行が必要なこまごまとしたファイルはそれなりにあります。

それらの移行には会社の Google Drive を経由するのが正攻法ですが、物によっては Google Drive へのアップロードからのダウンロードが億劫な場合もあります。 そこで一部のファイルに関しては片方のPCで OpenSSH サーバを立てて scp で移行をしました。

OpenSSH は今は Windows でも標準で入っているので、やり方さえ分かっていれば案外簡単に使えます。

サーバにする方

有効になっているか確認します。次のコマンドを実行します(以下、要PowerShell)

sudo powershell -C "Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'"

すると以下のような結果になります

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

OpenSSH.Server の State が NotPresent の場合は有効化されていないので、次のコマンドで有効化します

sudo Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

有効化されていることが確認できたら次のコマンドでSSHサーバを起動します

sudo Start-Service sshd

ファイルの転送が終わったらサービスを止めておくのが安全です

sudo Stop-Service sshd

クライアント側

クライアント側ではターミナルで ssh, scp コマンドが利用できます。 最初に ssh コマンドでお試しでログインしてみるとよいです。サーバ側のログイン情報でログイン可能です。

ssh 192.0.2.100 # IPアドレスは事前にサーバー側のものを確認しておく

ログインができることを確認したら、必要なファイルを scp で持ってこれます。この時、リモートのPATHの指定でホームディレクトリを表す ~ が使えない点に注意してください。

scp 192.0.2.100:C:/Users/laughk/path/to/file .

さいごに

ここまでで直近でやった Windows 環境の0からの構築内容を簡単にまとめました。

やっぱり新しい PC は触っているとワクワクしますし、0から環境を見直す機会になりリフレッシュできる部分もあると個人的には思っていて結構好きです。


  1. 今回のPC購入まであまり最近のCPU事情を追っていなかったのですが、2023年12月時点では問答無用でRyzenがよいという状況ではなさそうな話を見かけたことも大きいです 

  2. winget は標準で利用は可能ですが、管理者権限が必要になったりCLIツールが scoop ほど充実していないのでCLIや開発系環境の整備では使いません。 

  3. https://github.com/neovim/neovim/wiki/Installing-Neovim#pre-built-archives 

  4. 外付けHDDは会社の情シスから貸してもらったもので、私物は当然使っておりません 

  5. システムワイドに導入するのは避けたい。という場合は --user オプションをつけて ~/.local or ~\AppData\Roaming 配下にインストールされるようにするのもアリです