OREMATOPEE

プログラミング、気になったこと、メモ書き...etc

個人的に便利なアプリや開発ツールをまとめてみた(開発ツール編)

今回は、「開発ツール編」として筆者がRailsで開発環境を構築するときに導入する開発ツールをまとめてみました。
いつかまたセットアップする機会がきたときに役に立てばいいと思っております!

neovimを使ってRails開発が行えるところまでをゴールとします。

前回のアプリ編もどうぞ

導入するもの

名前 用途
Homebrew パッケージマネージャ
Alfred 万能ランチャーアプリ
白源 フォント
iTerm2 高機能ターミナル
zsh シェル
prezto zsh用コンフィグフレームワーク
neovim エディタ
iceberg テーマ
Git バージョン管理
rbenv Rubyのバージョン管理
Docker 仮想プラットフォーム

Homebrew

MacOSXシステム上でソフトウェアの導入を単純化してくれるパッケージマネージャ。
これで導入したソフトウェア群を、brewfileを用いて他環境へ簡単に移行することが可能です。
必要なものを一カ所に集めてくれるので、管理の手間が省けて便利ですね。
これから記載するものはほとんどこのツールを用いて導入していくので、最初にインストールしておくのが吉。

インストール手順
公式サイトの通り、ターミナル上で下記コマンドを実行するだけです。
Command + SpaceでSpotlight検索を起動して、「Terminal」と入力するとターミナルが起動します。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

途中、パスワードを求められますのでMacにログインしているユーザのパスワードを入力してください。

$ Password:

また、Homebrewは「Command line tools for Xcode」というソフトウェアに依存しており、途中でこのソフトウェアのインストールを求められますので、インストールしてください。
※画像は参考ですが、同じようにソフトウェアアップデートが立ち上がりインストールを求められます。 https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_43096_b5586c82-304a-c2a6-27de-8961ea684e0d.png

以下のように出力されたら完了。
一応doctorコマンドで正常にインストールできたか確認します。

==> Next steps:
- Run `brew help` to get started
- Further documentation:
    https://docs.brew.sh

$ brew doctor
Your system is ready to brew.

Alfred

Alfredはアプリ編に記載したかったのですが、Homebrewを使ってどのような環境であっても必ず持って行きたいアプリなのでこちらに記載しました。
Mac標準のSpotlightと同じようにアプリランチャーとしても働きますし、システムの機能をショートカットから呼出してファイルを一括で編集したり、スニペット登録機能があったり色々な機能があります。
課金すると上記のスニペット登録機能・ファイル操作機能が使えますが、そもそもSpotlightより便利で高機能なので導入しておいて損はないと思います。
筆者は全然使いこなせていないですが、かなり生産性が上がるみたいで少し余裕ができたら学んでいきたいと思っております。

theme@2x.jpg

インストール手順
Homebrewを使ってインストールします。
Homebrewは基本的にCUIをインストールするものなのですが、homebrew-caskという拡張機能を使用することによりGUIをインストールすることが可能となります。

この拡張機能をまず有効にしましょう。 下記のコマンドを実行すると、Homebrewにcaskが追加されます。

$ brew cask

本来はcaskのあとにインストールしたいアプリの名前を入れる必要があり、「Error: Invalid usage: No subcommand given.」と出力されますが、コマンドの実行方法がおかしいってだけでcaskは追加されるので気にしないでください。

その後、Alfredをcaskを介してインストールします。
もちろん上記のcaskのインストールを飛ばしてこちらを実行してもらっても構わないです。

$ brew cask install Alfred
alfred was successfully installed!

Spotlightと同じCommand + Spaceで起動したい場合は、インストール出来たらMacのシステム環境設定→キーボード→ショートカットを開きSpotlightのショートカットを無効化してください。
その後、Alfredを起動してショートカットを変更して導入は完了です。
スクリーンショット 2020-10-22 23.26.53.png

白源

エディタ上で見やすいフォントを色々試したのですが、個人的に一番見やすくてCUI上でアイコンをフォントとして出力するNerd Fontsに対応しているのでおすすめ。
プログラミング用のフォントとして有名なRictyをカスタマイズしているので完成度が高く、今でも定期的に更新され視認性がどんどん上がっていっており、非常に活発なフォントなのであります。
詳しくは作者様の記事をご覧ください。

