それゆけ!ターミナル部 第1回 ゼロから始めるターミナル生活 〜開発環境の構築〜
skill

それゆけ!ターミナル部 第1回 ゼロから始めるターミナル生活 〜開発環境の構築〜

2016.10.19

みなさんこんにちは。ターミナル部 部長のタナカトモフミです。

突然ですがソフトウェアエンジニアのみなさんであれば日頃ターミナルを使う機会が必ずあるのではないかと思います。しかしターミナルをきちんと使いこなせているでしょうか?無駄なコマンドを入力していたりしないでしょうか?ターミナルを使用する場面が多ければ多いほど、きちんと使いこなせば作業効率は何倍にも向上するはずです。

本連載では意外と見落としがちな基本的な事柄からちょっとマニアックなテクニックまで、ターミナルを使いこなすための方法を若手エンジニアのタミ夫くんとシェルスキー先生と一緒に学んでいきたいと思います。作業環境としてはmac os xを想定していますが、環境構築やコマンドのインストールなど一部を除けばlinux上でもそのまま適用することができます。

それではターミナル部へようこそ!

タナカトモフミ

タミ夫くんがターミナルで作業をしているのですが、
なにやら困っているようです。

あれ?おかしいな…コマンドがないなー。

どうしたんじゃ?

このWeb記事の通り、コマンドを打ってるんですけど、なんか動かないんスよー。。。

そのコマンド、インストールされてないんじゃないかのう?

え、自分で入れないと使えないんスか?インストーラどこスかー?

インストーラて。開発向けのツールは、Macなら最近は Homebrewを使ってインストール・管理するのが一般的じゃよ。

えー!?そうなんスかぁー?やばいっスねー。早く言ってくださいよー。すぐもったいぶっちゃってー。

お、おう…。(なんかこの子ちょっと怖いのぅ)

Homebrewとは?

Homebrewは Mac OS X用のパッケージマネージャーです。UNIX環境でよく使われる開発ツールやライブラリといったパッケージを簡単にインストール・アップデートができるようになります。オープンソースで開発されており、有志によって大量のパッケージが準備されているため、ほとんど主要な開発ツールを揃えることができます。

Homebrewをインストールしよう!

Homebrewのインストールは非常に簡単です。ターミナルを起動して以下のコマンドを実行しましょう。

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

基本的に自動でインストールされますが、途中でいつくかの操作が必要になるので注意してください。以下のメッセージが表示されたら、エンターキーを押下して先に進みます。

press return to continue or any other key to abort

以下のメッセージが表示されたら、macにログインする際のパスワードを入力します。

to proceed, enter your password, or type ctrl-c to abort.

password:

途中でHomebrewの動作に必要な Xcodeも自動的にインストールされます。楽チンですね。

downloaded command line tools (os x 10.11) for xcode
installing command line tools (os x 10.11) for xcode
done with command line tools (os x 10.11) for xcode
done.

