読者です 読者をやめる 読者になる 読者になる

キモく生きよう

自己顕示欲の塊がキモくても個性出していくためのブログ

【初心者向け】Macにモダンなコマンドライン環境を構築【準備編】

僕「シェルなに使ってる?」
友達1「bashだけど?」
僕「そうですか...」

僕「シェルなに使ってる?」
友達2「シェル? なにそれ?」
僕「...いやなんでもない」

僕「シェルなに使ってる?」
友達3「は? 知識自慢かよキメえ死ね」
僕「」

僕「シェルなに使ってますか?」
Vimmer「もちろんzsh!」
僕「マジっすか!流石っすね!」


もちろんこんな会話はしたことないキンチキです。

僕が就活中、とある企業がエンジニア志望の学生に座談会+タダ焼肉というものを開催してて、僕は99%タダ焼肉目的で参加しました。 そこで学生の名札に名前と好きなエディタと好きなテクノロジーという宗教戦争が起こりかねない欄がありまして、僕はガッツリ開発してるわけでもないのでエディタにSublime Text、テクノロジーにzshと書いてました。

そこで自己紹介のときに「zsh使っている人いますか」という質問したら、学生12人いて手を挙げたのはなんと1人だけ! おいおい嘘だろ...エディタにVimEmacsと書いてる学生が3,4人はいたのに、テクノロジーですごそうなこと言ってる学生はたくさんいたのに、それなのにzsh使ってる学生は1人だけだと...

ということで、今回はMaczsh と Prezto というものを入れてコマンドラインを快適にしようという記事です。 情報系の学生やエンジニアの方々は日頃からコマンドライン使ってると思いますが「シェル?なにそれ?」って学生やbashを使っている人は結構いると思います。 そんなあなたに最強のシェルであるzshとそのフレームワークであるPreztoを布教します。

ちなみにその座談会のときはPreztoではなくまだ oh-my-zsh を使っていました。


LinuxMacはデフォルトのシェルがbashなんですが、間違いなくzshの方が快適です。 コマンドラインを頻繁に使わなくてもとりあえずzshにしておくべきです。 僕もコマンドラインはそこまで使わないのですが、zshにしてかなり快適になりました。 エンジニアたるもの便利にできるものはガンガン使っていきましょう。

Windowsの方はネイティブでbashが使えるようになるのを指をくわえて待ってるか、Cygwinなど入れるか、Mac買うなりLinuxインストールするなりしてください。


手っ取り早く終わらせたい人

ターミナルのテーマとかzshのバージョンとかそんなんどーでもいいわ!って人は Command Line Tools(git) さえ入れてもらったらあとは PreztoのREADME の通り以下の作業だけで終わりです。

$ zsh

$ 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 /bin/zsh

早い!

【初心者向け】とは

Preztoにかんする記事はOiitaや個人ブログに幾つもあるんですが、僕は以下の記事でこんなこと言っちゃってます。

kinchiki-it.hatenablog.jp

ていうかすでにある情報をほとんど同じ内容で紹介するのって意味なくないですか? もうあるんだったらそのサイトを紹介すればいいだけですよね? 自分も書いて「アクセス数や広告費稼ぎたいいいいい」とかなんですかね? かなり無駄ですね。


だからできるだけ丁寧な説明と大量の参考記事で差別化しました。

僕が参考として挙げてるページとかもそうなんですけど、環境構築の手順とかでコマンドの羅列ばっかで説明が少ないものって多いじゃないですか? それだと何やってるか中々分からなくてしんどいですし、身に付きにくいと思います。 【初心者向け】ということで、他の解説記事などで普通は説明してないようなこともできるだけ説明して、初心者でも何やってるかが分かるようにしてるつもりです。

...ほんとは分からないことは適宜自分で調べて身に付けていくのが一番だと思いますが。

ただ、ターミナルの開き方すら分からない、ターミナルってなに? ってレベルだと流石に厳しいため、そういう人はもうちょいMacコマンドラインに慣れてからまたこの記事見てください。

f:id:kinchiki:20160714033151p:plain

超初心者用に超初歩的な説明だけすると、コマンドを入力とか打つとか叩くとかいうのはMacに標準で入っているターミナルというアプリに入力してEnter押すことです。

$ echo $path

この場合 echo $path がコマンドで、先頭にある $ > % # といった記号はプロンプトと呼ばれる入力待ちを表すものなので、これらの記号は入力しないでください。 記号のあとに続くものがコマンドです。 そしてコマンドが実行し終わるまではプロンプトは表示されませんので、次のコマンドは打たずに待ちましょう。 あとコマンドはどうせ打ち間違えるので自分で打つよりコピペした方がいいです。

