WindowsPC開発用の初期設定~AWS CLIインストールまで~

Windows10でWindows Terminalを設定し、AWS CLIv2をインストールするまでの手順を公開します。
2021.10.07

DA事業本部コンサルティングチームのnkhrです。入社して新しいPCの設定を行ったので、手順を公開します。

Windowsでの開発環境設定は、Microsoft公式ドキュメントに役割ごとの開発環境マニュアルがあるので参考になると思います。

このブログでは以下の設定を記載しています。

  • Windows Terminal設定
  • PowerShell7のインストール
  • TerminalでのPowerShellの外観カスタマイズ (PowerLineの設定)
  • WSL (Ubuntu)のインストール
  • Pipenvの設定 (Pythonのパッケージ管理・仮想環境管理ライブラリ)
  • vim for windowsのインストール
  • AWS CLIのインストールと設定

Windows Terminalの設定

バージョン: 1.10.2383.0 (※バージョンが異なる場合、GUI設定画面で操作できる内容に違いがある)

Microsoft Storeからインストールする。デフォルトでは、cmdプロンプト、PowerShell、Azure Cloud Shellが利用できる。

外観(フォントや文字の大きさ)、起動パラメータなどの基本的な設定はGUIインタフェースが提供される。詳細を設定する場合は「settings.json」を修正する。

settings.jsonの起動方法

PowerShellのバージョンアップ

Windows10のデフォルトPowerShellは、Version5である。最新のViersion7をインストールしようと思います。

PowerShellのバージョン確認コマンド

❯ $PSVersionTable.PSVersion 
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 1237

最新バージョンをインストール

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
  • iex Invoke-Expressionのエリアス。ローカルコンピュータ上で文字列を実行
  • & CALL演算子として利用される場合は、後に続く文字列または、スクリプトブロックを実行
  • irm Invoke-RestMethodのエリアス。HTTP/HTTPSリクエストを送り、結果取得
  • -UseMSI PSファイルのコマンド引数。MSIパッケージによるインストールを指定。指定なしの場合はZipパッケージを利用。

コマンド実行後に、インストーラが自動で立ち上がる。インストール後にWindows Terminalを再起動するとPowerShell7の設定が追加されている。

Windows Terminalの基本設定

  • Windows Terminalの「全般」から、「名前」を「PowerShell7」に変更
  • 左のツールバーの一番上の「スタートアップ」設定で「既存のプロファイル」を「PowerShell7」に変更

> $PSVersionTable.PSVersion

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      1      4

PowerShellのTerminal外観カスタマイズ

公式サイトの「チュートリアル: Windows ターミナルで Powerline をセットアップする」を参考に、PowerShellのTerminalにPowerlineを追加する。

PowerShell(version5)でスクリプト実行の許可

PowerShell(version5)の初期設定では、スクリプト(PSファイル)実行が制限されている。

※PowerShell(version7)の場合は、ローカルコンピュータのスクリプトは実行可能(実行ポリシー:RemoteSigned)なため、この手順は実施不要。

下記のコマンドで「Restricted」と表示される場合は、PSファイルの実行がすべて制限されている。実行ポリシーに「RemoteSigned」を選択することで、ローカルコンピュータで作成したPSファイルおよび、他のユーザが作成した署名付きPSファイルが実行可能となる。

Get-ExecutionPolicyコマンドはリンク先参照。

> Get-ExecutionPolicy 
Restricted

> Get-ExecutionPolicy -List   
# 実行ポリシーは以下のScopeで設定可能。
# 全部Undefinedの場合はWindows ClientではRestricted, Windows ServerではRemoteSignedになる
Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined    # 現在のPowerShellセッションのみ有効
  CurrentUser       Undefined    # Policyを設定したユーザのみ有効
 LocalMachine       Undefined    # ローカルマシンの全ユーザに有効
  • 一時的に許可する場合のコマンド
> Set-ExecutionPolicy RemoteSigned -Scope Process
  • Terminal起動時に実行ポリシーを許可するためのWindows Terminal設定

PowerLineのインストール

※Powershell7の場合は、この手順から実行

> Install-Module posh-git -Scope CurrentUser
> Install-Module oh-my-posh -Scope CurrentUser

# Windows7はPowerShell Coreを使用しているため下記のコマンドも実行(Powershell5では不要)
# 2021/10時点では-AllowPrereleaseを指定したbata版でない場合はSystemのPSReadLineのバージョンと
# 競合してインストールできないため、正式リリースまでスキップしてもよいかもしれない。
> Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease

> notepad $PROFILE
下記の3行を末尾に追加
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme Paradox
  • NuGetをインストールしていない場合は、Install-Moduleの実行時にインストールが必要。
  • PowerShellでは、デフォルトではPSGalleryを信頼できるリポジトリに含めていないため、信頼確認が発生。PS Galleryについては、リンク先を参照

