Mac開発環境整備2022年10月
新しいMacのスペック
すでにM2のMacbookが発売済だが、現時点でスペックと値段のバランスが取れている、Macbook Pro 14インチ 2021を購入した。(公式の整備済製品なので安く買えたのも良かった)
Macbook Pro 14インチ 2021
CPU: M1 Max
メモリ: 64GB
基本設定
このあたりが参考になる。特に Mac を買ったら必ずやっておきたい初期設定 は記事のメンテナンスが継続的に行われいるようなので、とても参考になる。
自分的にはとりあえず最低限、以下の設定をやっておくのが良いと思う。
ユーザとグループ
- 右上のメニューにログインウィンドウを表示。
トラックパッド
- トラックパッドをタップしたらクリックする設定を有効化
- カーソルの最速化
キーボード
- キーのリピート・リピート入力認識までの時間を最速化
Dock
- Dockを見えないようにする
Finder
- 隠しディレクトリの表示
- 拡張子の表示
ユーザ辞書
- 英字入力中にスペルを自動変換のチェックを外す
- 文頭を自動的に大文字にするのチェックを外す
ファストユーザスイッチの設定はMacOS Ventura からはコントロールセンターに移動になったようだ。
Homebrew
https://brew.sh/index_ja に従いインストールを実施する。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
特に問題はないのだが今回何故か brew
コマンドのパスが通っていない状態になってしまった。
以下はその時に表示されたメッセージ。
==> Checking for `sudo` access (which may request your password)...
Password:
==> This script will install:
/opt/homebrew/bin/brew
/opt/homebrew/share/doc/homebrew
/opt/homebrew/share/man/man1/brew.1
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/etc/bash_completion.d/brew
/opt/homebrew
Press RETURN/ENTER to continue or any other key to abort:
==> /usr/bin/sudo /usr/sbin/chown -R kogakeita:admin /opt/homebrew
==> Downloading and installing Homebrew...
HEAD is now at faa995022 Merge pull request #14030 from Rylan12/checksum-json-api
Warning: /opt/homebrew/bin is not in your PATH.
Instructions on how to configure your shell for Homebrew
can be found in the 'Next steps' section below.
==> Installation successful!
==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Next steps:
- Run these three commands in your terminal to add Homebrew to your PATH:
echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users/kogakeita/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/kogakeita/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
https://docs.brew.sh
これはエラーメッセージに表示されている通り、以下のコマンドを実施してパスを通すことで解決した。
echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users/kogakeita/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/kogakeita/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Google Chrome(ブラウザ)
以下のコマンドを実行する。
brew install --cask google-chrome
特に変わった事はない。
Google日本語入力
以下のコマンドを実行した。
brew install --cask google-japanese-ime
すると下記のエラーが発生した。
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> Downloading https://dl.google.com/japanese-ime/latest/GoogleJapaneseInput.dmg
######################################################################## 100.0%
Warning: No checksum defined for cask 'google-japanese-ime', skipping verification.
==> Installing Cask google-japanese-ime
==> Running installer for google-japanese-ime; your password may be necessary.
Package installers may write to any location; options such as `--appdir` are ignored.
Password:
installer: This package requires Rosetta 2 to be installed.
Please install Rosetta 2 and then try again.
`sudo softwareupdate --install-rosetta`
installer: Error - GoogleJapaneseInputはこのコンピュータにインストールできません。
==> Purging files for version latest of Cask google-japanese-ime
Error: Failure while executing; `/usr/bin/sudo -E -- /usr/bin/env LOGNAME=kogakeita USER=kogakeita USERNAME=kogakeita /usr/sbin/installer -pkg /opt/homebrew/Caskroom/google-japanese-ime/latest/GoogleJapaneseInput.pkg -target /` exited with 1. Here's the output:
installer: This package requires Rosetta 2 to be installed.
Please install Rosetta 2 and then try again.
`sudo softwareupdate --install-rosetta`
installer: Error - GoogleJapaneseInputはこのコンピュータにインストールできません。
これはIntel用に作られたアプリケーションをインストール出来ない場合に起こるようだ。
インストーラーを利用してGoogle日本語入力を入力したところ、Rosettaのインストールを促されたので、今回はインストーラーを利用する事にした。
ターミナル
最近は Warp などの高速で動作する新しいターミナルも出ているが今回は安定している iTerm2 を利用する。
brew install --cask iterm2
設定(個人的には必須)
Preferences..
-> Profiles
-> General
を開く。
Working Directory
の項目で Reuse previous session's directory
を選択する。
これで command
+ T
で新しいセッションを開いた時に現在いるディレクトリから新しいセッションを始める事ができる。
その他設定
起動時のウインドウサイズ
好みで。自分は4Kモニターを利用しているので少し大きめに設定してます。
フォント
こちらも好みで。4Kモニターを利用しているので少し大きめに設定してます。
zshの設定
自分はGitHubに ~/.zshrc
をバックアップしているのでこれを移植した。
aws cliのコマンド補完を行うための aws_completer
のパスが /opt/homebrew/bin/aws_completer
になっていたのでこの部分は変更する必要があった。
$ which aws_completer
/opt/homebrew/bin/aws_completer
また zsh-completions
の設定も若干変わっていたので以下を参考に修正した。
Git
以下のファイルを移植する。(自分はGitHubで管理している)
.gitconfig
.gitignore_global
他にもhooksなどを利用している場合はそれも移植する。
自分は ~/git-hooks/
にいくつかスクリプトがあったのでそれを移植した。
GUI Git Client(Fork)
GUI用のGitクライアントとして Fork を使っている。
rebaseや部分的にステージングに登録したり等がGUIで出来るので、オススメです。
有料だが買い切りなのでそこまで経済的な負担がないのも良いですね。
以下を実行してインストールする。
brew install --cask fork
VSCode
自分はJetBrains製品に課金しているのでメインのエディタはVSCodeではないのだが、リモートでペアプロを行う時に利用する機会が多いので一応環境を整えておく。
以下でインストールを行う。
brew install --cask visual-studio-code
Homebrewで入れるとCILの code
コマンドも一緒にインストールしてくれるので、こっちのほうが良さそう。
% code --version
1.72.2
d045a5eda657f4d7b676dedbfa7aab8207f8a075
arm64
あとは拡張機能の一覧を code --list-extensions
で出力して、それをテキストなどに保存。
以下のようにコマンドで一括でインストールする。
cat "出力したファイル名" | xargs -n 1 code --install-extension
あとは settings.json
をコピーして終了。
先程も書いたが自分はJetBrainsユーザーなのでそこまで凝った設定はVSCodeのほうでは行っていない。
asdf
メインで利用している言語はTypeScript, Go, Terraform(HCL)なのだが以前まではanyenvを使っていた。
しかし最近開発が止まっているようなので asdf
に乗り換える事にした。
以下を参考にセットアップしてみる。
こちらもHomebrewで入れたほうが依存パッケージをインストールしてくれるので簡単。
brew install asdf
(参考)
Node.jsの追加
以下でプラグインを追加。
asdf plugin add nodejs
以下でインストール可能なバージョンを確認する。
asdf list all nodejs
16.18.0
, 18.11.0
をインストール。
asdf install nodejs 16.18.0
asdf install nodejs 18.11.0
とりあえず asdf global nodejs 18.11.0
でグローバルを 18.11.0
にしてみる。
以下が返ってきたので成功。
node -v
v18.11.0
以下でパスを調べてみたが /Users/ユーザー名/.asdf/shims/node
を指しているようだった。
which node
/Users/kogakeita/.asdf/shims/node
ローカルも効くか試してみる。
asdf local nodejs 16.18.0
問題なさそう。
node -v
v16.18.0
Goの追加
Goでは○○envが不要になった理由(バージョンアップを怠ると損する理由) にもあるようにGoは基本的に後方互換性が維持されているので、複数バージョンを管理する必要性が薄い。
そのため、公式の方法でインストールを行い、下記の記事で紹介されている「ほぼ何もしない」asdf向けGoプラグインを利用する事にした。
まずは以下でGoをインストールする。
brew install go
こちら を参考に asdf
のプラグイン go-sdk
をインストールする。
# プラグインの追加
asdf plugin add go-sdk
# インストール可能なバージョンリストの表示
asdf list-all go-sdk
# 指定したバージョンのインストール
asdf install go-sdk 1.17.13
# インストール済みリストの表示
asdf list go-sdk
# 利用するバージョンの設定
asdf local go-sdk 1.17.13
# デフォルトで利用するバージョンの設定
# [system]でシステムにインストールされた物を利用。おすすめ!
asdf global go-sdk system
ちゃんと機能している事を確認した。
go version
go version go1.17.13 darwin/arm64
Terraform
以下でプラグインを追加する。
asdf plugin add terraform
以下でインストール可能なバージョンを検索する。
asdf list all terraform
バージョンを指定してインストール。
asdf install terraform 1.3.3
バージョンを指定。
asdf global terraform 1.3.3
ちゃんとインストールされている事を確認出来る。
% terraform --version
Terraform v1.3.3
on darwin_arm64
WebStorm
以下でインストールを行う。
brew install --cask webstorm
以下は昔自分が書いたGoLandの設定の記事だが、ほぼ同じなので参考にする。
エディタ
- Remove trailing blank lines at the end of saved files - ON「行末の不要なスペースやタブを保存時に削除する」
- Ensure every saved file ends with a line break - ON「保存されたファイルの最後が改行で終わるようにする」
Preferences Editor → General → Appearance
- Show line number - ON「行番号の表示」
- Show method separators - ON「メソッドの区切り線」
- Show whitespaces - ON「空白の表示」
目に優しいTheme(Solarized Theme)をインストールする
Solarized Theme
をインストールします。
メモリ割当を増やす
せっかくメモリが64GBあるので16GBほどWebStormに当てると動作が高速になるので、そのように設定した。
docker
フロントエンドの開発環境はここまでで整ったがバックエンドがまだなのでこれから構築していく。
以下でDockerをインストールする。
brew install --cask docker
特に書く事はないが、せっかくの64GBなのでメモリ割り当てを増やしておいた。
GoLand
brew install --cask goland
以下は2020年から更新していない自分の記事だが今でも参考には出来る。
anyenv
を使うのをやめて、 asdf-go-sdk
を利用しているので、その設定だけが異なる。
GOROOTは /Users/ユーザー名/sdk/go1.17.13
, GOPATHは /Users/ユーザー名/go
となる。
go env GOROOT
/Users/ユーザー名/sdk/go1.17.13
go env GOPATH
/Users/ユーザー名/go
IntelliJ IDEA
最近はTerraform使う時くらいしか使っていないが一応。
brew install --cask intellij-idea
設定方法に関してはGoLandやWebStormとほぼ同じなので割愛。
とりあえず開発が出来る状態になったのでこの辺で終了。
10月23日の夜から開始して、25日の夜までかかった。(業務をしながらなのでこれだけやってた訳ではない)
Macの環境構築ゼロからは結構大変だが、各ツールの見直しをするいい機会なので、2年に一度くらいのペースではやりたいかなと思う。(このMacが高かったので、もう少し長く使いたい気持ちもあるが)
何かトラブルがあった場合はこのスクラップに追記するかも。
大変参考になります。ツールを見直す機会になるのと、最新のテクノロジの外観をハンズオンでさっと勉強できる機会にもなりますね。