Xcodeのダウンロードは当然として、Homebrew動かす時や git clone する時などはネットに繋がっている状態じゃないと無理です。


この記事では準備段階としてXcodeとCommand Line ToolsとHomebrewを導入するだけですのでそんなんもう入ってるに決まってんだろ!って方は次の記事まで進んでください。

kinchiki-it.hatenablog.jp


【以下注意点】

参考にした記事を最後にまとめて紹介するのはなんかズルいと思うので、その都度紹介していきます。

この記事はMac OS X El Capitan(10.11)を想定しています。 バージョンが異なっても問題なくできると思いますが、できなくても知りません。 できなかったときは周りのデキる人に頼るか、ググりまくりましょう!

シェル、コマンドライン、コンソール、ターミナルといった違いが分かりづらい言葉は僕の理解で使い分けています。 ここでのターミナルは端末という意味ではなく主にMacのTerminal.appとして使っています。

僕はシェルなどに全然詳しくないため、間違っている箇所などありましたらドンドンコメントなどで指摘してください。

ターミナルの見た目

Macでターミナルを初めて開いた人は驚愕するでしょう。

f:id:kinchiki:20160713222456p:plain

なんで白背景なんだ!!!

ありえない...
黒い画面で有名なコンソールが白いとかマジでありえない。 ていうかめちゃくちゃ見づらいしダサいし目に悪い。 Windowsコマンドプロンプトですら最初から黒背景なのにAppleは一体何を考えているのか...

こんなありえない色は今すぐ変えましょう。 他のアプリ同様環境設定から設定は変えられます。 ただここで変えられるのは「ターミナル」というアプリ自体の設定で、シェルと呼ばれるコマンドラインで動いているものの設定は変えられません。

メニューバーの ターミナル→環境設定 か ⌘+, で環境設定を開きます。 見た目はプロファイルで変えます。

f:id:kinchiki:20160713222409p:plain

最初から幾つか用意されてますが、ここではとりあえず一番普通なProにしておきましょう。 Proにカーソル合わせて左下のデフォルトを押してデフォルトとなったら、次回からProのウィンドウが開きます。

Proもフォントとカーソルが微妙なので変えることを勧めます。 フォントはMacに最初から入っているコーディング用フォントで多分一番良いMenloに、カーソルはどこにあるかが分かりやすい垂直バーがオススメです。 フォントサイズやカーソルの点滅はあなたの好みにしましょう。 まあフォントも色も全部個人の好みなんですが。

Pro以外はキモいテーマばっか(特にBasic)なので左下にある "-" を押して消しまくりましょう。 デフォルトプロファイルは復元できますし、どうせ二度と使わないでしょうから心配せずドンドン消しちゃってください。

自分でイケてるテーマを作ってもいいのですが、そんなことするよりもライブラリやフレームワークを使うように先人が作ったイケてるテーマを落とした方が楽かつ出来が良いです。 多分次の記事でイケてるテーマやフォントの導入方法やイケてるターミナルアプリのiTerm2とかも紹介します。

XcodeとCommand Line Toolsの導入

まずMacXcodeとCommand Line Toolsをインストールしないと話になりません。 XcodeiOSMacのアプリを作るためのApple謹製IDEで、C/C++などもたしかデフォルトで対応しています。

大体の主要な言語はシンタックスハイライトと入力補完が効くため、単純にエディタとしても使えます。 もちろんIDEなのでエディタと比べると起動にかかる時間は雲泥の差ですが。

そんでXcodeにはCommand Line Toolsというものがあるのですが、これがMacで開発するためには必須も必須、マジ必須です。 コマンドラインでゴニョゴニョやるためのコマンド類が入っており、これが無いとこの先でインストールしようとするものも失敗したりします。

余談ですが、僕はCommand Line Tools(とXcode?)のバージョンアップを怠っており、Railsでnokogiriがインストールできないという定番?の事態が起こりめちゃくちゃ時間を使いました。 その時のトラウマで今でも bundle install でnokogiriのとこまでくると失敗するんじゃないかとドキドキします。


「初心者でも何やってるかが分かるように説明していきます」 と書いたばかりですが、ここをわざわざ説明するのはめんどいので入れ方は以下の記事とか参考にしてください。 今やるのはXcodeとCommand Line Toolsにかんすることだけでいいです。 Xcodeはサイズがバカでかいのでインストール自体は時間かかりますが、難しい作業は一切ないです。