インストール手順
cask同様にフォント用のHomebrewの拡張機能をインストールして、そちらを介して白源フォントをインストールします。

$ brew tap homebrew/cask-fonts
$ brew cask install font-hackgen-nerd

以降の項目でこちらのフォントは使用しますので、ここでは導入のみにとどめます。
もしお気に入りのフォントがあるなら、cask-fontsをインストール後に下記コマンドでHomebrewで扱われているか調べて、そちらを利用しても構いません。

$ brew search フォント名

iTerm2

Mac標準のターミナルを高機能にしたもの。
後述するエディタ用テーマ「iceberg」が、ターミナルではフルカラー出力に対応しておらず色味が思い通りに表示されなかったので導入した。
以下の記事を見てtmuxを入れなくてもコピーモードで色々できるんだなと思ったのも大きい。

インストール手順
下記を実行してインストール。

$ brew cask install iTerm2

導入はこれでいいですが、例えばダウンロードとかのディレクトリにアクセスしたときにiTermにアクセス許可を与えるかどうかの通知が表示されます。
この通知がいろんなディレクトリにアクセスしたときに表示されるので気になる人は、システム環境設定→セキュリティとプライバシーのフルディスクアクセスにiTerm.appを追加してください。
スクリーンショット 2020-10-23 2.29.59.png

後述するicebergの項で配色に関しては設定しますので、ここではステータスバーとフォントの設定を行います。
まずPreferences→Profileにある+マークで新しいプロファイルを作成しましょう。名前は適当でいいです。筆者は「iceberg」としました。
スクリーンショット 2020-10-24 8.55.22.png

次にTextタブを開き下にあるFontを、先ほど入れた「白源」にします。 スクリーンショット 2020-10-24 9.01.25.png

また、ステータスバーの表示位置がデフォルトでは上なので、Preferences→AppearanceのStatus bar locationで下などに変更できる。 スクリーンショット 2020-10-24 9.34.48.png

Sessionタブに移り、一番下のStatus bar enabledにチェックをつけます。 スクリーンショット 2020-10-24 9.09.07.png

あとはConfigure Status Barボタンを押して表示させたいアイテムをActive Componentsにドラッグして、Advancedで色とフォントの設定を行います。
筆者の場合は、背景色とアイテムの区切り線の色はicebergの背景色と同じ#161821にして、フォントも白源としました。
iMacの場合、バッテリー表示は不要ですがMacbookとかと設定を同期したい場合はつけてもいいかもしれません。) スクリーンショット 2020-10-24 9.12.18.png スクリーンショット 2020-10-24 9.34.13.png

設定できたらOKを押して閉じます。
作ったプロファイルは、左下のOther Actionsを押してデフォルトに設定してください。
その後再起動すると反映されます。 スクリーンショット 2020-10-24 9.38.02.png

また、このプロファイルはOther Actionsで、JSONとしてエクスポートできますので、他のPCでインポートすれば設定を同期できるので覚えておくと便利です。

zsh

Catalinaを使っていたら導入する必要はありませんが、Homebrewで最新バージョンをインストールしてそちらを利用します。

インストール手順
Catalinaの場合、ログインシェルがzshなのでそのコマンドの位置と、バージョンを見ておきます。

$ which zsh
/bin/zsh
$ /bin/zsh --version
zsh 5.7.1

次に、Homebrewを介してzshをインストールしてそれをログインシェルとするために、/etc/shellsをvimで編集します。
パスワードを求められるのでログインユーザーのパスワードを入力してください。

$ brew install zsh
$ sudo vim /etc/shells
Password:

開いたらファイルの一番下に「/usr/local/bin/zsh」を追記して、下記コマンドでシェルを変更します。

$ chsh -s /usr/local/bin/zsh

実行できたらターミナルを再起動。
起動したらもう一度、zshの位置とバージョンを確認して、変更が確認できたら完了です。

$ which zsh
/usr/local/bin/zsh
$ zsh --version
zsh 5.8

