エンジニア転職日記

エンジニア転職に向けての日記です

環境構築メモ

概要

環境構築の際に入力するコマンドや用語についてまとめておきます。

MEMO

ターミナル

ターミナルはPCに命令をすることができるMacのアプリケーションです。

CLI

CLIはCommand Line Interfaceの略で、コマンドを入力してコンピューターに命令する仕組みのことです。ターミナルはCLIの一種です。反対に、画面操作を用いてPCを動かす仕組みをGUI(Graphical User Interface)と呼びます。

シェル

シェルは「ターミナルとOSを繋ぐ窓口役」のような存在です。ターミナルから入力されたコマンドを読み取ってOSに指示を渡し、結果をターミナルに返して表示や実行などの動作をさせます。

シェルにもさまざまな種類があり、bashzshtcshなどが一般的ですが、なかでもzshが2019年よりmacOSの標準シェルとなりました。

zsh

zshはシェルの1つです。ターミナルでecho $SHELLを実行すると現在使用しているシェルがわかります。2019年以前の標準シェルであったbashと比較してもコマンドの実行に大きな違いはありませんが、bashのプロンプトは$なのに対し、zshのプロンプトは%となっています。

zshでは、ドットから始まるドットファイルを作成、編集することで設定を行うことができます。.zshrcの設定を編集してPATHにアプリケーションの場所を示すことで、どのディレクトリからでもコマンドの使用が可能になります。

zshの設定方法は以下のコマンドです。

# zshをデフォルトに設定
% chsh -s /bin/zsh

# ログインシェルを表示
% echo $SHELL
# 以下のように表示されれば成功
/bin/zsh

PATH

PATHとは、環境変数と呼ばれるOS用の変数のことです。コマンドが入力された時に、シェルはPATHにありかを示せば、どこからコマンドを実行してもアプリケーションの場所が検索可能になります。

PATHにアプリケーションのありかを示して、全てのディレクトリからコマンドを使用可能にすることを、一般的に「PATHを通す」と表現します。

例えば、rbenvやMySQLのパスを通すコマンドは以下のようになります。

# rbenvのパスを通す
% echo 'eval "$(rbenv init -)"' >> ~/.zshrc

# MySQLのパスを通す
% echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.zshrc

echoコマンドは>>に続けてファイル名を指定することで、ファイルに文字を追加できるコマンドです。.zshrcにrbenvの設定を反映するためのコマンドを記述することで、PATHを通しています。

コマンドラインツール

コマンドで操作するアプリケーションのまとまりを指します。コマンドラインツールを導入することで、OSが初めからコマンドで操作できるアプリケーション以外のアプリケーションをPCにインストールできます。macOS専用のコマンドラインツールにCommand Line Toolsというものがあります。macOSには元々Linuxコマンドで操作できるアプリケーションや機能を標準搭載していますが、Linuxコマンド以外で操作するアプリケーションの多くはCommand Line Toolsを導入することによってまとめてPCに導入できます。

Command Line Toolsのインストールは以下のコマンドです。

% xcode-select --install

パッケージ管理

パッケージとは、プログラムや処理をひとまとめにしたもののことです。ライブラリと似た概念ですが、パッケージは複数のライブラリをまとめていることもあります。

パッケージ管理とは、パッケージやパッケージが持つライブラリなどの依存関係を考慮してインストールやバージョンアップを行う管理のことです。1つのパッケージを利用したい場合、そのパッケージと依存関係にあるパッケージも合わせてインストールしてくれます。

GemfileやBundlerによってGemを管理することもパッケージ管理に含まれます。このような管理を自動的に行ってくれるツールのことをパッケージ管理ツール、またはパッケージマネージャーと呼びます。

Homebrew

macOSのパッケージ管理ツールです。macOS上で動作するアプリケーションの多くがHomebrewからインストールできます。

Homebrewのインストールコマンドは以下です。

% ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Homebrewを使うことで、依存関係にあるパッケージを自動的に合わせるインストールが可能になります。

以下によく使うコマンドをまとめておきます

brew -v

Homebrewのバージョンを表示する

brew install

パッケージをインストールする

brew uninstall

パッケージをアンインストールする

brew list

インストールしたパッケージを表示する

brew search

インストール可能なパッケージを表示する

brew update

インストールしたパッケージを最新へ変更する

Node.js

Node.jsは本来ブラウザ上で動くJavaScriptをサーバー再度で動作させる「実行環境」のことです。Node.jsがインストールされるとJavaScriptのパッケージをサーバーサイドで利用することができます。

Yarn

Node.jsを環境上で動作するパッケージを管理する、JavaScriptのパッケージ管理ツールです。WebフレームワークでJavaScriptを使用する際には、新たにNode.jsのパッケージを追加して利用することもあります。

Railsでは、バージョン6系からJavaScriptのパッケージをデフォルトで利用するようになったので、プロジェクトの作成にYarnのインストールが必須となりました。

バージョン管理

変更したバージョンを記録、あるいは外部から保存して、過去のバージョンや最新のバージョンに切り替えたりすることをバージョン管理と呼びます。

バージョン管理をすることで、パッケージとの依存関係の問題を解消したり、変更して問題が発生したプロジェクトを過去の安定したバージョンに切り替えるなどの対応ができます。Gitによってプロジェクトの変更履歴を管理することもバージョン管理に含まれます。Rubyのバージョン管理には、rbenvを使います。

rbenv

rbenvはRubyのバージョン管理ツールです。複数のバージョンのRubyをダウンロードしておいて、使用するRubyのバージョンをディレクトリごとに指定することも可能です。

バージョン管理ツールを使わない場合、Rubyのバージョンは全てPC内で共通となってしまいます。すると、Rubyのバージョンを最新に更新した際に、あるプロジェクトで使用しているRubyのライブラリが使用できなくなってしまうこともあります。

rbenvを使えば、このようなRubyのバージョン変更に伴う依存関係の問題を回避できます。

rbenvの基本的なコマンドをいかにまとめます。

・rbenv -v

rbenvのバージョンを表示する

・rbenv install [バージョン] 

Rubyのバージョンを指定してインストールする

・rbenv uninstall[バージョン]

Rubyのバージョンを指定してアンインストールする

・rbenv versions

インストールされているRubyのバージョンの一覧を表示する

・rbenv global [バージョン]

全てのディレクトリで使用するRubyのバージョンを切り替える

・rbenv local [バージョン]

カレントディレクトリで使用するRubyのバージョンを切り替える

・rbenv rehash

RubyやGemに関するコマンドをバージョン変更後も使用できるようにする

参考

https://employment.en-japan.com/engineerhub/entry/2019/02/19/103000

https://academy.gmocloud.com/keywords/20170324/4010