XHack勉強会 第1回『Ruby「ゼロから」画像共有サービスを作る』で学んだこと
今回僕が学んだことにプラスアルファ、色々深掘りして
まとめていこうと思います。
この記事内で学べること。
・ターミナルの基礎的な操作コマンド
・開発環境構築(Homebrew~rbenv~ruby~gem)
・rbenvがルビーのバージョンを決める挙動。
・パス、環境変数について
・標準ライブラリとgemの違い
パソコン及びプログラミングについて
・パソコンが理解できるのは”2進数”のみ。”2進数”とは0と1。
色の名前、方向、画像なども含め全てその2つで構築されている。
・プログラムも最終”2進数”としてパソコンは理解し、処理を行っている。
・例えば色の表現では、プログラミング上では
FFFFFFなどの16進数の6桁で1677万色を表せれるが、
2進数だと25桁も必要。
開発環境構築
■ターミナル基礎操作
コマンドは基本的にカレントディレクトリ内の操作になる。
$ pwd # カレントディレクトリをフルパスで表示
$ ls # ディレクトリ&ファイル一覧表示
$ cd [ディレクトリ名] # 指定したディレクトリ内に移動する。
$ cd .. # 1つ上の階層に戻る。
$ cd # ホームディレクトリに戻る。
$ mkdir # 空のディレクトリを作成する。
$ touch [ファイル名] # 空ファイルの作成
$ open [ファイル名] # ファイルを開く。
$ ruby [ファイル名] # Rubyにてファイルを実行。
■テキストエディター
VSCodeやAtomなどがあり、様々な拡張機能がある。
(コードの自動整形機能や全角スペースを把握できる機能など)
■Homebrewのインストール
Macにソフトウェアやライブラリをインストールする、
パッケージ管理システム。
Homebrewのインストールには、
Command Line Tools for Xcodeのインストールも必要なので
併せてインストールする。
※シェルがbashではなくzshの場合は、
bash_をzに変換してコマンドを実行してください。
ちなみにシェルとは、人間の入力をコンピューターに伝えるプログラム。
($ echo $SHELL # 自分が使ってるシェルの確認)
## Homebrewインストール時のターミナル操作 ##
$ xcode-select --install # Command Line Tools for Xcodeのインストール
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
# Homebrewのインストール
$ brew doctor # Homebrewが正常にインストールされてるか確認
$ brew update # Homebrewのアップデート
$ brew -v # Homebrewのバージョン確認
$ echo 'export PATH=/usr/local/bin:$PATH' >> .bash_profile
# Homebrewのパスを通す ※後ほど解説
■Rubyのインストール
そのままインストールしてもいいが、案件ごとに使用するバージョンが異なることが多いので、
[rbenv]というバージョン管理ツールを導入
↓
各作業ディレクトリにRubyのインストール
という順番で実行する。
## Rubyインストール時のターミナル操作 ##
$ brew install rbenv ruby-build # rbenvインストール
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# rbenvのパスを通す ※後ほど解説
$ source ~/.bash_profile # シェルの設定ファイルを、ログインし直さず即座に反映
$ rbenv -v # rbenvバージョン確認
ここから先は各プロジェクトフォルダにて行う。(Rubyのインストール)
$ rbenv install --list # インストール可能なRubyのバージョンリスト
$ rbenv install [Rubyバージョン] # 指定したRubyバージョンをインストール
$ rbenv versions # インストール済のRubyのバージョンリスト
$ rbenv local [Rubyバージョン] # 使用するRubyバージョン決定 ※注1
($ rbenv global [Rubyバージョン]) # 使用するRubyバージョン決定 ※注1
$ ruby -v # Rubyのバージョン確認
$ which ruby # どこのRubyを参照してるのか(rbenv経由になってればOK)
※コマンド内の[ ~/ ]は、ホームディレクトリのこと。
(注1)rbnev local &globalについて
global:システム全体で使用するRubyバージョンの指定。
実は、ホームディレクトリの[.rbenv]ディレクトリ内に
[version]ファイルを書き出すだけ。
local:カレントディレクトリ内で使用するRubyバージョンの指定。
実は、カレントディレクトリ内に[.ruby-version]ファイルを
書き出すだけ。
・Rubyのバージョンを決めるrbenvの挙動としては、
カレントディレクトリの[.ruby-version]
↓
その1つ上のディレクトリの[.ruby-version]
↓
その1つ上の・・・
↓
ホームディレクトリまで辿って無ければ
[~/rebenv/version]
最初に見つけたファイルに書かれているバージョンを使う。
つまりホームディレクトリに[.ruby-version]を作ってしまうと、
globalはどこからも参照されなくなる。
パス、環境変数について
・環境変数とは
コンピューター(OS)が動いている時に使える変数。
(例)COMPUTERNAME=MACHAAKI-PC
コンピューター名は[MACHAAKI]
これも環境変数。
プログラミングで使う[変数]と同じ。
・パスについて
プログラミングで「パスを通す」というと、
要は「ファイルやフォルダの置いてある場所+名前」を
コンピューターに教えること。
(例)[/Users/masaaki/ccc/sample.rb] #sample.rbファイルのパス
このパスというものを見てシェル(コンピューター)はアプリケーションを起動する。
$ echo $PATH # パス確認コマンド
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin # 実行結果
これは[:]で区切られていて、これを分解すると
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/sbin
となる。
この検索パスには優先度があり、1番左から順番に検索され
最初に見つかったパスが実行される。
・パスが書き込まれてる場所
では通したパスはどこに書いてあるかというと
#シェルがbashの場合のパス
~/.bash_profile
~/.bashrc
#シェルがzshの場合のパス
~/.zprofile
~/.zshrc
・それぞれの役割
profile:シェルへのログイン時に存在していれば読込まれる設定ファイル。
rc : シェルを起動するたびに読み込まれる設定ファイル。
・結論
環境変数を定義するexport処理(パス)とかは、[profile]に書き込むこと。
[rc]にはalias(エイリアス)や関数を書き込むこと。
とりあえずこれでOK。
※aliasはショートカットみたいなもの。
・書き換えた後について
環境変数PATHを反映させる為に、ターミナルの再起動か
下記コマンドを実行すること。
$ source ~/.bash_profile # bashの場合
$ source ~/.zprofile # zshの場合
スクレイピング
・ウェブサイトから情報を取得し、その情報を加工して新たな情報を生成すること。またの名をWebスクレイピングと言う。
標準ライブラリとgemの違い
・標準ライブラリとは
rubyからコンピューターに2進数で命令処理を実行させるが、
毎回1からプログラムを書くのは大変。
そのために大多数のユーザーがしたい機能(四則演算や文字列の出力など)
はRubyが持っている。
それが標準ライブラリ。
・gemとは
標準ライブラリでは行えない処理をまとめている拡張機能であり、
それをインストールするためのソフトウェア。
(例)nokogiri、grapeなど
gemインストール方法
$ gem install [gem名]
これでRubyGems.orgからインストールを行える。
Gemの機能を使用する時は、ファイル内に
require '[gem名]'
を記載して、呼び出すこと。