prezto

zshrcファイルをあれこれいじるのが面倒な場合、preztoを入れればある程度便利に設定を行ってくれます。
またプロンプトも少しおしゃれにできます。

インストール手順
ターミナルを起動して下記を実行していきます。

# 先に変数を定義してpreztoの配置場所及び、設定ファイルの保存場所を決めておく
$ ZDOTDIR="~/.config/zsh"

# prezto本体をクローンする
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

# 設定ファイルを生成する
$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

# シェルをデフォルトにする
$ chsh -s /usr/local/bin/zsh

# ZDOTDIRの箇所に生成された.zshenvをルートディレクトリに移動し、編集します。
$ mv ~/.config/zsh/.zshenv ~/.zshenv
$ vim .zshenv
# 省略
# 設定ファイル保存先
export ZDOTDIR="$HOME/.config/zsh"

次にpreztoに便利なモジュールを追加します。

$ vim ~/.config/zsh/.zpreztorc

32行目あたりの箇所を編集します。

zstyle ':prezto:load' pmodule ¥
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'completion' \
  'syntax-highlighting' \ # これを追加
  'autosuggestions' \ # これも追加
  'prompt'

シェルを再起動すれば完了。

neovim

vimを拡張した派生エディタ。
JetbrainsなどのIDEVSCODEとこれが現時点で最良の選択なのかなーっと思ってます。
正直、あれこれカスタマイズしてメンテナンスしていかないといけないので、それらが一番楽なのはIDEです。
ただVimの操作ってすごい楽なんですよね。で、IDEVSCODEもそれらのメリットを享受できるけど、完璧じゃないんです。
ここはもう好みの問題だとは思いますが。

インストール手順
下記コマンドを実行。

$ brew install nvim

インストール自体は完了しており、続けて設定ファイルを作成する。

$ mkdir ~/.config/nvim
$ touch ~/.config/nvim/dein.toml
$ touch ~/.config/nvim/dein_lazy.toml
$ touch ~/.config/nvim/init.vim
$ vi ~/.config/nvim/init.vim

作成したら設定を色々編集していくのだが、dein.vimを導入し、最低限のものをまとめたのが以下になる。
dein.vimプラグインマネージャで、vim拡張機能をもたらすモジュールを一括管理してくれる。
以下のように書き換えて、再度neovimを起動したら自動的にインストールしてくれる。
エラーなどは気にしなくてよい。

" dein.vim settings
let s:dein_dir = expand('~/.cache/dein')
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim' 
" dein installation check
if &runtimepath !~# '/dein.vim'
  if !isdirectory(s:dein_repo_dir)
    execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
  endif
  execute 'set runtimepath^=' . s:dein_repo_dir
endif

" begin settings
if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir) 
  " .toml file
  let s:rc_dir = expand('~/.config/nvim')
  if !isdirectory(s:rc_dir)
    call mkdir(s:rc_dir, 'p')
  endif
  let s:toml = s:rc_dir . '/dein.toml'
  let s:lazytoml = s:rc_dir . '/dein_lazy.toml'

  " read toml and cache
  call dein#load_toml(s:toml, {'lazy': 0})
  call dein#load_toml(s:lazytoml, {'lazy': 1})

  " end settings
  call dein#end()
  call dein#save_state()
endif

" plugin installation check
if dein#check_install()
  call dein#install()
endif

" plugin remove check
let s:removed_plugins = dein#check_clean()
if len(s:removed_plugins) > 0
  call map(s:removed_plugins, "delete(v:val, 'rf')")
  call dein#recache_runtimepath()
endif

filetype plugin indent on
syntax enable

" リーダーキーの変更
let mapleader = "\<Space>"

colorscheme iceberg
set termguicolors
set encoding=utf-8
set nrformats=
set tabstop=2
set softtabstop=2
set shiftwidth=2
set expandtab
set autoindent
set smartindent
set nobackup
set noswapfile
set clipboard&
set clipboard^=unnamed
set number
set norelativenumber
set title
set nocursorline
set list
set listchars=tab:\|\ ,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
set showmatch
set matchtime=1
set hlsearch
set whichwrap=b,s,<,>,[,]
set tags=./tags;
set completeopt=menuone,noinsert
set viminfo+=n~/.config/nvim/.viminfo

