2021/07/29

nodebrewでNode.jsを色々してみる

@ 酒井悠宇

Node.jsについては雰囲気だけで正直全然分かってないので、
https://www.youtube.com/watch?v=wtb0V6a4FXQ&t=37s
↑とかで学習しながらいい感じに記事にしていきたいと思います

Node.jsとは

Node.jsとはサーバーサイドで動くjavascript。

クライアントサイド

javascriptとは本来、クライアントサイドで動く言語。

クライアントサイド:サービスや機能を使う側のコンピュータさんのこと。

ユーザーが見ているwebサイト等の、視覚的に見えている範囲で実行可能な言語ということ。
Twitterでとかでいいねを押すと、アニメーション付きでハートが赤くなったりするのはjavascriptのおかげ。

サーバーサイド

クライアントサイドの対になる存在として、サーバーサイドというものがある。
これは、ユーザーの視覚的ではない部分(裏)の処理を実行しているもの。
Twitterでいいねを押すと、いいねのカウントが1上がって、その投稿の合計のいいね数が表示される。
これはサーバーサイドでプログラムが動いているおかげ。

サーバーサイド側の言語として代表的なものとしては、
PHP、Python、Ruby...とかがある。

Node.jsの誕生

でもある時こう思った人がいた。

え、クライアントサイドもサーバーサイドも同じ言語でかけた方が良くね?
javascriptで両方書けるようにしたらいいじゃん!

天才:できたぞ〜!サーバーサイドで動くjavascript、その名もNode.jsじゃ〜!

Node.jsの誕生にはこのような背景がある。

Node.jsを学ぶと何がいいの?

大きく二つ、
・javascriptだけでアプリケーションを作ることができるようになる。
・フロントエンドの環境構築にも使われるので、フロントエンドやっていきたいなら知っておくといい感じ
こんな感じ

Node.jsの環境構築について

クライアントサイドで動く言語

html、css、javascriptは環境構築の必要がない。
なぜならブラウザ上で動作する言語である為、ブラウザが解釈して実行してくれるから。
ブラウザにこれらが動く環境が既に用意されてある。

サーバーサイドで動く言語(Node.js)

対してNode.jsの場合、自分で環境を作らなければならない。
なぜならサーバーで動作する言語である為、サーバー側でNode.jsのソースコードを解釈しなければならないから。
サーバーにNode.jsが動く環境が用意されていないからインストールする必要がある。

Node.jsのインストール方法

大きく二つ。

①公式のNodo.jsのサイトからZipファイルをインストールしてくる

Zipファイル:圧縮されたファイル

この方法でもインストールはできるが、この方法はあまりよろしくない。
なぜなら、Node.jsにはバージョンによって、正常に動作するツールとそうでないツールがあるから。
なのでNode.jsを使う上では、「ツールを正常に動かすためにバージョンを変える」という機会が多くある。
そんなときに、いちいち公式サイトからZipファイルをインストールして、自分のパソコンに入っているNode.jsのバージョンを上書きするのは普通にめんどくさい。

②nodebrewを使う

nodebrewとは、 Node.jsをインストールするだけでなく、バージョン管理も簡単に行うことができるツール。
こっち使うのが安パイ。

実際に環境構築を行ってみる

nodebrewのインストール

curlコマンド実行

curl -L git.io/nodebrew | perl - setup

httpリクエストを通してサーバーにアクセスして、何かしらのデータをサーバーからダウンロードする、または送るコマンド

httpリクエスト:ホームページを見るときに、ホームページを見るときに使うソフト(Webブラウザ)からホームページのファイルが置いてあるコンピュータ(Webサーバ)に対して出される「このページをちょうだい」なお願いのこと

上記のコマンドにある

git.io/nodebrew

にアクセスすると、

のようなファイルが表示される。
これはnodebrewについての色々な情報が格納されているファイルっぽい。

インストールが終われば次は↓のコマンドを実行。

export PATH=$HOME/.nodebrew/current/bin:$PATH

何をやっているのかというと、自分のpcにインストールしたnodebrewのファイルの所在をターミナルに教えている。
「nodebrewのパスを通す」というのはこの行為を指す。
「nodebrewというコマンドを実行したときはこのファイルを参照してくださいね」みたいな意味になる。

