【備忘録】地球系大学院生のMacセットアップ

#はじめに
理工系の学生でプログラミング・数値計算をする人向けの環境構築例です。研究分野や好みにより導入するソフトウェアは異なると思いますが、セットアップの一例ということでご容赦を。備忘録なので筆者に都合の良いように書いてあります。

###実行環境
2018年10月
macOS 10.13.6 High Sierra
Mac mini (Late 2014) - 1.4 GHz Intel Core i5
4GB RAM & 256GB SSD

###インストールするソフトウェアたち
Xcode  10.0 (10A255) + Command Line Tools
Homebrew 1.7.7
gfortran (gcc 8.2.0)
gnuplot 5.2
Git
GMT 5.4.4
MacTeX
Mendeley
Vim
Atom
...



#Xcode
###Xcodeのインストール
Mac App Storeから[Xcode](https://itunes.apple.com/jp/app/xcode/id497799835?mt=12)をインストールします。ファイルは5.90GBあるので時間がかかります。

###Command Line Tools
インストールできたらXcodeを起動して、上部メニューから`Xcode > Open Developer Tool > More Developer Tools...`を選びます。[developer.apple.com](https://developer.apple.com/download/more/?=for%20Xcode)が開かれるので、ここからOSとXcodeのバージョンに合うCommand Line Toolsをダウンロードします。今回は、Command Line Tools (macOS 10.13) for Xcode 10 を選択して`Command_Line_Tools_macOS_10.13_for_Xcode_10.dmg` をダウンロードしました。
dmgファイル内のpkgファイルをダブルクリックするとインストーラーが起動するので、それに従いインストールします。

インストールが完了したら、ターミナルから以下を実行します。

```
$ sudo xcodebuild -license
```
ライセンス表示がでるので、目を通したら一番下で'agree'を入力します。

### xcodebuildでエラーになってしまう場合 ([参考[6]](#参考))

```
$ sudo xcodebuild -license
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
```
xcode-selectにエラーが出ているので、以下でこれを修正します。

```
$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
```
再度`xcodebuild`を実行して解決しました。

```
$ sudo xcodebuild -license
```

#Homebrew
Mac用パッケージマネージャーの[Homebrew](https://brew.sh/index_ja)をインストールします。ターミナルを開いて以下を実行します。


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


###Homebrew Caskのインストール
[Homebrew Cask](http://caskroom.io)はHomebrewの拡張ライブラリで、GUIアプリケーションのインストール・管理ができます。

```
### インストール
$ brew tap caskroom/cask

### 例) Google Chromeのインストール
$ brew cask install google-chrome

### 例) まとめてアップデート
$ brew cask upgrade
```
必要なソフトはHomebrewで大体解決できます。

###パスを通す


Homebrewでインストールしたソフトウェアのほとんどは、`/usr/local/bin`にシンボリックリンクが作られます。環境変数`PATH`にこのディレクトリがない場合はターミナルから呼び出せません。`$ echo $PATH`を実行して`/usr/local/bin`が含まれているか確認しましょう。
ない場合は以下を実行して追加しておきます。

```
#環境変数の変更
$ export PATH='/usr/local/bin:$PATH'

#または~/.bash_profile に書き込み
$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile     # 設定の再読み込み
```



#GNU Fortran Compiler
Fortranコンパイラーのgfortranをインストールします。
`$ brew info gfortran`を実行すると次のようなエラーが出ます。
>Error: No available formula with the name "gfortran" 
>GNU Fortran is now provided as part of GCC, and can be installed with:
>  brew install gcc

gfortranはgccの一部として提供されているようなので、gccをインストールします。

```
$ brew install gcc
```
gfortranがインストールされているか確認します。

```
$ type gfortran
gfortran is /usr/local/bin/gfortran
```


#gnuplot
[gnuplot](http://www.gnuplot.info)はコマンドラインでグラフを描画できるソフトウェアです。
gnuplotではグラフの出力先を、インストール時のオプションで指定するので、必要なソフトを先にいれておきます。
ここではAquaTermとX11のオプションを指定する事にします。

###AquaTerm と XQuartz の準備

[AquaTerm](https://sourceforge.net/projects/aquaterm/)と[XQuartz](www.xquartz.org) をインストールします。
XQuartz（旧X11.app）はOS X 10.8より標準搭載ではなくなったので、インストールが必要となります。

```
$ brew cask install aquaterm xquartz 
```
インストールが完了すると`/Applications/AquaTerm.app`と`/Applications/Utilities/XQuartz.app`が生成されます。


###gnuplotのインストール
```
# すでにインストールされているgnuplotを一度削除（ある場合）
$ brew uninstall gnuplot

# インストール時オプションなどの確認できる
$ brew options gnuplot

# インストール
$ brew install gnuplot --with-aquaterm --with-x11
```


#Git
Gitはプログラム開発（さらにはTeX原稿執筆）で活躍する、変更履歴を追跡する事の可能なバージョン管理システムです。

```
$ brew install git
```

###giboのインストール
.gitignore を使うとGitで追跡しないディレクトリ・ファイルを指定できます。[gibo](https://github.com/simonwhitaker/gibo)は.gitignoreを自動生成するツールです。便利。

```
$ brew install gibo

$ gibo --version
gibo 2.1.0 by Simon Whitaker <sw@netcetera.org>
https://github.com/simonwhitaker/gibo
```

コンパイルで生成された実行ファイルや原稿にのせる画像などは.gitignoreで、追跡しないよう指定します（ワイルドカードも使えます）。

#GMT - Generic Mapping Tools
[GMT](http://gmt.soest.hawaii.edu)は地球科学ではおなじみの地図を描くソフトです。コマンドラインからあらゆる地図を出力できます。GMTの開発は、2018年8月からGithubの[GenericMappingTools/gmt](https://github.com/GenericMappingTools/gmt)に移行したらしいです。

2018年10月現在、HomebrewでインストールできるGMTのバージョンは5.4.4です。以前使われていたGMT4.x系とはコマンドやオプションが異なる部分が多いです。Web上で見つかるGMTについての日本語の記事は4.xのものが多いので注意してください。
（一応、`$ brew install gmt4`を実行することでGMT4をインストールすることができます。しかし特にメリットを感じられないのでここでは扱いません。）


```
$ brew install gmt
$ gmt --version     # バージョン確認
5.4.4
```
####メモ
依存パッケージのhdf5とnetcdfのPouringで警告が出現。
>==> Installing gmt dependency: hdf5
>==> Pouring hdf5-1.10.3.high_sierra.bottle.tar.gz
>Warning: hdf5 dependency gcc was built with a different C++ standard library (libstdc++ from clang). This may cause problems at runtime.
>...
>==> Installing gmt dependency: netcdf
>==> Pouring netcdf-4.6.1_3.high_sierra.bottle.tar.gz
>Warning: netcdf dependency gcc was built with a different C++ standard library (libstdc++ from clang). This may cause problems at runtime.

「警告：hdf5/netcdf の依存関係にあるgccは別のC++標準ライブラリ（clangのlibstdc ++）でビルドされました。これは実行時に問題を引き起こす可能性があります。」
こんなものが出てきましたが、よくわからないので、問題が生じるまではとりあえず放置することにします。


#TeX
TeXはマークアップ言語スタイルの組版処理システムです。数式組版が可能で、レポートや論文を書くのに使います。
TeXディストリビューションには様々ありますが、ここではMacTeXをインストールします。
###MacTeX
[MacTeX](https://texwiki.texjp.org/?MacTeX)はTeXLiveを基本としたTeXディストリビューションで、オプションで追加アプリケーションをいくつかインストールします。

```
$ brew cask install mactex 
$ sudo tlmgr update --self --all    # TeX Live のアップデート
$ sudo tlmgr paper a4               # デフォルトの文書サイズを指定（'letter'でUS Letterも指定できる）
```

ファイルが大きいので（3GB超）インストールには時間がかかります。
`tlmgr`(the native TeX Live Manager) は TeX Live のパッケージ管理ツールです。
TeX Liveのアップデートや設定を行う事ができます。


#Mendeley Desktop
[Mendeley](http://jp.elsevier.com/online-tools/mendeley)は文献管理ソフトウェアです。学術論文などのPDFデータを管理することができ、複数のデバイスで同期したりオンラインで共有したりもできます。書誌情報からBibTexやMS Word向けに参考文献リストを出力できるので、レポートなどで重宝しています。（英語のみですが）Mac, Linux, Windowsの他、iOSにも対応しています。

```
$ brew cask install mendeley     # インストール
```

ローカルにPDFファイルを置いて、デバイス間で同期してくれます。無料ユーザーの場合の使える容量は2GBですが、文書ファイルではそれほどデータが大きくないので（当面の間は）問題ないと思います。


#Vim
コンソールで使うエディタとしてVimをインストールします。VimはHigh Sierraではバージョン8.0が標準搭載されています。
私はあまりプラグインなどでカスタマイズしませんが、HomebrewでインストールしたVimの方が便利なのでいれておきます。

```
$ /usr/bin/vim --version | grep VIM
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Nov 29 2017 18:37:46)
   system vimrc file: "$VIM/vimrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/share/vim"

$ /usr/bin/vim --version | grep clipboard
-clipboard       +job             +path_extra      -toolbar
+ex_extra        -mouse_gpm       -sun_workshop    -xterm_clipboard
```

標準搭載のvimではclipboardが有効にはなっていません（しかしどうやらHigh Sierraの標準Vimでは、テキストカーソルの位置へのペーストはできるようです）。
HomebrewでVimをインストールします。

```
$ brew install vim
$ vim --version | grep VIM
VIM - Vi IMproved 8.1 (2018 May 18, compiled Oct  3 2018 05:42:35)
   system vimrc file: "$VIM/vimrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/local/share/vim"
```

マウスカーソルで範囲指定して自動的にVisualモードに切り替わるのでより使いやすくなります。

#Atom
AtomはGitHubが開発している高機能なエディターです。

###インストール
```
$ brew cask install atom    # homebrew-caskでインストール
```
`/Applications/Atom.app`が生成されます。
###パッケージの準備
起動したら上部メニューの`Atom > Preferences...`を開きます。Settingsが表示されるのでInstallタブを指定して、必要な拡張パッケージをインストールします。

#####(1) japanese-menu
メニュー・設定等を日本語化します。英語がいい方は必要ありません。
#####(2) platformio-ide-terminal
Atom上でターミナルが使えるようになります。パッケージの設定を開いて、Togglesの`Close Terminal on Exit`のチェックを入れておくのと、Styleの`Theme`をone-darkかHomebrewに選択するのがオススメです。
#####(3) language-fortran と ide-fortran
Fortran用のシンタックスハイライトと自動補完入力のプラグインです。Fortranユーザーの方向け。

###設定など （お好みで）
設定のエディタ設定を開いて、フォントを指定します。フォントファミリーを指定する欄があるのでここに使用したいフォント名を入力します。Misc.で挙げた`Source-Han-Code-JP`を使用する場合には、Homebrew/caskでインストールした後に、`SourceHanCodeJP-Regular`と設定します。

「不可視文字を表示」、「行番号を表示」、「ソフトタブ」にチェックを入れておきます。「タブタイプ」をautoにしておくと、SpaceとTabのどちらを使用するか自動判別してくれます（`Makefile`を書く場合など）。

#Misc.
####wget
wgetはコマンドラインからダウンロード、get/postなどができるツールです。ウェブ系の処理をシェルスクリプトで書きたいときなどによく使います。

####tmux
tmuxはターミナルを多重化して、効率的に実行できます。

```
$ brew install tmux
```

詳細については @nl0_blu 氏の記事([参考[10]](#参考))がまとまっていてわかりやすいです。


#### [Source Code Pro](https://github.com/adobe-fonts/source-code-pro)
欧文専用のモノスペースフォントで、紛らわしいアルファベットや数字を判別しやすいようにデザインされたフォントです。

```
$ brew cask install font-source-code-pro
```
#### [Source Han Code JP](https://github.com/adobe-fonts/source-han-code-jp/)
Source Han Sans JP(源ノ角ゴシックJP)とSource Code Proを合わせた、日本語も使えるコーディングに適したフォントです。

```
$ brew cask install font-source-han-code-jp
```

#おしまい
長くなりましたが以上です。オススメのソフトや設定など、コメントしてもらえると嬉しいです。

#参考
[1] [gnuplotをHomebrewからインストールするときの手順](https://qiita.com/noanoa07/items/a20dccff0902947d3e0c)
[2] [wgetでこういう時はこうする!!](https://qiita.com/hirohiro77/items/b774908436ec032df719)
[3] [気付いたら.gitignoreはgiboで自動生成する時代になっていた](https://qiita.com/tmknom/items/c4bcebe17d25381fa45d)
[4] [Homebrew Caskで楽々インストール | 株式会社エヴォワークス](https://www.evoworx.co.jp/blog/homebrew-cask/)
[5] [Intoroducing Source Han Code JP](http://blogs.adobe.com/CCJKType/2015/06/source-han-code-jp.html)
[6] [xcodebuildがerrorになるときの対処法](https://qiita.com/Pegasus204/items/1ac470114669d3c4471c)
[7] [Mac で fortran を使う - ましろのブログ](http://mashiroyuya.hatenablog.com/entry/installfortran)
[8] [[Git] .gitignoreの仕様詳解](https://qiita.com/anqooqie/items/110957797b3d5280c44f)
[9] [MaxTeX - TeX Wiki](https://texwiki.texjp.org/?MacTeX)
[10] [tmuxを必要最低限で入門して使う](https://qiita.com/nl0_blu/items/9d207a70ccc8467f7bab)
[11] [MacのVimでHomebrewを使ってクリップボード連携を有効にする](https://qiita.com/shoma2da/items/92ea8badcd4655b6106c)