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名]'

を記載して、呼び出すこと。

いいなと思ったら応援しよう!