anyenvを利用して環境を構築する理由
- プロジェクトによって、Node.jsのバージョンが異なるため
- nodebrewよりもanyenvでXXenv系を全て管理してみたかったから
構築の流れ
自身の備忘録的な立ち位置が強いので一部端折っているところもありますが、内容に誤り等ございましたら、コメントにてご指摘頂けますと幸いです。
今回利用するツール(?)の紹介
ツール | 概要 |
---|---|
Homebrew | macOSオペレーティングシステム上のパッケージ管理システムのひとつ |
anyenv | Python,Golang,Node.js等の環境を複数管理できるシステム(XXenvを管理できる) |
nodenv | Node.jsの環境を切り替えることができるツール |
Android Studio | Androidアプリ開発に必要なIDE(統合開発環境) |
Homebrewのインストール
必ず入れると言っても禍根ではないやつです。
インストール
※すでに入っている場合はスルーします。
Homebrew公式ホームページに記載されているインストールコマンドをターミナルにコピペで打ち込み、実行しましょう。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
※上記は、2020年8月末次点のスクリプトです。
スクリプトをコピー後、Enterを押すころでパスワードを求められるので、Macのログインパスワードを入力してください。
※入力したパスワードは見えませんが、ちゃんと入力されていますので安心してください。
実行結果を全て表示する ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91900/050390ad-cf4a-47dd-7bb8-4f535ff8cc47.png)
Password:
==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following new directories will be created:
/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
==> The Xcode Command Line Tools will be installed.
Press RETURN to continue or any other key to abort
==> /usr/bin/sudo /bin/mkdir -p /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/sbin/chown maintain /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/mkdir -p /Users/maintain/Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Users/maintain/Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown maintain /Users/maintain/Library/Caches/Homebrew
==> Searching online for the Command Line Tools
==> /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
==> Installing Command Line Tools for Xcode-11.5
==> /usr/bin/sudo /usr/sbin/softwareupdate -i Command\ Line\ Tools\ for\ Xcode-11.5
Software Update Tool
Downloading Command Line Tools for Xcode
Downloaded Command Line Tools for Xcode
Installing Command Line Tools for Xcode
Done with Command Line Tools for Xcode
Done.
==> /usr/bin/sudo /bin/rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
==> /usr/bin/sudo /usr/bin/xcode-select --switch /Library/Developer/CommandLineTools
==> Downloading and installing Homebrew...
remote: Enumerating objects: 114, done.
remote: Counting objects: 100% (114/114), done.
remote: Compressing objects: 100% (89/89), done.
remote: Total 149604 (delta 47), reused 78 (delta 24), pack-reused 149490
Receiving objects: 100% (149604/149604), 37.35 MiB | 9.89 MiB/s, done.
Resolving deltas: 100% (110409/110409), done.
From https://github.com/Homebrew/brew
* [new branch] master -> origin/master
* [new tag] 0.1 -> 0.1
* [new tag] 0.2 -> 0.2
* [new tag] 0.3 -> 0.3
* [new tag] 0.4 -> 0.4
* [new tag] 0.5 -> 0.5
* [new tag] 0.6 -> 0.6
* [new tag] 0.7 -> 0.7
* [new tag] 0.7.1 -> 0.7.1
* [new tag] 0.8 -> 0.8
* [new tag] 0.8.1 -> 0.8.1
* [new tag] 0.9 -> 0.9
* [new tag] 0.9.1 -> 0.9.1
* [new tag] 0.9.2 -> 0.9.2
* [new tag] 0.9.3 -> 0.9.3
* [new tag] 0.9.4 -> 0.9.4
* [new tag] 0.9.5 -> 0.9.5
* [new tag] 0.9.8 -> 0.9.8
* [new tag] 0.9.9 -> 0.9.9
* [new tag] 1.0.0 -> 1.0.0
* [new tag] 1.0.1 -> 1.0.1
* [new tag] 1.0.2 -> 1.0.2
* [new tag] 1.0.3 -> 1.0.3
* [new tag] 1.0.4 -> 1.0.4
* [new tag] 1.0.5 -> 1.0.5
* [new tag] 1.0.6 -> 1.0.6
* [new tag] 1.0.7 -> 1.0.7
* [new tag] 1.0.8 -> 1.0.8
* [new tag] 1.0.9 -> 1.0.9
* [new tag] 1.1.0 -> 1.1.0
* [new tag] 1.1.1 -> 1.1.1
* [new tag] 1.1.10 -> 1.1.10
* [new tag] 1.1.11 -> 1.1.11
* [new tag] 1.1.12 -> 1.1.12
* [new tag] 1.1.13 -> 1.1.13
* [new tag] 1.1.2 -> 1.1.2
* [new tag] 1.1.3 -> 1.1.3
* [new tag] 1.1.4 -> 1.1.4
* [new tag] 1.1.5 -> 1.1.5
* [new tag] 1.1.6 -> 1.1.6
* [new tag] 1.1.7 -> 1.1.7
* [new tag] 1.1.8 -> 1.1.8
* [new tag] 1.1.9 -> 1.1.9
* [new tag] 1.2.0 -> 1.2.0
* [new tag] 1.2.1 -> 1.2.1
* [new tag] 1.2.2 -> 1.2.2
* [new tag] 1.2.3 -> 1.2.3
* [new tag] 1.2.4 -> 1.2.4
* [new tag] 1.2.5 -> 1.2.5
* [new tag] 1.2.6 -> 1.2.6
* [new tag] 1.3.0 -> 1.3.0
* [new tag] 1.3.1 -> 1.3.1
* [new tag] 1.3.2 -> 1.3.2
* [new tag] 1.3.3 -> 1.3.3
* [new tag] 1.3.4 -> 1.3.4
* [new tag] 1.3.5 -> 1.3.5
* [new tag] 1.3.6 -> 1.3.6
* [new tag] 1.3.7 -> 1.3.7
* [new tag] 1.3.8 -> 1.3.8
* [new tag] 1.3.9 -> 1.3.9
* [new tag] 1.4.0 -> 1.4.0
* [new tag] 1.4.1 -> 1.4.1
* [new tag] 1.4.2 -> 1.4.2
* [new tag] 1.4.3 -> 1.4.3
* [new tag] 1.5.0 -> 1.5.0
* [new tag] 1.5.1 -> 1.5.1
* [new tag] 1.5.10 -> 1.5.10
* [new tag] 1.5.11 -> 1.5.11
* [new tag] 1.5.12 -> 1.5.12
* [new tag] 1.5.13 -> 1.5.13
* [new tag] 1.5.14 -> 1.5.14
* [new tag] 1.5.2 -> 1.5.2
* [new tag] 1.5.3 -> 1.5.3
* [new tag] 1.5.4 -> 1.5.4
* [new tag] 1.5.5 -> 1.5.5
* [new tag] 1.5.6 -> 1.5.6
* [new tag] 1.5.7 -> 1.5.7
* [new tag] 1.5.8 -> 1.5.8
* [new tag] 1.5.9 -> 1.5.9
* [new tag] 1.6.0 -> 1.6.0
* [new tag] 1.6.1 -> 1.6.1
* [new tag] 1.6.10 -> 1.6.10
* [new tag] 1.6.11 -> 1.6.11
* [new tag] 1.6.12 -> 1.6.12
* [new tag] 1.6.13 -> 1.6.13
* [new tag] 1.6.14 -> 1.6.14
* [new tag] 1.6.15 -> 1.6.15
* [new tag] 1.6.16 -> 1.6.16
* [new tag] 1.6.17 -> 1.6.17
* [new tag] 1.6.2 -> 1.6.2
* [new tag] 1.6.3 -> 1.6.3
* [new tag] 1.6.4 -> 1.6.4
* [new tag] 1.6.5 -> 1.6.5
* [new tag] 1.6.6 -> 1.6.6
* [new tag] 1.6.7 -> 1.6.7
* [new tag] 1.6.8 -> 1.6.8
* [new tag] 1.6.9 -> 1.6.9
* [new tag] 1.7.0 -> 1.7.0
* [new tag] 1.7.1 -> 1.7.1
* [new tag] 1.7.2 -> 1.7.2
* [new tag] 1.7.3 -> 1.7.3
* [new tag] 1.7.4 -> 1.7.4
* [new tag] 1.7.5 -> 1.7.5
* [new tag] 1.7.6 -> 1.7.6
* [new tag] 1.7.7 -> 1.7.7
* [new tag] 1.8.0 -> 1.8.0
* [new tag] 1.8.1 -> 1.8.1
* [new tag] 1.8.2 -> 1.8.2
* [new tag] 1.8.3 -> 1.8.3
* [new tag] 1.8.4 -> 1.8.4
* [new tag] 1.8.5 -> 1.8.5
* [new tag] 1.8.6 -> 1.8.6
* [new tag] 1.9.0 -> 1.9.0
* [new tag] 1.9.1 -> 1.9.1
* [new tag] 1.9.2 -> 1.9.2
* [new tag] 1.9.3 -> 1.9.3
* [new tag] 2.0.0 -> 2.0.0
* [new tag] 2.0.1 -> 2.0.1
* [new tag] 2.0.2 -> 2.0.2
* [new tag] 2.0.3 -> 2.0.3
* [new tag] 2.0.4 -> 2.0.4
* [new tag] 2.0.5 -> 2.0.5
* [new tag] 2.0.6 -> 2.0.6
* [new tag] 2.1.0 -> 2.1.0
* [new tag] 2.1.1 -> 2.1.1
* [new tag] 2.1.10 -> 2.1.10
* [new tag] 2.1.11 -> 2.1.11
* [new tag] 2.1.12 -> 2.1.12
* [new tag] 2.1.13 -> 2.1.13
* [new tag] 2.1.14 -> 2.1.14
* [new tag] 2.1.15 -> 2.1.15
* [new tag] 2.1.16 -> 2.1.16
* [new tag] 2.1.2 -> 2.1.2
* [new tag] 2.1.3 -> 2.1.3
* [new tag] 2.1.4 -> 2.1.4
* [new tag] 2.1.5 -> 2.1.5
* [new tag] 2.1.6 -> 2.1.6
* [new tag] 2.1.7 -> 2.1.7
* [new tag] 2.1.8 -> 2.1.8
* [new tag] 2.1.9 -> 2.1.9
* [new tag] 2.2.0 -> 2.2.0
* [new tag] 2.2.1 -> 2.2.1
* [new tag] 2.2.10 -> 2.2.10
* [new tag] 2.2.11 -> 2.2.11
* [new tag] 2.2.12 -> 2.2.12
* [new tag] 2.2.13 -> 2.2.13
* [new tag] 2.2.14 -> 2.2.14
* [new tag] 2.2.15 -> 2.2.15
* [new tag] 2.2.16 -> 2.2.16
* [new tag] 2.2.17 -> 2.2.17
* [new tag] 2.2.2 -> 2.2.2
* [new tag] 2.2.3 -> 2.2.3
* [new tag] 2.2.4 -> 2.2.4
* [new tag] 2.2.5 -> 2.2.5
* [new tag] 2.2.6 -> 2.2.6
* [new tag] 2.2.7 -> 2.2.7
* [new tag] 2.2.8 -> 2.2.8
* [new tag] 2.2.9 -> 2.2.9
* [new tag] 2.3.0 -> 2.3.0
* [new tag] 2.4.0 -> 2.4.0
* [new tag] 2.4.1 -> 2.4.1
* [new tag] 2.4.10 -> 2.4.10
* [new tag] 2.4.11 -> 2.4.11
* [new tag] 2.4.12 -> 2.4.12
* [new tag] 2.4.13 -> 2.4.13
* [new tag] 2.4.2 -> 2.4.2
* [new tag] 2.4.3 -> 2.4.3
* [new tag] 2.4.4 -> 2.4.4
* [new tag] 2.4.5 -> 2.4.5
* [new tag] 2.4.6 -> 2.4.6
* [new tag] 2.4.7 -> 2.4.7
* [new tag] 2.4.8 -> 2.4.8
* [new tag] 2.4.9 -> 2.4.9
HEAD is now at f943af37f Merge pull request #8457 from Homebrew/tapioca-update
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
remote: Enumerating objects: 12, done.
remote: Counting objects: 100% (12/12), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 782226 (delta 4), reused 10 (delta 4), pack-reused 782214
Receiving objects: 100% (782226/782226), 311.31 MiB | 20.14 MiB/s, done.
Resolving deltas: 100% (521822/521822), done.
Updating files: 100% (5452/5452), done.
Tapped 2 commands and 5197 formulae (5,477 files, 341.5MB).
Already up-to-date.
==> 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 (or will be during this `install` run).
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Next steps:
- Run `brew help` to get started
- Further documentation:
https://docs.brew.sh
動作チェック
バージョン情報を表示してみましょう。
brew -v
anyenvのインストール
XXenv系のバージョン管理をできるシステムを導入します。
インストール
Homebrewを利用して、anyenvをインストールします。
brew install anyenv
動作チェック
anyenv --version
初期設定
anyenv init
下記のように「.zshrc」に追加するように指示があるため、実施する
echo 'eval "$(anyenv init -)"' >> ~/.zshrc
追加後、設定をリロード
source ~/.zshrc
さらに下記のようにエラーという名の指示があるので、焦らずに実施します。要するにディレクトリがないのかと思います。
anyenv install --init
途中で、gitHubからのチェックアウトがありますので、「y」を入力し、Enterで実行してください。
※Proxy環境下等では、git cloneに失敗するため、gitにproxy設定を行ってください。
GitコマンドをProxy環境可で利用する
実行結果を全て確認する![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91900/a83b921b-8d3b-c2fc-1c90-b01b6528651f.png)
Manifest directory doesn't exist: /Users/maintain/.config/anyenv/anyenv-install
Do you want to checkout ? [y/N]: y
Cloning https://github.com/anyenv/anyenv-install.git master to /Users/maintain/.config/anyenv/anyenv-install...
Cloning into '/Users/maintain/.config/anyenv/anyenv-install'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 62 (delta 1), reused 0 (delta 0), pack-reused 57
Unpacking objects: 100% (62/62), done.
Completed!
nodenvのインストール
お待ちかねのnodenvを入れていきましょう。
インストール
anyenv install nodenv
実行結果を全て表示する![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91900/a0271223-87a1-c705-906f-c0d0a11bf66b.png)
/var/folders/kn/9wvwt6bj0dv3nhdd73b70d_80000gn/T/nodenv.20200824032526.6048 ~
Cloning https://github.com/nodenv/nodenv.git master to nodenv...
Cloning into 'nodenv'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 4017 (delta 2), reused 4 (delta 1), pack-reused 4003
Receiving objects: 100% (4017/4017), 731.96 KiB | 1017.00 KiB/s, done.
Resolving deltas: 100% (2633/2633), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/node-build.git master to node-build...
Cloning into 'node-build'...
remote: Enumerating objects: 90, done.
remote: Counting objects: 100% (90/90), done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 19741 (delta 37), reused 64 (delta 24), pack-reused 19651
Receiving objects: 100% (19741/19741), 3.51 MiB | 2.98 MiB/s, done.
Resolving deltas: 100% (12651/12651), done.
~
~/.anyenv/envs/nodenv/plugins ~
Cloning https://github.com/nodenv/nodenv-vars.git master to nodenv-vars...
Cloning into 'nodenv-vars'...
remote: Enumerating objects: 211, done.
remote: Total 211 (delta 0), reused 0 (delta 0), pack-reused 211
Receiving objects: 100% (211/211), 31.82 KiB | 245.00 KiB/s, done.
Resolving deltas: 100% (76/76), done.
~
Install nodenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
Install nodenv succeeded!と表示されれば完了です。
リロードが必要そうですので、下記コマンドを実行してください。
exec $SHELL -l
動作チェック
env
下記のように、nodeenv系の環境変数が追加されていればOKです。
(関係ある部分のみ抜粋)
PATH=/Users/maintain/.anyenv/envs/nodenv/shims:/Users/maintain/.anyenv/envs/nodenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
SHLVL=1
NODENV_ROOT=/Users/maintain/.anyenv/envs/nodenv
NODENV_SHELL=zsh
_=/usr/bin/env
Node.jsのインストール
インストール可能バージョンの確認
どんなバージョンが配信されているわからない場合は、下記のコマンドで確認します。
わかっている場合は、飛ばしてください。
nodenv install -l
インストール
下記のようにインストールしたいバージョンを指定してください。
nodenv install {バージョン番号}
例)nodenv install 12.18.3
インストール済みバージョン確認
下記コマンドで確認可能です。
nodenv whence npm
インストールしたNode.jsをグローバル設定
nodenv global {バージョン番号}
例)nodenv global 12.18.3
node -v
アンインストール
~/.anyenv/envs/nodenv/versions
配下にバージョンごとにディレクトリが作られるので、不要になったものを削除してください。
nodeenvを利用する
nodeenvを利用するメリットである、プロジェクトごとのローカル設定を行う方法です。
ローカルバージョン設定
## プロジェクトのディレクトリに移動
cd {プロジェクトディレクトリ}
## そのプロジェクトで利用するバージョンをしてい
nodenv local {バージョン番号}
.node-version
というファイルが作成され、その中にバージョンが記載されています。
動作チェック
node -v
グローバル設定とは異なったバージョンが表示されるようになったかと思います。
Androidもビルドしたい場合
Android Studioのインストール
Android Studioの公式ページからアプリケーションをダウンロードし、インストールし、起動してください。
起動後、初回設定が必要ですので下記の通り進めてください。
読み込むものがない場合は、Do not import settings
を選択
どちらか好きな方を選択。個人的にはDon't send
で良いと思います。
Custom
を選択し、Next
特に変更せず、Next
お好きな方を選択し、Next
Android Virtual Device
を追加で選択し、Next
スペックに合ったメモリ割り当てが自動的に選択されるので、Next
設定内容を確認し、Finish
途中で拡張機能がブロックされる場合は、"セキュリティ"環境設定を開く
をクリック
鍵マークをクリックしロックを解除後、許可
をクリックしてください。
※自動で閉じないため、手動でセキュリティ設定画面は閉じてください。
その後、しばらく待つとインストールが完了し、Finish
がクリックできるようになりますので、クリックしてください。
Android SDKのパスを通す
下記3つのコマンドを実行し、SDKのパスを通します
# Android_HOMEの変数
echo 'export ANDROID_HOME=$HOME/Library/Android/sdk' >> ~/.zshrc
# Android toolsのパス
echo 'export PATH=$PATH:$ANDROID_HOME/tools' >> ~/.zshrc
# Android toolsの実行パス
echo 'export PATH=$PATH:$ANDROID_HOME/tools/bin' >> ~/.zshrc
# Android platform-toolsのパス
echo 'export PATH=$PATH:$ANDROID_HOME/platform-tools' >> ~/.zshrc
# 変更の適用
source ~/.zshrc
下記のコマンドを実行し、正しく適用されたかをかくにんしてください。
java -version
javac -version
Android StudioにバンドルされているJavaのパスを通す
すでにインストール済みのもがあれば不要ですが、まだJDKの設定をしていない場合は下記のコマンド3つを実行してください。
# JDKパス
echo 'export ANDROID_HOME=$HOME/Library/Android/sdk' >> ~/.zshrc
# JavaHomeパス
echo 'export JAVA_HOME=/Applications/"Android Studio.app"/Contents/jre/jdk/Contents/Home' >> ~/.zshrc
# 変更の適用
source ~/.zshrc
下記のコマンドを実行し、正しく適用されたかを確認してください。
adb version
SDKダウンロード
SDK Platformのダウンロード
SDK Managerより開発を行うSDKをダウンロードします。
Configure > SDK Manager
をクリックします
Show Package Details
にチェックをつけ、開発対象のAndroid SDK Platform XX
及びSystem Image
を選択し、Applyをクリックしてください。
※その後、ライセンス同意画面が表示された場合は、Accept
を選択し、Nextをクリック
SDK toolsのダウンロード
SDK Platformで選択肢たバージョンと同一のtoolsをダウンロードしましょう。
終わり
今回は初めて、anyenvでNode.jsの環境構築を行ってみました。
後は、下記コマンド等で、react-native-cliを入れて、react開発をしていきましょう!
npm install -g react-native-cli