M1チップが出始めた頃は、brewやDocker,,,色々と設定が大変だったようですが、2022年2月現在ですと開発環境の設定もだいぶ楽になったようです。(コントリビュータの皆様に感謝)
自分のメモ用に、Mac M1チップ初期設定を記録していきます。
OS: Monterey 12.2
チップ: Apple M1
メモリ: 16MB
Xcode インストール
何はともあれXcodeがなければ始まりません。
インストールは簡単、コマンド一つで問題なくインストールできました。
xcode-select --install
バージョン確認
xcode-select -v
# xcode-select version 2392.
Home-brew インストール
こちらも、M1チップ対応済みで簡単にインストールできました。
Home brew 公式サイト
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/dc/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"
$ echo $path
# /opt/homebrew/bin /opt/homebrew/sbin /usr/local/bin /usr/bin /bin /usr/sbin /sbin
$ brew -v
# Homebrew 3.4.2
PATHに[/opt/homebrew/bin /opt/homebrew/sbin]が通っていればOK。
git インストール
gitは最初っからインストールされていました。
バージョンを確認すると、(Apple Git-XXX)とあるのはMacにデフォルトで入っているもの。このままでも問題なく使えますが、今回はbrew経由でのgitをインストールします。
$ git --version
# git version 2.32.0 (Apple Git-132)
brew経由でgitをインストールする
brewでインストールします。
$ brew install git
#zsh completions and functions have been installed to:
# /opt/homebrew/share/zsh/site-functions
#
#Emacs Lisp files have been installed to:
# /opt/homebrew/share/emacs/site-lisp/git
#バージョン情報が確認できればOK
$ brew info git
#git: stable 2.35.1 (bottled), HEAD
# ...
brew経由のgitにパスを通す
現在は、Apple経由のgitにパスが遠ている状態です。
$ git --version
# git version 2.32.0 (Apple Git-132)
これを、brew経由でインストールしたgitに変更します。私はzshを使用しているので、~/.zshrcへPATHをエクスポートします。gitバージョンが先ほどインストールしたものになっていればOKです。
$ echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc
% git --version
# git version 2.35.1
zshを気持ちよく使うための設定
基本の設定
まずは基本の設定を~/.xshrcに書き込みます。
# ファイルやディレクトリの色指定
export LSCOLORS=cxfxcxdxbxegedabagacad
alias ll='ls -lGF'
alias ls='ls -GF'
#プロンプト設定
PROMPT='(%c):%F{green}$%f '
プロンプトはシンプルにカレントディレクトリのみの表示にしました。
プロンプトの設定についてはこちらに(少し)詳しく記述しています。
補完機能の強化:zsh-completions
zshを使う理由がこの補完機能です。機能はたくさんありますが、自分に必要なものだけ設定していきます。まずはインストール。
$ brew install zsh-autosuggestions
インストールすると、次にああしろこうしろと丁寧に教えてくれるので、指示に従って.zshrcに下記を記述します。
#zsh-completions setting
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
autoload -Uz compinit
compinit
fi
環境に応じて、groupとotherの書き込みの権限を削除します。
chmod go-w '/opt/homebrew/share'
chmod go-w '/opt/homebrew/share/zsh'
リビルドでエラーが出なければOK
rm -f ~/.zcompdump; compinit
.zshrcにお好みの設定を記述します。
#cdなしでもディレクトリ移動
setopt auto_cd
#cd - で以前移動したディレクトリを表示
setopt auto_pushd
#コマンドをミススペルした時に候補を表示
setopt correct
#補完で小文字でも大文字にマッチさせる.ただし、大文字で検索文字列を入力した場合、大文字でのマッチを先に検索する.
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' '+m:{A-Z}={a-z}'
# 補完候補を詰めて表示
setopt list_packed
# 補完候補一覧をカラー表示
autoload colors
zstyle ':completion:*' list-colors ''
#コマンド履歴の保存先指定
HISTFILE=~/.zsh_history
#履歴ファイルに保存するコマンド履歴の件数
export SAVEHIST=10000
#historyに保存する時余分なスペースを削除する
setopt hist_reduce_blanks
#メモリに保存されるコマンド履歴の件数
export HISTSIZE=1000
gitリポジトリの状態をプロントに表示する
zsh-git-promptをインストールします
$ brew install zsh-git-prompt
# ==> Caveats
# Make sure zsh-git-prompt is loaded from your .zshrc:
# source "/opt/homebrew/opt/zsh-git-prompt/zshrc.sh"
指示に従い.zshrcに下記を記述します
source "/opt/homebrew/opt/zsh-git-prompt/zshrc.sh"
前述したプロンプトの設定にgit_super_statusを展開します。
#プロンプト設定
PROMPT='(%c):$(git_super_status) %F{green}$%f '
このままでは、gitリポジトリ以外でも何かしら表示されてしまいます。
gitリポジトリかどうかの判定関数を作成して、precmd()へフックさせます。先ほど記述したプロンプト設定の部分を書き換えます。
#プロンプト設定
PROMPT='(%c):$(git_super_status) %F{green}$%f '
git_prompt() {
if [ "$(git rev-parse --is-inside-work-tree 2> /dev/null)" = true ]; then
PROMPT='(%c):$(git_super_status) %F{green}$%f '
else
PROMPT='(%c):%F{green}$%f '
fi
}
precmd() {
git_prompt
}
これで、カレントディレクトリがgitリポジトリの時だけリポジトリが表示されるようになりました。
pyenv + pipenv インストール
仮想環境を立てて、pythonのプロジェクトを開発するときはpipenvを使うのですが、システムのpythonバージョン管理としてpyenvを使うことにします。
pyenv インストール
brewでpyenvをインストールして、パスを通します。
$ brew install pyenv
$ echo 'eval "$(pyenv init --path)"' >> ~/.zshrc. #パスを通して
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc #これで切り替え
$ source ~/.zshrc
$ pyenv -v
# pyenv 2.2.5
インストール可能なバージョンを表示する
$ pyenv install --list
新しめの3.10.3をインストールします。
$ pyenv install 3.10.3
# ..
# Installed Python-3.10.3 to /Users/dc/.pyenv/versions/3.10.3
バージョンの切り替え方法
# システム全体で切り替える時
$ pyenv global 3.10.3
$ source ~/.zshrc
# フォルダ内のみで切り替える時
$ pyenv local 3.10.3
$ source ~/.zshrc
$ pyenv versions
# system
#* 3.10.3 (set by /Users/dc/.pyenv/version). <-- *が付いてるのが現在のバージョン
$ python -V
# Python 3.10.3
pipenv インストール
brewでpipenvをインストールします。
$ brew install pipenv
# ==> Caveats
# ==> pipenv
# zsh completions have been installed to:
# /opt/homebrew/share/zsh/site-functions
$ pipenv --version
# pipenv, version 2022.1.8
pynvimインストール
neovimにpython環境を渡すためのもの。neovimでpythonを開発するためにインストールしておく。
$ pip install pynvim
# Successfully installed greenlet-1.1.2 msgpack-1.0.3 pynvim-0.4.3
Dockerインストール
Apple chip(M1チップ)用のインストーラーとマニュアルが公式に出ています。
Dockerをインストールする前に、Rossetta2をインストールする必要があるようです。
$ softwareupdate --install-rosetta
# ...
# Install of Rosetta 2 finished successfully
Docker.dmg
をダウンロードして、Docker.appをApplicationsにドラッグ&ドロップ。
あとは、こちらのサイトを参考にしました。
Node.jsとnpmをインストールする
今のところNode.jpを使う予定はないのですが、npmをインストールしたいので諸々インストールします。(Node.jsをインストールするとnpmもインストールされるので)
nodebrewをインストールする
nodebrewはNode.jsのバージョン管理システム。複数インストールされたNode.jsのバージョンを指定することができる。
$ brew install nodebrew
#You need to manually run setup_dirs to create directories required by nodebrew:
# /opt/homebrew/opt/nodebrew/bin/nodebrew setup_dirs
#
#Add path:
# export PATH=$HOME/.nodebrew/current/bin:$PATH
#
#To use Homebrew's directories rather than ~/.nodebrew add to your profile:
# export NODEBREW_ROOT=/opt/homebrew/var/nodebrew
#
#zsh completions have been installed to:
# /opt/homebrew/share/zsh/site-functions
指示通りディレクトリを作成します。
$ /opt/homebrew/opt/nodebrew/bin/nodebrew setup_dirs
.zshrcにパスを記述します。
$ export PATH=$HOME/.nodebrew/current/bin:$PATH
確認。バージョン1.2.0が無事インストールできました。
$ source ~/.zshrc
$ nodebrew
# nodebrew 1.2.0
Node.jsとnpmをインストールする
インストール可能なバージョンを確認します。
$ nodebrew ls-remote
# ...
# v16.0.0 v16.1.0 v16.2.0 v16.3.0 v16.4.0 v16.4.1 v16.4.2 v16.5.0
# v16.6.0 v16.6.1 v16.6.2 v16.7.0 v16.8.0 v16.9.0 v16.9.1 v16.10.0
# v16.11.0 v16.11.1 v16.12.0 v16.13.0 v16.13.1 v16.13.2 v16.14.0 v16.14.1
# v16.14.2
# ...
v16が最新の安定版らしいので、v16.14.2をインストールします。
$ nodebrew install-binary v16.14.2
インストールしたNode.jsバージョンを有効化する
インストールされたバージョンを全て表示させます。(1つしかインストールしていませんが)
まだどのバージョンも有効化してないのでcurrent: noneとなっています。
$ nodebrew ls
# v16.14.2
# current: none
v16.14.2を有効にします。current: v16.14.2になりました。
Node.jsのとnpmのバージョンが確認できたらOK。インストール完了です。
$ nodebrew use v16.14.2
# use v16.14.2
$ nodebrew ls
# v16.14.2
# current: v16.14.2
$ source ~/.zshrc
$ node -v
# v16.14.2
$ npm -v
# 8.5.0
Neovimインストール
鬼門のneovim。インストールはサクッと終わっても長い長い設定の道のりが続きます。
$ brew install neovim
$ which nvim
#/opt/homebrew/bin/nvim
$ nvim -v
#NVIM v0.6.1
#Build type: Release
#LuaJIT 2.1.0-beta3
#Compiled by brew@HMBRW-A-001-M1-004.local
#Features: +acl +iconv +tui
#See ":help feature-compile"
# システム vimrc: "$VIM/sysinit.vim"
# 省略時の $VIM: "/opt/homebrew/Cellar/neovim/0.6.1/share/nvim"
#Run :checkhealth for more info
インストールは完了しました。設定は長くなるので別に書きます。
neovim0.7にがリリースされたので、バージョンアップします。
$ brew reinstall neovim
$ which nvim
#/opt/homebrew/bin/nvim
$ nvim -v
#NVIM v0.7.0
#Build type: Release
#LuaJIT 2.1.0-beta3
#Compiled by brew@HMBRW-A-001-M1-004.local
#
#Features: +acl +iconv +tui
#See ":help feature-compile"
#
# システム vimrc: "$VIM/sysinit.vim"
# 省略時の $VIM: "/opt/homebrew/Cellar/neovim/0.7.0/share/nvim"
nerd font インストール
ターミナルやneovimでアイコンを使うためにnerd fontをインストールします。フォントはメジャーなHackを選択しました。
公式サイトからもダウンロード出来ます。下記はbrewを使ったインストールです。
$ brew tap homebrew/cask-fonts
$ brew search /font/ --cask. # インストール可能なフォントが表示される
$ brew install --cask font-hack-nerd-font # hack-nerd-fontをインストール
==> Downloading https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/Hack.zip
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/27574418/0a32bc80-4532
######################################################################## 100.0%
==> Installing Cask font-hack-nerd-font
==> Moving Font 'Hack Italic Nerd Font Complete.ttf' to '/Users/dc/Library/Fonts/Hack Italic Nerd Font Complete.ttf'
==> Moving Font 'Hack Bold Nerd Font Complete.ttf' to '/Users/dc/Library/Fonts/Hack Bold Nerd Font Complete.ttf'
==> Moving Font 'Hack Bold Italic Nerd Font Complete Mono.ttf' to '/Users/dc/Library/Fonts/Hack Bold Italic Nerd Font Co
==> Moving Font 'Hack Bold Italic Nerd Font Complete.ttf' to '/Users/dc/Library/Fonts/Hack Bold Italic Nerd Font Complet
==> Moving Font 'Hack Regular Nerd Font Complete.ttf' to '/Users/dc/Library/Fonts/Hack Regular Nerd Font Complete.ttf'
==> Moving Font 'Hack Regular Nerd Font Complete Mono.ttf' to '/Users/dc/Library/Fonts/Hack Regular Nerd Font Complete M
==> Moving Font 'Hack Italic Nerd Font Complete Mono.ttf' to '/Users/dc/Library/Fonts/Hack Italic Nerd Font Complete Mon
==> Moving Font 'Hack Bold Nerd Font Complete Mono.ttf' to '/Users/dc/Library/Fonts/Hack Bold Nerd Font Complete Mono.tt
🍺 font-hack-nerd-font was successfully installed!
ターミナルで使用するフォントを「hack-nerd-font」に設定すればOK
iterm2インストール
Macに既存でインストールされているterm.appはTrue colorが使えないという致命的な欠陥があるのでiterm2をターミナルとして使うことにします。(Ture colorが使えないとneovimのカラースキームが正常に動作しません)
インストール簡単で細かい設定も可能なのでこちらをお勧めします。
$ brew cask install iterm2
フォーマッターインストール(prettier, Black, flake8)
prettierインストール
prettierはインデントの数やスペースの位置などを自動整形してくれるツールです。Node.js上で動作し、JavaScript、HTML, CSS, TypeScript, GraphQLなどをサポートしています。
$ cd <プロジェクトフォルダ>
$ npm i -D prettier # インストール
$ npm fund # バージョン確認
dc
└── https://github.com/prettier/prettier?sponsor=1
└── prettier@2.6.2
実行コマンド
# 指定したファイルを自動形成する
$ npx prettier --write <ファイル名>
# ディレクトリないのファイルを自動形成する
$ npx prettier --write .
インストールするとpackage.jsonファイルが作成されるので、それを編集して独自のコマンドを設定できる。下記の例は。コマンドformatで./srcディレクトリ配下の.jsファイルを自動整形します。
{
"scripts": {
"format": "prettier --write 'src/**/*.js'"
},
"devDependencies": {
"prettier": "^2.6.2"
}
}
pythonフォーマッターBlack, flake8インストール
flake8はpythonのコーディングチェックをしてくれますが、修正まではしてくれません。修正をしてくれるのがBlackになります。flake8は以下のコードチェックツールのラッパーとなります。
・PyFlakes(pyflakes : コードのエラーチェック)
・pycodestyle(pycodestyle : PEP8に準拠しているかチェック)
・Ned Batchelder’s McCabe script(mccabe : 循環的複雑度のチェック)
# flake8インストール
$ pip install flake8
Collecting flake8
Downloading flake8-4.0.1-py2.py3-none-any.whl (64 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.1/64.1 KB 1.8 MB/s eta 0:00:00
Collecting pycodestyle<2.9.0,>=2.8.0
Downloading pycodestyle-2.8.0-py2.py3-none-any.whl (42 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.1/42.1 KB 1.3 MB/s eta 0:00:00
Collecting pyflakes<2.5.0,>=2.4.0
Downloading pyflakes-2.4.0-py2.py3-none-any.whl (69 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 69.7/69.7 KB 2.3 MB/s eta 0:00:00
Collecting mccabe<0.7.0,>=0.6.0
Downloading mccabe-0.6.1-py2.py3-none-any.whl (8.6 kB)
Installing collected packages: mccabe, pyflakes, pycodestyle, flake8
Successfully installed flake8-4.0.1 mccabe-0.6.1 pycodestyle-2.8.0 pyflakes-2.4.0
flake8単体で使用する機会はあまりないかと思いますが、使い方を記しておきます。
# コーディングチェック結果を表示します
$ flake8 <ファイル名>
# 修正箇所の提示
$ flake8 --show-source <ファイル名>
次にBlackをインストールします。
$ pip install black
Collecting black
Downloading black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 9.2 MB/s eta 0:00:00
Collecting tomli>=1.1.0
Downloading tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting click>=8.0.0
Downloading click-8.1.3-py3-none-any.whl (96 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 96.6/96.6 KB 3.1 MB/s eta 0:00:00
Collecting mypy-extensions>=0.4.3
Downloading mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)
Collecting pathspec>=0.9.0
Downloading pathspec-0.9.0-py2.py3-none-any.whl (31 kB)
Collecting platformdirs>=2
Downloading platformdirs-2.5.2-py3-none-any.whl (14 kB)
Installing collected packages: mypy-extensions, tomli, platformdirs, pathspec, click, black
Successfully installed black-22.3.0 click-8.1.3 mypy-extensions-0.4.3 pathspec-0.9.0 platformdirs-2.5.2 tomli-2.0.1
Blackを実行するにはpyproject.tomlを作成して、、、とか面倒ですが、ここでインストールしたflake8とBlackはneovimで使う予定なので、pyproject.tomlの設定方法は省きます。
neovimでの設定方法はまた別に記載します。
コメント