GNU BackgammonをMac上で実行可能にする

久々の投稿になります。MacBookAirを購入し、色々文章を書いていこうかと考えていた矢先に、質問を受けたのでこの記事を書いております。プログラムとかの技術書というよりは、初心者向けの導入記事の一つになります。相変わらずニッチな方法を使いますがその理由は後述します。

---

実行環境
MacBookAir Retina 2018モデル
メモリ 16GB
ストレージ 500GB
OSX 10.14.5 Mojave

---

# GNUバックギャモンとは？
そもそもバックギャモンという競技自体を知らない方のために補足します。バックギャモンとは「西洋すごろく」とも呼ばれる、二人対戦型の競技で、15個の駒と二つのサイコロを使い、全ての駒を早く上がらせた人の勝ちとなる競技です。イメージは例えば[Wikipedia](https://ja.wikipedia.org/wiki/バックギャモン)など。

GNUバックギャモンはこの競技の言わば解析ツールで、コマンドラインをベースに様々なことが行えます。これをMac上で実行できるようにするのがこの記事の目的です。

## Linuxでいいじゃん？
まあそうです。実際GNUプロジェクトで保守されているソフトの一つであるため、インストールはコマンド一つで終わります。

``` Bash
sudo apt install gnubg
```

ここまででことが足りる人は、良いバックギャモンライフをUbuntuなどでお楽しみください。ここから先は、それも心もとないMacユーザー向けの記録になります。

# 今どうなってるの？どうしてこんなことするの？
[このサイトの情報](https://backgammonconsideration.hatenablog.com/entry/2018/04/13/160053)によると、2019年8月11日現在で、ソースコードへのリンクが切れているらしく、コンパイルして実行という常套手段が使えない状態だったりするのです。

Windowsの方もどうやらexeファイルへのリンクが切れているみたいですね。

てな感じで、どうするか考えた結果、Ubuntuでいう`apt`みたいな機能あればいいじゃん。てことです。

## いやいやMacならHomeBrewあるでしょ？
そうですね。パッケージ管理としてHomeBrewがあります。ただ悲しきかな、想像つく人はつくでしょうが、管理しているパッケージが全く異なるために、インストールできないのですね。気になる人は試しにやってみましょう。

``` Bash
brew install gnubg
```

するとこうなります。

```
Error: No available formula with the name "gnubg" 
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.
==> Searching for similarly named formulae...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
```

残念でした。違う方法をとりましょうか。

# 違う管理ツールを使おう
てことで、みんな似たことを考えているようなので、その流れに便乗し、"Fink"を導入します。その前に必要な準備をしておきましょう。

[このページ](https://qiita.com/u4da3/items/4229702b4a8504290dd5)を参考に、Xcodeの導入からFinkまで入れます。最初からだとかなり時間が掛かりますが、気長に待ちながら一つ一つこなして行きましょう。

購入後にXcodeを導入せずサボったツケがたたっており、その待ち時間にこの記事を書いております。それくらいできるので、気長にやりましょう。大事なので二回言いました。

そしたらトップページだけ繋がったGNUBackGammonのページに、MacPortsで提供しているとある。文章はきちんと読みましょうね。

## Xcodeの導入
上の記事では、以下のコマンドでうまくいくとありますが、何故か自分の環境ではうまくいかなったので、素直にAppストアからXcodeを検索してインストールします。

インストールが終わったら次のコマンドを打ち込みます。

```
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
```

先頭に`sudo`がついているコマンドは、実行するとパスワードを聞かれるので、自分のログイン時に使うパスワードを入力します。

その後、ライセンス認証を行います。次のコマンドからライセンス文章(英語)を読みます。進めるキーはスペースキーで行います。

```Bash
sudo xcodebuild -license
```

最後まで読みきったら、`agree`と打ち同意します。

## MacPortsの導入
なんかMacPortsというパッケージ管理ソフトがあるらしく、そこならGNUBackgammonもあるそうなのでそれを使う。

[このサイト](https://github.com/macports/macports-base/releases/tag/v2.5.4)にアクセスして自分のmacOSに対応したバージョンの`pkg`ファイルをダウンロード、実行してインストールする。

最新の更新まで対応するために、以下のコマンドを実行する。この時、インストール後に新しくターミナルを起動しないと情報が反映されないので注意。

```Bash
sudo port -v selfupdate
```

更新を実行するか聞かれたら`Y`と打ち込んでいきましょう。

更新が終わったら、GNUBackgammonを導入します。以下のコマンドを一行打ち込みましょう。

```Bash
sudo port install gnunbg
```

色々インストールが始まります。正常終了したら起動してみましょう。

```Bash
gnubg
```

以下の文字が出れば完了です。

```
GNU Backgammon 1.05.002  Aug 12 2019
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 by Gary Wong.
Copyright (C) 2016 by Gary Wong and the AUTHORS; for details type `show version'.
This program comes with ABSOLUTELY NO WARRANTY; for details type `show warranty'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show copying' for details.
(ゲーム無し) 
```

お疲れ様でした。良いギャモンライフを。

### 他にあるの？
囲碁やチェスバージョンもあるみたいです。興味ある方は調べてみるといいかと思います。

#### この先は？
早とちりして導入した別パッケージの導入法です。参考になるとは思うし、ここまで書いてしまったので残しておきます。興味ある方はどうぞ。

## JavaSDKのインストール
全体の導入途中でJavaのツールが必要になるので、ここで入れてしまいましょう。この記事時点で最新バージョンは12.0.2らしいので、それを導入します。

[Oracleのダウンロードページ](https://www.oracle.com/technetwork/java/javase/downloads/index.html)から、最新安定バージョンのJavaSE(Standard Edition)リンクへ進みます。リスト化されたたくさんあるファイルのすぐ上に利用規約部があるので、"Accept License Agreement"にチェックを入れて、この記事においては"jdk-12.0.2_osx-x64_bin.dmg"をダウンロードします。

ダウンロード終了後、ファイルを開いて実行し、インストールを完了させます。

## Finkの導入
さていよいよFinkの導入に移ります。まず[本家サイト](http://www.finkproject.org/download/srcdist.php?phpLang=en)へ行き、Finkの最新版をダウンロードします。この記事執筆時点での最新バージョンは0.45.0なので、その`fink-0.45.0.tar.gz`をダウンロードします。この時、ダウンロード先のフォルダは素直にユーザーのダウンロードフォルダに設定しておきましょう。

次のコマンドを打ち込みます。

```Bash
cd $HOME/Downloads
tar -zxvf fink-0.45.0.tar.gz
cd fink-0.45.0
./bootstrap
```

実行すると、管理者権限を求める旨のメッセージが表示されます。1だと`sudo`コマンドで実行、2だと`su`に移管して実行となります。セキュリティのこともあるので、ここは1としてリターンを叩きます。

次に、インストール先フォルダを聞かれるので、デフォルト設定のまま`/sw`で実行します。その後に2回程パスのことについて聞かれます。ここでは特殊な設定を行なっていないので、何も打ち込まずにリターン、リターンと打ち込みます。

その後、4つくらい選択肢が出てきてどうするかを聞かれます。これはダウンロードの状況などをどの程度知りたいかの情報頻度になります。1の時は何も表示せず、4の時は全ての情報を出力します。特段気にする必要がなければ1で良いでしょう。あとの選択肢もでフォル設定で基本的に問題ないので、リターンを叩き続けましょう。

途中で[Y/n]タイプの質問が出てきた場合、大文字の選択肢が推奨設定になるので、そちらを打ち込みましょう。あとは待つあるのみです。長いです。じっくり待ちましょう。

終わったら、Finkを使えるようにします。以下のコマンドを打ち込みましょう。

```Bash
/sw/bin/pathsetup.sh
```

セキュリティの関係で、「ターミナル」が「設定を変更」しようとしています、みたいなメッセージが出たら「はい」の側のボタンをクリックしましょう(青ボタンになって表示されているはずです)。

その後、簡易メッセージで「続けますか？」と英語で聞かれるので、素直に"Yes"とクリックします。

最後に次のコマンドで初期化を行います。

```Bash
. /sw/bin/init.sh
```

これでFinkの導入がうまくいったかどうかを確かめましょう。

```Bash
fink -V
```

すると以下のように、インストールしたバージョンが表示されていればオッケーです。

```
Package manager version: 0.45.0
Distribution version: selfupdate-point (bootstrap), 10.14.5, x86_64
Trees: local/main stable/main

Copyright (c) 2001 Christoph Pfisterer
Copyright (c) 2001-2019 The Fink Package Manager Team
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
```

`fink`コマンドもまたパスワードを聞いてくるので、同じようにログイン時のパスワードを打ち込みましょう。

このあと、さらなる最新バージョンに更新するため以下を順番に実行します。聞かれたらデフォルトの選択肢を選びましょう。

```Bash
fink selfupdate
fink index -f
```

これでめでたくFinkの導入は完了です。お疲れ様でした。