Windows開発環境構築
Windows バージョン20H2 (OSビルド 19042.1348)
まずはWindows Updateを実施する。そして再起動。
- Microsoft ストアを開く
- 「アプリインストーラー」で検索
- インストールする
インストール後にwinget
を使えることを確認する。
PS C:\> winget install Microsoft.PowerToys
- 常に手前に表示: 有効
- Awake: 無効
- Color Picker: 無効
- FancyZones: 有効
- File Locksmith: 有効
- File Explorer add-ons: デフォルト
- ホストファイルエディター: 有効
- Image Resizer: 有効
- Keyboard Manager: 無効
- マウスユーティリティ: マウスをシェイクする
- マウス蛍光ペン: 無効
- PowerRename: 無効
- PowerToys Run: 無効
- Quick Accent: 無効
- スクリーンルーラー: 有効
- Shortcut Guide: 有効
- Text Extractor: 有効
Ctrl2Cap V2.0をインストール
PS C:\Users\USERNAME\Downloads\Ctrl2Cap> .\ctrl2cap.exe /install
PS C:\> winget install gerardog.gsudo
PS C:\> winget install Microsoft.WindowsTerminal
PS C:\> winget install Git.Git
PS C:\Users\USERNAME> cat .\.gitconfig
[user]
name = USERNAME
email = USERNAME@gmail.com
[core]
autocrlf = input
pager = less -S
editor = vim
sshCommand = C:/Windows/System32/OpenSSH/ssh.exe
[alias]
ls = ls-files
cat = cat-file
ci = commit -a
co = checkout
br = branch
st = status
lg = log --all --graph --branches --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
cdiff = diff --cached
[color]
ui = true
[diff]
tool = vimdiff
indentHeuristic = true
日本語IME設定>キーとタッチのカスタマイズ>各キーに好みの機能を有効にする>Ctrl+SpaceをIME-オン/オフにする
言語の設定を開いて「日本語」のオプションをクリックする。
ハードウェアキーボードレイアウトを英語キーボードに変更して再起動する。
PS C:\> sudo Add-WindowsCapability -Online -Name OpenSSH.Client
PS C:\> sudo Set-Service -Name ssh-agent -StartupType Automatic
PS C:\> Start-Service -Name ssh-agent
PS C:\> winget install PuTTY.PuTTY
自分が普段使っている秘密鍵が BEGIN OPENSSH PRIVATE KEY
で始まる形式だったので下記サイトの通りにPuTTYgenを使ってpem形式に変換する
- PuTTYgenの起動
- Loadで鍵を読み込む
- Conversions > Export OpenSSH key
PS C:\Users\USERNAME> ssh-add.exe .\.ssh\id_rsa
Enter passphrase for .\.ssh\id_rsa:
Identity added: .\.ssh\id_rsa (.\.ssh\id_rsa)
PS C:\Users\USERNAME> ssh-add.exe -l
4096 SHA256:tFmA8LCYq778GmoNmuZIdI4UI9fKZGTVq3ZoSORDLuc .\.ssh\id_rsa (RSA)
.ssh/config
を作成するのでvimを入れる。(notepad.exeで十分だがvim派なので入れる)
PS C:\> winget install vim.vim
PS C:\> sudo Set-ExecutionPolicy RemoteSigned
C:\Program Files\Vim\vim90
をシステム環境変数の Path
に追加する。
PS C:\Users\USERNAME> cat .\.vimrc
filetype off
" Encoding
set encoding=utf-8
scriptencoding utf-8
set fileencoding=utf-8 " 保存時の文字コード
set fileencodings=ucs-boms,utf-8,euc-jp,cp932 " 読み込み時の文字コード
set fileformats=unix,dos,mac " 改行コードの自動識別
set ambiwidth=double " ■や○文字が崩れるの防ぐ
" Tab/Indent
set expandtab " タブ入力を複数の空白入力に置き換える
set tabstop=4 " 画面上のタブ文字を占める幅
set softtabstop=4 " 連続した空白に対してタブキーやバックスペースでカーソルが動く幅
set autoindent " 改行時に前の行のインデントを継続する
set smartindent " 改行時に前の行の構文をチェックし次の行のインデントを増減する
set shiftwidth=4 " smartindentで増減する幅
" Search
set incsearch " インクリメンタルサーチ. 1文字入力毎に検索を行う
set ignorecase " 検索パターンに大文字小文字を区別しない
set smartcase " 検索パターンに大文字を含んでいたら大文字小文字を区別する
set hlsearch " 検索結果をハイライト
" Color
set hlsearch " ハイライト検索を有効にする
colorscheme delek " カラースキーマの設定
" ESCキー2度押しでハイライトの切り替え
nnoremap <silent><Esc><Esc> :<C-u>set nohlsearch!<CR>
" Cursor
set number
set cursorline
syntax on
syntax enable```
とりあえず今の環境で必要な設定のみ設定
User USERNAME
ForwardAgent yes
ServerAliveInterval 60
ServerAliveCountMax 5
StrictHostKeyChecking no
TCPKeepAlive yes
Visual Studio Codeをインストールする。
PS C:\> winget install Microsoft.VisualStudioCode
Go 1.20をインストールする。
PS C:\> winget install GoLang.Go.1.20
PS C:\> go version
go version go1.20 windows/amd64
NVM for Windowsをインストールする。業務で必要なv18.12.1をインストールする。
PS C:\> winget install CoreyButler.NVMforWindows
PS C:\> nvm install 18.12.1
PS C:\> nvm use 18.12.1
PS C:\> node -v
v18.12.1
Goの拡張機能を追加
Remote Developmentの拡張機能を追加
Makefile Toolsの拡張機能を追加
terminal.integrated.commandsToSkipShell
の設定を追加してターミナルのキーバインドを使えるようにする。
keybindings.json
[
{
"key": "ctrl+alt+j",
"command": "workbench.action.toggleMaximizedPanel"
},
{
"key": "ctrl+f",
"command": "cursorRight",
"when": "terminalFocus"
}
]
settings.json(ユーザ)
{
"workbench.colorTheme": "Default Dark+",
"window.zoomLevel": 1,
"redhat.telemetry.enabled": true,
"terminal.integrated.commandsToSkipShell": [
"-workbench.action.quickOpen"
],
"terminal.integrated.automationProfile.linux": {},
"terminal.integrated.tabs.enabled": false,
"files.eol": "\n",
"security.workspace.trust.untrustedFiles": "open",
"editor.fontFamily": "HackGen Console NFJ"
}
ターミナルでctrl+vを使えるようにする。
Visual Studio 2019のインストールをやる。
- ASP.NET と Web 開発
- Node.js 開発
- .NET デスクトップ開発
- C++ によるデスクトップ開発
- ユニバーサル Windows プラットフォーム開発
白源フォントをインストールする。
Windows Terminal
Visual Studio Code
Chef Workstationをダウンロード&インストールする
Chef Infra Extension for Visual Studio Codeもインストールする。
kubectlをインストールする。
PS C:\> winget install Kubernetes.kubectl
PS C:\> winget install GnuWin32.Make
C:\Program Files (x86)\GnuWin32\bin
をシステム環境変数に追加
PS C:\> sudo dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
PS C:\> sudo wsl.exe --install -d Ubuntu-20.04
PS C:\> Restart-Computer
諸事情でWSL1を使うので2から1にバージョンを落とす
PS C:\> wsl.exe --set-version Ubuntu-20.04 1
WSL側の作業
$ apt update
$ apt upgrade
$ apt autoremove
$ apt install rpm make net-tools docker.io jq
$ curl https://pyenv.run | bash
$ apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Starshipのインストール
PS> winget install Starship.Starship
PS> Invoke-Expression (&starship init powershell)
~
> starship preset nerd-font-symbols > ~/.config/starship.toml
3.12もあるが業務で使うのは3.9なのでこちらのコマンドでインストールする。
PS> winget install Python.Python.3.9
完全に趣味だがZigもインストールした。chocolately には対応しているが winget には対応していない模様。今回はインストーラーをダウンロードすることした。
$PATH
は C:\zig
にした。
[Environment]::SetEnvironmentVariable(
"Path",
[Environment]::GetEnvironmentVariable("Path", "Machine") + ";C:\zig",
"Machine"
)
PS> cat $PROFILE
Invoke-Expression (&starship init powershell)
Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function DeleteChar
Set-PSReadLineKeyHandler -Key "Ctrl+w" -Function BackwardKillWord
Set-PSReadLineKeyHandler -Key "Ctrl+u" -Function BackwardDeleteLine
Set-PSReadLineKeyHandler -Key "Ctrl+k" -Function ForwardDeleteLine
Set-PSReadLineKeyHandler -Key "Ctrl+a" -Function BeginningOfLine
Set-PSReadLineKeyHandler -Key "Ctrl+e" -Function EndOfLine
Set-PSReadLineKeyHandler -Key "Ctrl+f" -Function ForwardChar
Set-PSReadLineKeyHandler -Key "Ctrl+b" -Function BackwardChar
Set-PSReadLineKeyHandler -Key "Alt+f" -Function NextWord
Set-PSReadLineKeyHandler -Key "Alt+b" -Function BackwardWord
Set-PSReadLineKeyHandler -Key "Ctrl+p" -Function PreviousHistory
Set-PSReadLineKeyHandler -Key "Ctrl+n" -Function NextHistory
Set-Alias -Name vi -Value vim.exe
Set-Alias -Name jq -Value jq-win64.exe
Set-Alias -Name k -Value kubectl.exe
Set-Alias -Name mysql -Value 'C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe'
Set-Alias -Name less -Value 'C:\Program Files\Git\usr\bin\less.exe'
Set-Alias -Name openssl -Value 'C:\Program Files\Git\usr\bin\openssl.exe'
Set-Alias -Name du -Value 'C:\Program Files\Git\usr\bin\du.exe'
function ConvertTo-Base64 {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[string]$Text
)
process {
[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($Text))
}
}
function ConvertFrom-Base64 {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[string]$EncodedText
)
process {
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($EncodedText))
}
}
function g {
cd (Join-Path (ghq root) (ghq list | peco))
}
function Load-EnvFile {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]$Path
)
if(Test-Path $Path) {
try {
Get-Content .env |
ForEach-Object {
$Key, $Value = $_.split('=', 2)
[Environment]::SetEnvironmentVariable($Key, $Value.Trim("'").Trim('"'))
}
Write-Host "Loaded $Path"
}
catch {
Write-Error "Failed to load $Path\: $_"
}
}
else {
Write-Error "File not found: $Path"
}
}
jqコマンドをインストールする。
PS> winget install stedolan.jq
コマンド名が jq-win64.exe
なので jq
にエイリアスする。
Set-Alias -Name jq -Value jq-win64.exe
PS> go install github.com/x-motemen/ghq@latest
PS> go install github.com/peco/peco@latest
PS> winget install Oracle.MySQL
PS> winget install Github.cli
PS> gh auth login
PS> winget install UPX.UPX
PS> winget install Hashicorp.Terraform
$ wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
$ echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee
$ apt install cf-cli