qiita.com

vdeep.net

qiita.com


一応簡単な説明だけすると

  1. App StoreからXcodeインストール
  2. Xcode起動するか sudo xcodebuild -licenseagree でライセンスに同意
  3. xcode-select --install でCommand Line Toolsインストール

いずれ気が向いたらここも自分で説明します。

Homebrewの導入

次にMacのパッケージマネージャ(パッケージ管理システム)の一つであるHomebrewを入れます。

パッケージマネージャとは色々なパッケージの依存関係とかを上手いことやってインストールやアンインストールしてくれる奴です。 詳しい説明はWikipediaのパッケージ管理システムでも見てください。

DebianUbuntuapt [なんちゃら]CentOSyum [なんちゃら] といったコマンドを見たことある人は多いんじゃないでしょうか? ああいうのはパッケージマネージャのコマンドです。 MacのパッケージマネージャだとHomebrewが多分一番有名で、他にはMacportsFinkとかがあります。


参考記事はXcodeのとこで紹介したものと以下の記事です。 こちらは使い方や詳しい説明も載っているため、一度目を通しておくことを勧めます。

millkeyweb.com


最初に以下の公式ページに載っているコマンドを入力してください。

Homebrew — OS X 用パッケージマネージャー
http://brew.sh/index_ja.html

一応ここにもコマンドを載せておきますが、もしかしたら将来変わるかもしれないので公式ページからコピーしてください。

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

このコマンドは /usr/bin というディレクトリにある ruby をeオプションを付けて実行しています。 Rubyは基本 ruby <ファイル名> で実行しますが他にも幾つか実行方法があり、eオプションを付けることにより "" に囲まれたコードを実行することができます。 curl はURLからダウンロードしたりするシェルのコマンドです。 まず curlhttps://raw.githubusercontent.com/Homebrew/install/master/installRubyのプログラムを "" の中に引っ張ってきてeオプションで直接実行しています...多分。

コマンドを入力すると

Press RETURN to continue or any other key to abort

と聞かれるらしいのでEnterを押します。 そしたらつぎはパスワードを聞かれるらしいのでパスワードを入力してEnterを押します。 キー打っても何も表示されませんが、しっかり入力されているので安心してください。 もし打ち間違えたと思ったら delete 連打するか control+u してから打ち直してください。

コマンドラインでのパスワードはApple IDのものではなくMacのユーザーのものです。 今までにシステム環境設定でパスワードを変更していたら、変更後のパスワードを入力してください。もし一度も変更していなければApple IDのパスワードを入力すればよかったと思います。

インストールが完了したら

==> Installation successfull!
==> Next steps
Run 'brew help' to get started

と表示されるらしいので言われるがまま

$ brew help

と入力して説明が出てきたらOKです。

f:id:kinchiki:20160714012525p:plain


El Capitanだと /usr 以下のパーミッション(権限)によりHomebrew関連でエラーが発生することがあります。 参考記事はこちらなど。

qiita.com

/usr/local がある場合のみ説明します。 ない場合は参考記事を見てください。

ファイルやディレクトリにはオーナー(所有者)とグループ毎にパーミッションがあります。 「オーナーは読み書き実行できるけどグループは読みと実行しかできない」といった感じです。 パーミッションとオーナーとグループは ls に lオプションを付けた ls -l をすると確認できます。 詳しく知りたい方は chmodchownls でググッてください。

El Captionでエラーが発生した時は以下のコマンドを入力します。

$ sudo chown $(whoami):admin /usr/local && sudo chown -R $(whoami):admin /usr/local

このコマンドは sudo というスーパーユーザー(管理者権限)で実行するためのコマンドを最初に付けて chown というファイルやディレクトリのオーナーを変更するコマンドを二つ実行します。

一つ目の chownusr/local ディレクトリのオーナーを $(whoami) 、グループを admin に変更します。
&& は前のコマンドが正常に終了したら後のコマンドを実行します。
二つ目の chown はRオプションで /usr/local ディレクトリにある全てのファイルとディレクトリのオーナーを $(whoami) 、グループを admin に変更します。

$(whoami)というのは(シェル?)変数であなたのユーザー名です。"Who are me ?" ですかね?

$ echo $(whoami)

echo という画面に出力するコマンドで $(whoami) の中身を確認できます。

zsh & Prezto

長くなったので肝心のzshとPreztoは別記事にしてあります。

続きはこちら

kinchiki-it.hatenablog.jp