これで準備完了です。インストール方法や途中の操作は変更になる可能性があります。うまくいかないなと思ったら、本家のサイトに従ってインストールしましょう。
[Homebrew 公式HP http://brew.sh/]

Homebrewの使い方

パッケージのインストール

早速、Homebrewを使用してパッケージのインストールや検索の方法を覚えましょう。

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

$ brew install package_name

wgetをインストールしたい場合は、以下のようになります。

$ brew install wget

複数のパッケージをまとめてインストールしたい場合はパッケージをスペース区切りで複数指定することもできます。

$ brew install wget vim

Homebrewでインストールしたパッケージがどこにインストールされるか、確認しておきましょう。

$ which wget
/usr/local/bin/wget

$ ls -l bin/wget
lrwxr-xr-x 1 tanacasino admin 28 8 14 00:52 bin/wget -> ../cellar/wget/1.18/bin/wget

$ find cellar -type d -depth 3
cellar/openssl/1.0.2h_1/bin
cellar/openssl/1.0.2h_1/include
cellar/openssl/1.0.2h_1/lib
cellar/openssl/1.0.2h_1/share
cellar/wget/1.18/bin
cellar/wget/1.18/share

Homebrewでは/usr/local/Cellarにパッケージがインストールされるようになっています。さらにパッケージ名のディレクトリ配下は、バージョン番号で区切られており、複数のバージョンが保持できるようになっています。最新のパッケージにアップグレードして調子が悪いなんて時にも、すぐに切り戻すことができるため安心して使用できます。

パッケージの検索と詳細情報の閲覧

パッケージの検索にはbrew search PACKAGE_NAMEを使用します。

$ brew search mysql
automysqlbackup mysql++ mysql-connector-c mysql-sandbox mysqltuner
mysql mysql-cluster mysql-connector-c++ mysql-search-replace
homebrew/php/php53-mysqlnd_ms homebrew/versions/mysql55
caskroom/cask/mysqlworkbench
homebrew/php/php54-mysqlnd_ms homebrew/versions/mysql56
caskroom/cask/navicat-for-mysql
homebrew/php/php55-mysqlnd_ms caskroom/cask/mysql-connector-python
caskroom/cask/sqlpro-for-mysql
homebrew/php/php56-mysqlnd_ms caskroom/cask/mysql-utilities

さらにパッケージの詳細情報を閲覧するにはbrew info PACKAGE_NAMEを使用します。

$ brew info mysql
mysql: stable 5.7.14 (bottled)
open source relational database management system
https://dev.mysql.com/doc/refman/5.7/en/
conflicts with: mariadb, mariadb-connector-c, mysql-cluster, mysql-connector-c, percona-server
not installed
from: https://github.com/homebrew/homebrew-core/blob/master/formula/mysql.rb
==> dependencies
build: cmake ✘
required: openssl ✔
==> options
--with-archive-storage-engine
 compile with the archive storage engine enabled
--with-blackhole-storage-engine
 compile with the blackhole storage engine enabled
--with-debug
 build with debug support
--with-embedded
 build the embedded server
--with-local-infile
 build with local infile loading support
--with-test
 build with unit tests
==> caveats
we've installed your mysql database without a root password. to secure it run:
 mysql_secure_installation

to connect run:
 mysql -uroot

to have launchd start mysql now and restart at login:
 brew services start mysql
or, if you don't want/need a background service you can just run:
 mysql.server start

どのバージョンがインストールされるのか?依存するパッケージ、コンパイル時のオプションが表示されます。

パッケージのアップグレード

パッケージを最新版にアップグレードする手順は2段階あります。1つ目はパッケージの一覧情報を最新のものにするbrew updateコマンド、2つ目は実際にパッケージを最新版にするbrew upgrade PACKAGE_NAMEコマンドです。パッケージを特に指定しない場合はインストール済みのすべてのパッケージがアップグレード対象となります。

$ brew update

# インストール済みのすべてのパッケージをアップグレードする
$ brew upgrade

サービス系のパッケージの管理

brew servicesコマンドを使用すれば、mysqlやredis,memcachedといったデーモンサービスの起動・停止も管理できます。

# 起動
$ brew services start memcached
==> successfully started `memcached` (label: homebrew.mxcl.memcached)

# 停止
$ brew services stop memcached
stopping `memcached`... (might take a while)
==> successfully stopped `memcached` (label: homebrew.mxcl.memcached)

# 再起動
$ brew services restart memcached
stopping `memcached`... (might take a while)
==> successfully stopped `memcached` (label: homebrew.mxcl.memcached)
==> successfully started `memcached` (label: homebrew.mxcl.memcached)

パッケージのバージョン管理

パッケージのインストールで説明したように、Homebrewでは同じパッケージの複数のバージョンを保持することができます。これを切り替える際に使用するコマンドがbrew switch PACKAGE_NAME VERSIONです。パッケージのアップグレード等で調子が悪くなった、パッケージを簡単に元に戻すことができます。

# インストールされているバージョンの一覧を表示する
# 末尾に * の記号がついているバージョンが現在使用されているバージョン
$ brew info wget
wget: stable 1.18 (bottled), head
internet file retriever
https://www.gnu.org/software/wget/
/usr/local/cellar/wget/1.16.3 (9 files, 1.5m)
 poured from bottle on 2015-03-10 at 05:22:44
/usr/local/cellar/wget/1.17 (9 files, 1.5m)
 poured from bottle on 2015-11-17 at 03:24:04
/usr/local/cellar/wget/1.17.1 (9 files, 1.5m)
 poured from bottle on 2016-01-08 at 11:13:06
/usr/local/cellar/wget/1.18 (9 files, 1.6m) *
 poured from bottle on 2016-06-14 at 18:28:13
... 省略


# 切り替える
$ brew switch wget 1.17.1


# 切り替わったことを確認
$ wget --version
gnu wget 1.17.1 built on darwin15.2.0.

# 元に戻す
$ brew switch wget 1.18

# 元に戻ったことを確認
$ wget --version
gnu wget 1.18 built on darwin15.5.0.

また、brew upgradeにより、パッケージがアップグレードされないように、`brew pin PACKAGE_NAME`を使用してバージョンを固定することもできます。

# アップグレードされないように固定する
$ brew pin wget

# 固定されているパッケージのリストを出す
$ brew list --pinned --versions
wget 1.18

# 固定を外す
$ brew unpin wget

使い方がわからない時のhelpを覚えておこう

installやservicesなど多様なコマンドがありますので、使い方をすべて覚えるのは難しいでしょう。思い出せなくて困った時は、ググるのも良いですが、以下のコマンドを覚えておけばグッとトラブルの解決が楽になります!

# 1. brew コマンドのサブコマンドすら思い出せなくなった時に使う
$ man brew

# 2. brew のサブコマンドの使い方を知りたい時に使う
$ brew help sub_command
$ brew help upgrade
brew upgrade [install-options] [--cleanup] [--fetch-head] [formulae]:
 upgrade outdated, unpinned brews.

 options for the install command are also valid here.

 if --cleanup is specified then remove previously installed formula version(s).

 if --fetch-head is passed, fetch the upstream repository to detect if
 the head installation of the formula is outdated. otherwise, the
 repository's head will be checked for updates when a new stable or devel
 version has been released.

 if formulae are given, upgrade only the specified brews (but do so even
 if they are pinned; see pin, unpin).

Homebrew Caskを使ってアプリを
インストールしよう

Homebrew Caskを使用すれば、Mac向けのアプリもインストールできるようになります。
WebブラウザやIDEなどのアプリがインストールできますので、新しいMacのセットアップなどで大変便利です。以下のコマンドで使用できるようになります。

$ brew tap caskroom/cask
==> tapping caskroom/cask
cloning into '/usr/local/library/taps/caskroom/homebrew-cask'...
remote: counting objects: 3798, done.
remote: compressing objects: 100% (3747/3747), done.
remote: total 3798 (delta 90), reused 493 (delta 33), pack-reused 0
receiving objects: 100% (3798/3798), 6.52 mib | 544.00 kib/s, done.
resolving deltas: 100% (90/90), done.
checking connectivity... done.
tapped 1 formula (3,767 files, 15.4m)

たとえばWebブラウザのGoogle Chromeをインストールすることができます。

$ brew cask install google-chrome
==> creating caskroom at /usr/local/caskroom
==> satisfying dependencies
complete
==> downloading https://dl.google.com/chrome/mac/stable/ggro/googlechrome.dmg
######################################################################## 100.0%
==> no checksum defined for cask google-chrome, skipping verification
==> moving app 'google chrome.app' to '/applications/google chrome.app'
google-chrome was successfully installed!

注意点

よくあるハマりポイントを2点紹介しますので、遭遇したら参考にしてください。

1. brew searchできなくなる
検索をやりすぎた場合など、GitHubのAPIの制限にかかりエラーとなる場合があります。(Homebrewはsearchの仕組み上GitHubのAPIを呼んでいます)GitHubにログインして、Access Tokenを生成し、HOMEBREW_GITHUB_API_TOKENという環境変数に値を設定すれば使えるようになります。
2. xcodeが必要と言われる
Homebrewインストール時に、最低限必要なXcode Command Line Toolsはインストールされますが、それだけではインストールができないパッケージが存在します。以下のようなメッセージがでた場合は、App StoreのアプリからXCodeをインストールしてから、再度インストールしましょう。

$ brew install macvim --with-override-system-vim
macvim: a full installation of xcode.app is required to compile this software.
installing just the command line tools is not sufficient.
xcode can be installed from the app store.
error: an unsatisfied requirement failed this build.

ちなみにHomebrewからXCodeをインストールしようとすると以下のようになります。おとなしくApp Storeからインストールしましょう。

$ brew install xcode
error: no available formula with the name "xcode"
xcode can be installed from the app store.

またインストール後もXCodeを起動してライセンスに同意していない場合は以下のようなエラーがでる場合があります。

$ brew install macvim --with-override-system-vim --with-lua
error: you have not agreed to the xcode license. please resolve this by running:
 sudo xcodebuild -license

XCodeを起動してライセンスに同意するか、上のエラーで推奨されているコマンドを使って同意しましょう。

まとめ

どうじゃ、わかったかの?

やばいッス。めっちゃ動いたッス。

ちなみに何をインストールしようとしてたんじゃ?

wgetッスね!ないとこのサンプルが動かなくて。

ふ、ふーん。(あ、それcurlで代用できそうじゃからHomebrewいらなかったんでは・・・)

あとgitのサブコマンドのworktreeって奴が使えなくて困ってたんスけど、Homebrewで最新版入れたら使えるようになったッス!やばいッス!

おーそうかそうかよかったのう!コマンドがないパターン以外にも、古いバージョンが入ってるから新しいの使いたいって場合にも使えて便利じゃな!
(フゥ〜、危うく間違った方向に導くところじゃったわ。)

Homebrewを導入することでMac上にUNIX系のツールをインストールできるようになり、タミ夫くんも快適なターミナル生活の第一歩を踏み出す準備ができました。次回はターミナル上で利用できる便利なショートカットを紹介したいと思います。お楽しみに!

原稿:タナカトモフミ
株式会社ビズリーチ所属。ScalaコードをVimで書く日々をおくる。たまにうっかりIntellij IDEAに浮気してしまう。社内のVim部とEmacs部を和解させ、ターミナル部に統合することに成功したが、社内はEclipse, Intellij IDEA, Sublime Text, Atomが主流のため、戦いは続く。
https://twitter.com/tanacasino

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW