MacでNeo4jを使ってみる

MacにグラフデータベースNeo4jをインストールしてみました。Neo4jは、シンプルなグラフ構造のデータからSQLライクなサイファークエリ(Cypher Query）を使って、SQLをはらかに超える複雑なデータ処理が可能な革新的なデータベースです。

```
この記事は、Neo4j v3.0.6(2016-09-16)に合わせて更新しています。
```

**参考**

* [Install Neo4j](https://neo4j.com/docs/developer-manual/current/get-started/#install-neo4j)
* [Post-installation tasks](http://neo4j.com/docs/operations-manual/3.0/deployment/post-installation/)


##JDKのインストール
JDK8をダウンロードし、インストールしてください。

[Mac OS X:dk-8u101-macosx-x64.dmg](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)

```
$java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

```

##Neo4jインストールパッケージのダウンロード
最新の安定版は、こちらから入手できます。今回は、コミュニティ版のNeo4j 3.0.6 (dmg)を使います。

[Neo4j 3.0.6](https://neo4j.com/download/other-releases/)

![neo4j3.0-download.png](https://qiita-image-store.s3.amazonaws.com/0/69832/3a36844f-0c83-e885-e54f-679ff8b51192.png)


##Neo4jのインストール

インストールパッケージをクリックし、インストールを実行してください。

```
neo4j-community_macos_3_0_6.dmg
```

インストールが終了すると、アイコン作成のガイド画面が表示されます。Neo4jのアイコンを矢印の方向に「ドラック&ドロップ」し、アプリケーションとして登録してください。

![mac-install-0.png](https://qiita-image-store.s3.amazonaws.com/0/69832/4a149e0e-6ee5-b1f9-4724-784c01437097.png)


##Neo4jの起動
Neo4jのアイコンをクリックしてください。

![mac-install-1.png](https://qiita-image-store.s3.amazonaws.com/0/69832/622552fb-9477-451c-a348-84e2ec4556ff.png)

Neo4jのコントロール画面が表示されます。データベースファイルの格納先や設定を変える必要がなければ、そのまま「Start」をクリックします。

![mac-install-2.png](https://qiita-image-store.s3.amazonaws.com/0/69832/05103984-e4c9-e139-223d-0a0ca6a79395.png)

Neo4jの開始画面が表示されます。

![mac-install-3.png](https://qiita-image-store.s3.amazonaws.com/0/69832/5a8c5b55-1c57-d0f4-0e98-f916bee07475.png)

Neo4jのWebインターフェースのリンクをクリックするか、ブラウザーにURLを入力して接続してください。


```
http://localhost:7474
```

## Neo4jへのログイン

データベース毎に初期画面では、既定のユーザーとパスワードを入力し、Neo4サーバーに接続します(neo4j/neo4j)。

![neo4j3.0-login-1.png](https://qiita-image-store.s3.amazonaws.com/0/69832/efc0ea21-b629-7ddb-231b-abd0dd190b34.png)

１回目のログインでは、初期パスワードの変更が必要です。パスワードを決めて「Set password」をクリックします。

![neo4j3.0-login-2.png](https://qiita-image-store.s3.amazonaws.com/0/69832/c29c6f67-a21a-2c87-e46c-6c4cd5b13995.png)


次のようなNeo4jのWebインターフェースが表示されます。ここまで表示できたらインストールは成功です。
![neo4j3.0-login-3.png](https://qiita-image-store.s3.amazonaws.com/0/69832/5d60ef68-3ff3-60c0-c22a-4ec85f1c5a83.png)


## 演習用の映画データベース作成
Neo4jのWebインターフェースから簡単に映画データベースを作成できます。コマンドライン「$」に、下記の構文を入力し、右端の実行ボタン(▶)をクリックします。

```
:play movie graph
```

映画データベースの紹介画面が表示されたら右に移動します。そして、次のような映画データベース作成用のCypherクエリ文が表示されたら、枠のなかをクリックするとコマンドラインにコピーされますので、そのまま実行ボタン(▶)をクリックします。

![setup306-4.png](https://qiita-image-store.s3.amazonaws.com/0/69832/1a0ce00c-f425-db5d-dec8-95e640756c33.png)

次のようなグラフが表示されたらデータベース作成は成功です。

![movie-graph.png](https://qiita-image-store.s3.amazonaws.com/0/69832/4868ec58-2240-c16e-d1a0-65cbce839e25.png)


## Neo4jのデータ処理
Neo4jのデータ処理は、GUI及びCUIを適切にミックスして行います。

例えば、Keanu Reevesさんが出演した映画を検索するとします。これは、次のようなデータモデルとして可視化して表現することができます。さらに、「下図のようなデータを検索してほしい」、というような依頼も可能です。

![pattarn-search-1.png](https://qiita-image-store.s3.amazonaws.com/0/69832/473d33df-a1fc-c1b6-64dd-5a1763e2ab92.png)

これをCypherクエリで書くと、次のようになります。

```
MATCH (actor:Person)-[r:ACTED_IN]->(movie)
WHERE  actor.name = "Keanu Reeves"
RETURN actor,movie 
```

実際の検索結果は、次のようなグラフです。

![keanu-movie-1.png](https://qiita-image-store.s3.amazonaws.com/0/69832/f2e55263-de27-94f9-e465-5fda36df519e.png)

グラフはテキストとして出力できます。

```
MATCH (actor:Person)-[r:ACTED_IN]->(movie)
WHERE  actor.name = "Keanu Reeves"
RETURN actor.name,movie.title 
```

![keanu-movie-2.png](https://qiita-image-store.s3.amazonaws.com/0/69832/0468afa3-a703-89eb-3bf6-b2c1b959916c.png)

このようにCypherクエリは、SQLを超える型破りのクエリ言語です。興味ある方は:play movie graphの続きにある演習用のCyhperクエリを実行してみてください。Webインターフェースの他の機能に触れてみるのもいいでしょう。

[Neo4jウェブインターフェースを使い倒す](
http://qiita.com/awk256/items/4448899663a6aa82e88d)

##Neo4jのストップ
Neo4jをストップは、下記のようにストップコマンドを実行します。

```
# /usr/neo4j/bin/neo4j stop
```


##まとめ
以上、Neo4jのインストール手順を紹介しました。興味ある方は、次のサイトや書籍を参照してください。

**関連サイト**

* [neo4j.com](http://neo4j.com)
* [クリエーションライン社](http://www.creationline.com/lab/neo4j)
* [Neo4jユーザグループ](https://www.facebook.com/neo4jusersgroup/)

**書籍**

* [Cypherクエリー言語の事例で学ぶグラフデータベースNeo4j](https://www.amazon.co.jp//dp/B0171LWZ9O)
う
* [グラフ型データベース入門 - Neo4jを使う](https://www.amazon.co.jp/dp/dp/4865940154)
* [RDB技術者のためのNoSQLガイド](https://www.amazon.co.jp/dp/479804573X)