PrologをMacOSで使う

## 対象
s大学理工学部ics学科g先生の講義で、PrologをMacOSで使いたい方向けの記事です

## 私の環境
macOS Mojave v10.14
shellはbash
SWI-Prolog version 8.0.2 for x86_64-darwin

## 知っておくべきこと
[基本コマンド](https://techacademy.jp/magazine/6406)

| コマンド | 意味 |
|:--|:-- |
| ls | ファイル・ディレクトリの一覧を表示 |
| cd | 作業ディレクトリの移動 |
| pwd | 現在のディレクトリのPATHを表示 |
| mkdir | 新規ディレクトリの作成 |
| rm | ファイル・ディレクトリを削除 |
| touch | 新規ファイルの作成 |
| open | ファイルを開く |


[Vimの使い方](http://archiva.jp/web/tool/vim_basic.html)

| モード | 意味 |
|:--|:-- |
| ノーマルモード | h,j,k,lでカーソル移動ができる |
| インサートモード | 入力ができる |

| キー | 意味 |
|:--|:-- |
| ノーマルモードの時の i | インサートモードに切替 |
| インサートモードの時の esc | ノーマルモードに切替 |
| ノーマルモードの時の :w | 保存 |
| ノーマルモードの時の :q | 閉じる |


## 目次
1. SWI-Prologをインストールする
2. PATHを通す
3. 使ってみる

## 1. SWI-Prologをインストールする

### 1.1. インストール
[リンク](http://www.swi-prolog.org/download/stable)に飛び、`SWI-Prolog 8.0.2-1 for MacOSX 10.12 (Sierra) and later on intel` をインストールする。

### 1.2. アプリケーションの移動
Prolog(フクロウのアイコン)をApplicationフォルダーの中にドラッグ&ドロップで移動させる。

## 2. PATHを通す
PATHを通すの意味は分からなくても大丈夫。
しかし、この授業やPrologに限らずPATHを通すことはよくあるので調べてみると良い。
まず通したいPATHの確認する(Prologの中にあるMacOSにPATHを通したい)。

### 2.1. ターミナルを開く
[(ターミナルの開き方が分からない方はこちら)](https://techacademy.jp/magazine/5155)

### 2.2. Prologがあるか確認する
以下のコマンド( `you$` から右側)をターミナルに打って、Application下に `SWI-Prolog.app` があることを確認する。

```
Your-Macbook-Pro:~ you$ cd /
Your-Macbook-Pro:/ you$ cd Applications/
Your-Macbook-Pro:Applications you$ ls
.
.
FaceTime.app			Reminders.app
Font Book.app			SWI-Prolog.app
GarageBand.app			Safari.app
Google Chrome.app		Siri.app
.
.
.
```

あった。

### 2.3. MacOSの場所を探す
以下のコマンドで  `SWI-Prolog.app` の中の `MacOS` まで移動する。

```
Your-MacBook-Pro:Applications you$ cd SWI-Prolog.app/
Your-MacBook-Pro:SWI-Prolog.app you$ ls
Contents
Your-MacBook-Pro:SWI-Prolog.app you$ cd Contents/
Your-MacBook-Pro:Contents you$ ls
Frameworks	MacOS		Resources	pkgconfig	swipl.home
Info.plist	PlugIns		man		swipl
Your-MacBook-Pro:Contents you$ cd MacOS/
Your-MacBook-Pro:MacOS you$
```

### 2.4. MacOSのPATHを確認する
MacOSまで行ったら `pwd` コマンドで現在の場所を確認する。

```
Your-MacBook-Pro:MacOS you$ pwd
/Applications/SWI-Prolog.app/Contents/MacOS
```

つまり、 `/Applications/SWI-Prolog.app/Contents/MacOS` にPATHを通せばいいことがわかった。
続いてPATHを通す。

### 2.5. shellの設定を開く
shellがbashの人は以下のコマンドでbash_profileの設定画面をvimで開く。

```
Your-MacBook-Pro:MacOS you$ vi ~/.bash_profile
```

zshの人は `bash_profile` を `zshrc` に置換して以降の操作を行う。


画面が変わり、vimでbash_profileが開けた。

``` ~/.bash_profile
export PATH="~/.xxxxx/shims:/usr/local/bin:$PATH"
export PGDATA=/usr/local/var/xxx
export XXXXX_XXXX="$HOME/.xxx"
.
.
.
```

こんな感じ。

### 2.6. 以下の1行を追加する
`i` を押して、インサートモードにしたのち、

``` ~/.bash_profile
.
.
export PATH=$PATH:/Applications/SWI-Prolog.app/Contents/MacOS
```
を最終行に追加する。

### 2.7. vimを閉じる
`esc` を押してノーマルモードに戻したのち、 `:w` で保存し、 `:q` で閉じる。
vimを開く前の画面に元に戻ったらok。


### 2.8. 以下のコマンドでbash_profileを更新する

```
Your-MacBook-Pro:MacOS you$ source ~/.bash_profile
```

### 2.9. 以下のコマンドで正しくPATHを通せたか確認する
```
Your-Macbook-Pro: MacOS you$ printenv PATH
/Users/you/.xxxxx/shims:/Users/you/.pyenv/bin:/xxx/.........
..........:/Applications/SWI-Prolog.app/Contents/MacOS
```

できた。

## 3. 使ってみる
本記事では `/User/you/prolog2019` 下に、 `sample.pl` というファイルを作成する。そのファイルに

```
male(tom).
```
を記述し、挙動を確認する。

### 3.1. `/User/you/prolog2019` 下に、 `sample.pl` というファイルを作成する

せっかくなので、
1. prolog2019というディレクトリを作成する
2. その中にsample.plというファイルを作成する
3. sample.plを開く
の3つを、コマンドを駆使してターミナルだけでやってみる。

```
Your-MacBook-Pro:Hoge you$ cd ~
Your-MacBook-Pro:~ you$
```

これで `User/you` に移動。その下に `prolog2019` というディレクトリを作りたい。

```
Your-MacBook-Pro:~ you$ mkdir prolog2019
Your-MacBook-Pro:~ you$ ls
Applications	Downloads	Music		Desktop		Library
Pictures	    prolog2019	Documents	Movies
```

できた。続いて、 `prolog2019` に移動。

```
Your-MacBook-Pro:~ you$ cd prolog2019/
Your-MacBook-Pro:prolog2019 you$
```

移動した。ここに、 `sample.pl` というファイルを作成したい。

```
Your-MacBook-Pro:prolog2019 you$ touch sample.pl
Your-MacBook-Pro:prolog2019 you$ ls
sample.pl
```

できた。

### 3.2. コードを書く
コードを書くためにsample.plを開きたい。

```
Your-MacBook-Pro:prolog2019 you$ open sample.pl
```

開いた。そこに、

```sample.pl
male(tom).
```

を記述。保存を忘れずに。

※今回は`open`で開けたがbash_profileと同様にvimでも開ける
　その場合は`open`の代わりに`vi`(または`vim`)を使用する

### 3.3. コンソールで実行し、クエリを投げてみる

ターミナルに戻り、 `$ swipl -f ファイル名` でsample.plを実行する。
(現在の作業ディレクトリが `prolog2019` であることを確認)

```
Your-MacBook-Pro: prolog2019 you$ swipl -f sample.pl
Welcome to SWI-Prolog (threaded, 64 bits, version 8.0.2)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.

For online help and background, visit http://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).

?- 
```

`?- ` にクエリを叩く。

```
?- male(tom).
true.

?- male(Who).
Who = tom.

?- 
```

できた。

### 3.4. コンソールを閉じる

終わりたいときは `halt.` で退出できる。

```
?- halt.
Your-Macbook-Pro:prolog2019 you$
```

無事 `prolog2019` に戻った。

## 最後に
文末の `.` (ピリオド)を忘れずに。

## 完全に余談
プログラミングは楽しくておもしろいです。
ぜひ授業のCやjavaで「自分は向いてない」と意気消沈せずに、
エンジニアとして活躍されている社会人にお話を聞いたり、他の言語を学んでみてください。
きっと人生が変わるでしょう。
ics学科の先輩より