ITエンジニアとしてのPC初期環境構築[MacOS編]

#はじめに
Macを購入したので、エンジニアとしてやっておくべきであろう各種作業を行った。

備忘を兼ねて、社会人１年生の自分に伝えるつもりで書き残しておく。内容としては、下記のトピックについて。

* IDE
* パッケージマネージャ
* エディタ
* Gitホスティングサービス連携

##IDEのインストール
IDE(統合開発環境)は数あれど、とりあえず公式のものを入れておいて損はない。MacOSの場合、XCode。Swiftやobjective-Cで開発するなら、アドバンテージがあるはず。

###XCode
特に難しいことはなく、[公式のページ](https://developer.apple.com/jp/xcode/)からダウンロード、実行するだけでOK。

###CommandLineTools
ちょっと調べると、Xcodeに付随してCommandLineToolsを入れておけ、という記事をよく見かける。

####何それ
[Xcode Command Line Tools]
(http://railsapps.github.io/xcode-command-line-tools.html)

>Installation of many common Unix-based tools requires the GCC compiler. The Xcode Command Line Tools include a GCC compiler. 

Unixベースのツールをインストールする際、CommandLineToolsに含まれるGCCコンパイラなどが必須となる。なるほど、開発者としてマシンを使いこなすためには、あった方が良さそう。

ちなみに逆に言えば、MacはもともとUnixベースで開発されたOSだからこうしたツールだけで済む、とも言える。WindowsでUnixライクな環境を立ち上げたい場合は、互換レイヤとして[Cygwin](https://ja.wikipedia.org/wiki/Cygwin)を噛ませて…みたいな話になるのでつらそう（やったことはないです）。

####導入の仕方
結論から言うと、XCodeのインストール完了時点で入っている（一定のバージョン以上の場合）。
せっかくなのでターミナルでインストールされているかの確認を。

```
$ xcode-select -p
```

以下（つまり、ツールのインストールされたディレクトリ）が表示されればインストールは済んでいる。

```
/Library/Developer/CommandLineTools
```

パスが帰ってこない場合、ツールがインストールされていない。その時は以下のコマンドでインストールすればOK。

```
$ xcode-select --install
```

##パッケージマネージャ
新しいツール試したい！とか、新しい言語の開発環境を準備したい！となった時、パッケージマネージャを使ってコマンド１つで導入できた方が何かと楽。MacOSでそれを実現するためのツールがHomebrew。

###Homebrew
概要や簡単な歴史は以下の記事から。
[パッケージ管理システム Homebrew]
(http://qiita.com/b4b4r07/items/6efebc2f3d1cbbd393fc)

導入は非常に簡単で、ターミナルでコマンドを実行するだけ。（[公式サイト](https://brew.sh)にある最新のものをコピペした方が安全かとは思います）

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

インストールが成功したかどうかは以下のコマンドで確認。

```
$ brew doctor
```

で、このメッセージが出ればOK。

```
Your system is ready to brew.
```

###Homebrew-caskは必要だろうか？
Homebrewは、基本的にgitやnode.jsなど、コマンドラインベースのツールや新しいプログラミング言語をインストールする時に役立つもの。一方、Homebrew-caskという拡張を使うと、Chromeや後述するAtomなど、GUIアプリケーションまでコマンドでインストールできるようになる。強力。

ただし、デメリットもある。自分はこの辺の記事を読んだ結果、とりあえず入れないことにした。自動化厨だから気が変わるかもしれないけど。
[自動化厨の自分がhomebrew-caskを使わなくなった理由]
(http://queryok.ikuwow.com/entry/stop-brew-cask/)

導入する場合は、以下コマンドで。早速Homebrewが威力を発揮する。

```
$ brew install caskroom/cask/brew-cask
```

##エディタ
さっとjavascriptのコードを書いてnode.jsで実行したい、とかいう時にIDEはオーバースペックな時もあるので、軽量なエディタを持っているとプログラマとして良い。

###選択肢について
別に宗教戦争を起こしたいわけではないが、大体以下のエディタが使っている方もそれなりに多く、有望と思う。

* Sublime Text
* Atom
* Vim
* Emacs
* Visual Studio Code

自分は今回Atomを選ぶことにした。

AtomはGithub社謹製で信頼感が高いのと、比較的新しいエディタで拡張機能の開発が盛ん、という利点があると思う。VS CodeはWindows向けの印象が拭えない、VimとEmacsはカーソル移動やモードの概念に慣れるのが大変、Sublimeは本来的に有償ソフト、というのも理由…。

###Atom
特徴は前述の通り。バージョン1.0のリリースが2015年なので、若いエディタ。GUIベースのツールなので、普通に[公式サイト](https://atom.io)から落とすことになる。

ダウンロード・解凍したら、一応アプリケーションディレクトリにドラッグして移動。

####なお、Homebrew-caskがある場合

```
$ brew cask install atom
```

以上。この手軽さを見てやっぱり入れようか迷ってしまった。


##Gitホスティングサービス連携
今どきの開発者であればGitホスティングサービスとの連携は頻繁に行うと思う。Github、Bitbucketなど諸々のサービスがあるが、とりあえずGithubを対象に、アカウントは既に持っていることを前提に話を進める。

###先ずは、Git
MacOSであれば最初からGitが入っているらしい。ただ、バージョンが古い場合もあるので確認しておいた方が良い。

```
$ git --version
```

古ければ、Homebrewで再インストールしてしまえば良い。

```
$ brew install git
```

インストール終了後、一応ターミナルを再起動してバージョンを確認。ついでに、Homebrewの管理下にGitが入ったことも確認できる。

```
$ git --version
git version 2.13.2

$ brew list
git
```

ここで上手くバージョンが上がっていない場合、パスの問題があり得る。自分は幸運にも無事だったが、この場合のトラブルシューティングはこちらの記事が参考になる。
[HomebrewでGitをインストールする]
(http://qiita.com/micheleno13/items/133aee005ae37c28960e)

###鍵の生成と登録
基本的に以下の記事の方が詳細で良い。ここでは最小限の手順だけ紹介する。
[gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~]
(http://qiita.com/shizuma/items/2b2f873a0034839e47ce)

####鍵を入れるディレクトリへ移動

```
$ mkdir ~/.ssh
$ cd ~/.ssh
```

####鍵を生成
コマンド入力以降はEnter連打（＝パスフレーズなし）で特段の問題はない。
これで鍵長2048、暗号方式RSAの公開鍵/秘密鍵ペアが生成される。

```
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
```

より厳格なセキュリティ担保について考えたい方には、こちらの一読をお勧めする。
[お前らのSSH Keysの作り方は間違っている]
(http://qiita.com/suthio/items/2760e4cff0e185fe2db9)


####Githubへの公開鍵登録
公開鍵をクリップボードにコピー。

```
$ pbcopy < ~/.ssh/id_rsa.pub
```

で、ホスティングサービス側に公開鍵を登録する。Githubの場合はここ。
https://github.com/settings/ssh

鍵のタイトルはマシン名に紐づくものにすれば良いだろう。自分の場合は"Private Mac"などにしている。

####接続確認

```
$ ssh -T git@github.com
Hi (githubのaccount名)! You've successfully authenticated, but GitHub does not provide shell access.
```
上記のメッセージが帰って来れば接続成功。Githubへのssh接続が出来るようになった。

##補足：Windowsでパッケージ管理
これで自分がやった初期環境構築作業としては以上。

このうちパッケージマネージャに関しては、実はWindowsにも該当するツールがあって、愛用していた。
[Chocolatey]
(https://chocolatey.org)。

`cinst`コマンドでツールの導入が爆速で出来るようになる。Qiita上でもいくつか記事はあるが、Chocolateyの記事はHomebrewに比較してまだまだ少ないのでWindowsから離れた今でも普及してほしいと思っている。

##終わりに
自分自身いろいろな環境構築系の記事にお世話になったが、

「特定の言語環境とか入れる前に、これやっておいた方がいいよね」

という内容をまとめたものってなかなかなかった。

自分が新人プログラマだったらそういうのあると助かるかもなあ、と思い、筆を取らせて頂いた。当記事が少しでもどなたかの助けとなれば幸いです。