" j,kキーで表示行移動
nnoremap <silent> k gk
nnoremap <silent> gk k
nnoremap <silent> j gj
nnoremap <silent> gj j

" 折り返し移動
set whichwrap=b,s,<,>,[,]

" 補完のEnterでは挿入しない
inoremap <expr><CR> pumvisible() ? "<C-e>" : "<CR>"

iceberg

色々テーマはあるが、寒色で目に優しい配色が気に入っている。
公式サイトを見て気に入ったら使ってみてほしい。

インストール手順
iTerm2とneovimそれぞれに導入していく。
まずはneovim。

dein.tomlを開いて、icebergを追加。
ほかにdein.vim自体と、vimのステータスバーを格好良くするairlineを追加。

vi ~/.config/nvim/dein.toml
[[plugins]]
repo = 'Shougo/dein.vim'

[[plugins]]
repo = 'cocopon/iceberg.vim'

[[plugins]]
repo = 'vim-airline/vim-airline'

その後、neovimを起動したら自動的にインストールされる。

次にiTerm2の設定をしていく。
vimでiTermのカラー設定用ファイルを作成して、以下の記述通りに保存する。

$ vi iceberg.itermcolors

長いので省略

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Ansi 0 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.12941177189350128</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.094117648899555206</real>
        <key>Red Component</key>
        <real>0.086274512112140656</real>
    </dict>
    <key>Ansi 1 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.47058823704719543</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.47058823704719543</real>
        <key>Red Component</key>
        <real>0.88627451658248901</real>
    </dict>
    <key>Ansi 10 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.55686277151107788</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.7921568751335144</real>
        <key>Red Component</key>
        <real>0.75294119119644165</real>
    </dict>
    <key>Ansi 11 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.5372549295425415</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.69411766529083252</real>
        <key>Red Component</key>
        <real>0.91372549533843994</real>
    </dict>
    <key>Ansi 12 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.81960785388946533</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.67450982332229614</real>
        <key>Red Component</key>
        <real>0.56862747669219971</real>
    </dict>
    <key>Ansi 13 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.82745099067687988</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.62745100259780884</real>
        <key>Red Component</key>
        <real>0.67843139171600342</real>
    </dict>
    <key>Ansi 14 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.80784314870834351</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.76862746477127075</real>
        <key>Red Component</key>
        <real>0.58431375026702881</real>
    </dict>
    <key>Ansi 15 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.87058824300765991</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.83137255907058716</real>
        <key>Red Component</key>
        <real>0.82352942228317261</real>
    </dict>
    <key>Ansi 2 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.50980395078659058</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.7450980544090271</real>
        <key>Red Component</key>
        <real>0.70588237047195435</real>
    </dict>
    <key>Ansi 3 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.47058823704719543</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.64313727617263794</real>
        <key>Red Component</key>
        <real>0.88627451658248901</real>
    </dict>
    <key>Ansi 4 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.7764706015586853</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.62745100259780884</real>
        <key>Red Component</key>
        <real>0.51764708757400513</real>
    </dict>
    <key>Ansi 5 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.78039216995239258</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.57647061347961426</real>
        <key>Red Component</key>
        <real>0.62745100259780884</real>
    </dict>
    <key>Ansi 6 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.7607843279838562</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.72156864404678345</real>
        <key>Red Component</key>
        <real>0.5372549295425415</real>
    </dict>
    <key>Ansi 7 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.81960785388946533</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.78431373834609985</real>
        <key>Red Component</key>
        <real>0.7764706015586853</real>
    </dict>
    <key>Ansi 8 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.5372549295425415</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.43921568989753723</real>
        <key>Red Component</key>
        <real>0.41960784792900085</real>
    </dict>
    <key>Ansi 9 Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.5372549295425415</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.5372549295425415</real>
        <key>Red Component</key>
        <real>0.91372549533843994</real>
    </dict>
    <key>Background Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.12941177189350128</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.094117648899555206</real>
        <key>Red Component</key>
        <real>0.086274512112140656</real>
    </dict>
    <key>Badge Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>0.5</real>
        <key>Blue Component</key>
        <real>0.0</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.1491314172744751</real>
        <key>Red Component</key>
        <real>1</real>
    </dict>
    <key>Bold Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.87843137979507446</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.70980393886566162</real>
        <key>Red Component</key>
        <real>0.54901963472366333</real>
    </dict>
    <key>Cursor Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.81960785388946533</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.78431373834609985</real>
        <key>Red Component</key>
        <real>0.7764706015586853</real>
    </dict>
    <key>Cursor Guide Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>0.25</real>
        <key>Blue Component</key>
        <real>1</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.9268307089805603</real>
        <key>Red Component</key>
        <real>0.70213186740875244</real>
    </dict>
    <key>Cursor Text Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>1</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>1</real>
        <key>Red Component</key>
        <real>0.99607843160629272</real>
    </dict>
    <key>Foreground Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.81960785388946533</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.78431373834609985</real>
        <key>Red Component</key>
        <real>0.7764706015586853</real>
    </dict>
    <key>Link Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.73423302173614502</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.35916060209274292</real>
        <key>Red Component</key>
        <real>0.0</real>
    </dict>
    <key>Selected Text Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.81960785388946533</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.78431373834609985</real>
        <key>Red Component</key>
        <real>0.7764706015586853</real>
    </dict>
    <key>Selection Color</key>
    <dict>
        <key>Alpha Component</key>
        <real>1</real>
        <key>Blue Component</key>
        <real>0.25882354378700256</real>
        <key>Color Space</key>
        <string>sRGB</string>
        <key>Green Component</key>
        <real>0.17254902422428131</real>
        <key>Red Component</key>
        <real>0.15294118225574493</real>
    </dict>
