どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

Neo4j導入の覚え書き

会社でこちらで遊んでる輩がいました。けしからん。

f:id:nogawanogawa:20190207183631p:plain

私も遊んでみます。

neo4j.com

とりあえず触ってみるのが手っ取り早いのでまずは導入してみました。

参考にしたのはこの辺です。

qiita.com

moneyforward.com

とりあえず遊んでみたので、そのメモです。

Neo4jとは

Neo4jはJavaで実装された、 オープンソースの最も人気のあるグラフデータベースである。[3][4][5] Ver1.0は2010年2月に公開された。[6] コミュニティ版のライセンスはGNU General Public Licenseであり、 オンラインバックアップなどの追加モジュールは、Affero General Public Licenseである。また、共に商用ライセンスの利用も可能である。[7] 開発元のNeo Technology社はマルメとサンフランシスコ・ベイエリアに拠点を置いている。

(出典:wikipedia)

だそうです。ふーんって感じですね。グラフデータベースとやらが使えて、それを表示するといい感じの図が出るということらしいです。

ライセンス

一瞬「金かかんのかなー??」とか思ったんですけど、なんか大丈夫っぽいですね。 商用利用は、、、そりゃまあ、かかりますよね。

neo4j.com

環境構築

Macでやりました。

インストールはこんな感じ。ちょー簡単。

brew install neo4j

サーバーを起動させるには

neo4j start

ちょー簡単。(2回目)

デフォルトで

http://localhost:7474/browser/

でウィンドウが立ち上がります。ID/パスワードを聞かれるので、

user id : neo4j
password : neo4j

でログイン後、パスワードを変更して下準備完了です。ちょー簡単。(3回目)

Docker版の使用

最近、Docker使わないと人間じゃないってレベルで軽蔑の眼差しを受けるので、Dockerでも環境構築してみます。

docker pull neo4j

まずDockerImageを引っ張ってきます。

docker run \
--detach \
--publish=7474:7474 --publish=7473:7473 --publish=7687:7687 \
--volume=$HOME/neo4j/data:/data \
--volume=$HOME/neo4j/logs:/logs \
--volume=$HOME/neo4j/conf:/conf \
--ulimit=nofile=40000:40000 \
neo4j:3.0

こんだけです。あとは上と手順は一緒です。簡単ですね。

アクセスは

http://0.0.0.0:7474/

で行けました。なんかhttpsだとポート番号が7473らしいです。

www.creationline.com

適当に遊んでみた

Neo4j(ブラウザ)から使う

ブラウザから使ってみます。 Neo4jにはデフォルトでサンプルのデータセットがあるのでそちらを入れてみたいと思います。

下図のようなメニューバーのところにMovieGraphというのがあるので、そちらを選択します。

f:id:nogawanogawa:20190228163250p:plain

右に進むボタンを押すと、Createという欄が出てきますので、そちらのボックスの中身を実行するとサンプルが入ります。 こんな感じになります。

f:id:nogawanogawa:20190228163504p:plain

サマになってますね。

次は検索してみます。

全件検索だとこんな感じ。

MATCH (n1)-[r]-(n2) RETURN r, n1, n2

f:id:nogawanogawa:20190228174800p:plain

マトリックスとつながっているノードを検索するときはこんな感じ。

MATCH (matrix: Movie {title: "The Matrix" })-[r]-(actors) RETURN matrix, actors;

f:id:nogawanogawa:20190228171931p:plain

関係性に条件をつけるとこんな感じ。

MATCH (matrix: Movie { released: 1999, title: "The Matrix" })<-[:ACTED_IN]-(actors) RETURN actors, matrix;

f:id:nogawanogawa:20190228170808p:plain

プログラムから呼び出す

ブラウザ上遊ぶのでも良かったんですが、いまいち使い方がしっくり来なかったので、下の記事を参考にpythonで遊んでみます。

qiita.com

やってみたらこんな感じですね。

gist.github.com

f:id:nogawanogawa:20190207215214p:plain

グラフ構造出ました! めでたしめでたし。パチパチパチ…

感想

使うとわかりますが、UI周りがよくできていて、使ってて楽しいです。

webサイトとかに埋め込む際にはこの辺のjavascriptを使えばよいのではないでしょうか。

www.slideshare.net

文法とかはいまいちよくわかってませんが、機会があればまた遊んでみたいと思います。