Cascadia Fontsの設定

このフォント設定を設定することにより、PowerLineの文字化けが解消する。

  • GitHubのcascadia-codeのサイトからZipファイルをダウンロード。解凍後にtffファイルを右クリックしインストール。
  • 設定画面の「外観>フォントフェイス」に「Cascadia Code PL」が追加されているので、選択。

見た目はこんな感じ↓

WSL (Ubuntu)の設定

WindowsにUbuntuをインストールする。PowerShellで実行したコマンドを共有する。

詳細は、公式インストール手順および、公式ユーザ設定手順を参照。

# Microsoft Storeからダウンロード可能なディストリビューション一覧を表示
> wsl --list --online

# ディストリビューションを指定してインストール。「-d <Name>」で指定
> wsl --install -d Ubuntu

# パスワードを忘れた場合はPowerShellから以下のコマンドでrootユーザでログインし変更を行う
> wsl -d <distribution-name> -u root

Ubuntuの設定

# 更新
$ sudo apt update && sudo apt upgrade

# GoとPowerline-Goを設定
$ sudo apt install golang-go
$ go get -u github.com/justjanne/powerline-go

# .bashrcに設定を追加
vim ~/.bashrc
----
GOPATH=$HOME/go
function _update_ps1() {
    PS1="$($GOPATH/bin/powerline-go -error $?)"
}
if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
----

Pipenvの設定

pipenvは、python仮想実行環境の構築・管理 (Python3では標準のvenvコマンドで代替可能)とパッケージ管理 (pip)の機能が合わさったツールである。

Python本体は、Microsoft Storeからインストールして、環境変数に追加するPYTHON_HOMEでシステムバージョンを切り替える設定とする。

pipenvのインストールと設定

仮想環境と仮想環境にインストールするパッケージは、pipenvを使って管理する。

# インストール
> pip install pipenv

# 仮想環境の起動コマンド一覧
> pipenv install         # PipfileやPipfile.Lockが存在する場合に、ファイルを元に仮想環境を起動
$ pipenv run python      # 仮想環境を利用してpythonインタプリタを起動する
$ pipenv runn sample.py  # 指定したpythonファイルを実行する
$ pipenv shell           # 仮想環境を利用したシェルを起動する

環境変数の設定

  • PIPENV_HOME
    • C:\Users\[username]\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_[unique_id]\LocalCache\local-packages\Python39\Scripts
    • 作成した環境変数をPATHに追加する
  • PIPENV_VENV_IN_PROJECT=true
    • 仮想環境のフォルダを実行プロジェクト配下に作成する設定((デフォルトは~/.venv配下に作成される)

Vimのインストール

公式サイトからインストーラを取得し、vim.exeがあるフォルダを環境変数Pathに追加することで、Windows TerminalのPowerShellやCmdプロンプトからvimコマンドが実行できる。

削除と移動のキー操作程度を覚えておくだけで、Terminal上でのちょっとした修正が早くなると思う。Windowsでの開発はVS Codeが便利。AWSインフラコードの開発やAPIの開発はVS Codeを使うのがよいと思う。

vim設定(buckup/undoファイルの作成を無効化)

set nobackup   "backupファイル無効化
set noundofile  "undoファイル無効化
set number      "行番号を表示

vimrcファイル内のコメントは先頭に「"」をつける。

backupファイル(チルダ~がついたファイル)と、UNDOファイル(~unがついたファイル)は無効化するが、swapファイルは編集後に自動で削除されるので、無効にしない。

AWS CLI設定

AWS CLIのインストール

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html

設定ファイルの作成

AWS CLIでは以下の2つのファイルを設定する。

  • .aws/credentials : 認証情報を記載
  • .aws/config : CLIの設定情報を記載

実行コマンドは以下の通り。 - PowerShell実行コマンド

cd env:USERPROFILE
mkdir .aws
vim .aws/credentials
  --> credentialsファイルの作成(内容は後述)
vim .aws/config
  --> configファイルの作成
  • .aws/credentialsファイル内容
    [name1]
    aws_access_key_id = YOUR_ACCESS_KEY
    aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

  • .aws/configファイル内容

    [profile name1]
    output = yaml
    region = ap-northeast-1
    
    [profile name2]
    output = json
    region = ap-northeast-1
    role_arn = arn:aws:iam::<AWS-ACCOUNT-ID>:role/<role-name>
    mfa_serial = <name1のMFA設定がある場合にスイッチロール先の設定に必要>
    source_profile = name1

スイッチロール前提のプロファイル設定です。profile name1がスイッチロール元、profile name2がスイッチロール先のアカウントです。

mfa_serialの設定については以下のブロクに詳しく記載されています。

まとめ

今回は入社後の開発環境設定について書きました。