</dict>
</plist>

このファイルをiTermのPreferences→Profile→Color Presetsでインポートを行うと適用される。 スクリーンショット 2020-10-25 20.59.20.png

Git

ソースコードなどの変更履歴を追跡できるバージョン管理システム

インストール手順
Homebrew経由でインストールします。
まず元から入っているgitのバージョンを調べて、Homebrewでインストールします。

$ git --version
git version 2.24.3(Apple git-128)

$ brew install git

このままでは元からMacに入っているgitが使われてしまうので、パスを通します。

$ vim ~/.config/zsh/.zshrc
export PATH="/usr/local/bin/git:$PATH"

一度ターミナルを再起動して、gitのバージョンが変わっていれば成功です。

$ git --version
git version 2.29.1

rbenv

Rubyのバージョンを切り替えたり、管理することが簡単にできます。
とりあえず入れておいて損はない。

インストール手順
Homebrewでインストール。

$ brew install rbenv
$ rbenv -v
1.1.2

次にパスを通します。
またRBENV_ROOT変数にrbenvのshimsとversionsがあるディレクトリの位置を指定します。
最後のrbenv initは必須です。

$ vim ~/.config/zsh/.zshrc
export RBENV_ROOT="~/.local/share/rbenv"
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

次にこのrbenvを通してRubyをインストールします。

# 下記コマンドでインストール可能なRubyのバージョンが一覧で見られます
$ rbenv install -l

# バージョンを決めたらインストールします
$ rbenv install 2.7.2

# インストールしたバージョンを実行可能にします
$ rbenv global 2.7.2

# 下記コマンドを実行して、指定したバージョンにアスタリスクがついていたらおk
$ rbenv versions
  system
* 2.7.2

Docker

仮想環境で開発を行うプラットフォームを提供するツール。

インストール手順
以下からDocker for Macをダウンロードしてインストールする。
公式サイト

まとめ

最終的にこのようになります。 スクリーンショット 2020-10-27 0.06.59.png

Dockerを使って実際に仮想環境を作成する方法は、以下の記事を参考にしてください。

Vimの他のプラグインや、細かい設定は省いていますがここは個人の好みが含まれるため、色々設定してみるといいかもしれません。
筆者もまだ試している状態なので、揃ってきたら記事にしたいと思います。

最後までお読みいただきありがとうございました!