nodebrewを使ってNode.jsをインストールする

コマンドはこんな感じ

nodebrew install-binary latest

最新バージョンのNode.jsをインストールしますよ
まぁいろんな機能あるけどもしかしたら不具合あるかもね〜って感じ。

nodebrew install-binary stable

安定版で一番最新のバージョンをインストールしますよ
ある程度品質は担保されてますよ〜って感じ。

nodebrew install-binary v8.9.1

指定のバージョンのNode.js(この場合であればバージョン8.9.1)をインストールしますよって感じ。

Node.jsをインストールする際のコマンドにはには、「nodebrew install」と「nodebrew install-binary」があるが、「nodebrew install-binary」の方が爆速でインストールしてくれるようになっている。

これはなぜかというと、「nodebrew install」でインストールすると、そのバージョンのnode.jsのソースコードをコンパイルするところから始めるのに対して、「nodebrew install-binary」はbinary(二進数)で書かれたファイルをインストールするから。

https://qiita.com/tenshinhan/items/82d60d7495bf52a5afaf

ソースコード(人間語)からコンパイル(機械語に変換)してインストールするか、既に二進数(機械語)で書かれているファイルをインストールするか。もちろんpcにとって簡単なのは後者なのでinstall-binaryの方がnode.jsのインストールが早いということになる。

nodebrewのバージョンを切り替える

nodebrewを使ってインストールしたNode.jsのバージョンを切り替える為には、

nodebrew use v16.5.0

みたいに「nodebrew use <バージョン>」コマンドを使う。

nodebrew ls

このコマンドで、nodebrewを使ってPCにインストールしたNode.jsのバージョン一覧と、現在使用しているNode.jsのバージョンを見ることができる

node -v

あとはこのコマンドで、nodeのバージョンがきちんと切り替わっているのかを確認!
nodebrewを使えばNode.jsのインストールもバージョンの切り替えもめちゃ簡単!

nodebrew use <バージョン名>でnodeのバージョンが切り替わらない時

これまでのような工程を踏んでも、「nodebrew use」でnodeのバージョンを変更することができない時、(自分のPCがそうだった)
原因として以下のようなことが考えられる。
・現在使用しているnodeがnodebrew経由でインストールしたものではない(homebrewでインストールしたnodeである)
「nodebrew use」はnodebrewでインストールしたnodeのバージョンを変更するコマンドなので、既にhomebrewでインストールしたnodeを使用している場合、「nodebrew use」でnodeのバージョンを変更することができない。

対処法

対処法としては、「homebrew経由でインストールしたnodeを削除する」ということが挙げられる。

$ which node

まず最初に、nodeコマンドを実行した際にpcが参照するnodeファイルのパスを出力する

/usr/local/opt/node@14/bin/node

のような出力結果であったとする。
次に、このファイルがhomebrewでインストールされているファイルであるか確かめる

$ brew list

これはhomebrewでインストールしたファイルの一覧を表示するコマンド。

node@14が存在するので、現在PCがhomeblew経由でインストールしたnodeを参照しているということになる。
ちなみにこのコマンドで表示されているファイルは、Finderを開いて左上の「移動」という欄から「フォルダへ移動」を選択して、「/usr/local/Cellar」を入力すると見ることができる。

このファイルを削除する。(手動でゴミ箱に入れてもok)

brew uninstall node@14

これをやれば自分のPCではnodebrew useでnodeのバージョンを切り替えられるようになりました。
ならない人はわかんないです。すいません。

多分、既にPCが参照しているnodeファイルの権限をnodebrewが奪うことはできないけど、PCが参照しているnodeファイルがなくなったら、nodebrewの命令が通るみたいな感じなんじゃないかなと思ってます。

まとめ

javascriptをクライアントサイドとサーバーサイド両方で使えるようにしようぜみたいな考えからNode.jsが生まれた。
Node.jsのインストールやバージョン管理にはnodebrewを使うと快適にいける。
いい感じにNode.jsの雰囲気がわかりました〜。最後までご覧いただき誠にありがとうございました〜!

© 2021 powerd by UnReact