bitFlyer Lightning API を使ってAIトレードをやりたい！ 【DB構築編~前編~】


# 前書きの前書き
AIトレードは実際の金銭を扱います。
知識のない人はやらないようにしましょう。
知識のあるひとも自己責任でやりましょう。

これらの記事は、AIトレードの基盤を作ることを目標としていて、稼ぐことは目標としていません。
どちらかと言うとデータマイニングです。
稼げれば何よりですが、もう一度。

__自己責任でやってください__

#前書き
前回、DBにpostgresqlかmysqlを使うと言ったな。
あれは嘘だ。

いやですね、elasticsearchと言う面白いDB(?)を教えてもらいまして。
使ったことない技術っておもしろそうじゃないですか？
高速でデータのやり取りできると言う話を聞いて、おや？おやおや？と。
なので、elasticsearchを使います。


#開発環境
## PC
機種名 : MacBook Pro
OS : High Sierra 10.13.1
プロセッサ名 : Intel Core i5 2.6 GHz
メモリ : 16 GB
グラフィック : Intel Iris 1536MB

## 言語/ライブラリ
* Node.js 8.9.0
	* request
	* crypto
* Python 3系(未定)
	* Tensor Flow
	* Chainer どっちか使う予定

## DB(未定:学習用データ等を入れる予定)
* elasticsearch 6.0.0
	* ライセンス等は自分で確認してね？

# 全体の流れ
1. elasticsearchのセットアップ
2. 前回作ったやつで取得したデータをelasticsearchにぶっこむ。

#本題
## elasticsearchのセットアップ
elasticsearchの環境構築進めていきましょう。
こちらの記事を参考に進めていきます。

> はじめての Elasticsearch
> https://qiita.com/nskydiving/items/1c2dc4e0b9c98d164329


### JAVA_HOMEの登録
```bash
% java -version                                                                                                                                                                                      [20:05:39]
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
% echo $JAVA_HOME

```

JAVAは入っているけど、JAVA_HOMEは登録されていない模様。
環境変数を登録。
こんなんチョロですよ、チョロ。
この時、あんなことになるなんて知る由もなかった。
(このまましたのやつ動かすとエラーになるので、もう少し読み進めてください。)

```
% which java                                                                                                                                                                                         
/usr/bin/java
% echo export JAVA_HOME=/usr/bin/java >> .bash_profile
% source ~/.bash_profile
```

### elasticsearchのセットアップ
今回入れるのは最新(2017/11/25)の6.0.0なので、それっぽく変えてやっていきます。

```
% wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz
% tar -xzf elasticsearch-6.0.0.tar.gz
% cd elasticsearch-6.0.0
% bin/elasticsearch-plugin install analysis-kuromoji
Unable to locate an executable at "/usr/bin/java/bin/java" (-1)
```

ふむ、エラーが出ました。参照しているパスがさっき登録したところと違う模様。

### JAVA_HOMEの登録②
先程チョロと言いましたが、チョロじゃなかった。

`/usr/bin/java`の階層に、binはないので、おかしいなとググった結果。

環境変数には`export JAVA_HOME=/Library/Java/Home`と登録する必要があったみたいです。
なので、修正。

```bash
% vi ~/.bash_profile
% source ~/.bash_profile 
```

### elasticsearchのセットアップ②
再チャレンジ

```bash
% bin/elasticsearch-plugin install analysis-kuromoji                                                                                                                                                 
-> Downloading analysis-kuromoji from elastic
[=================================================] 100%
-> Installed analysis-kuromoji
```

行けました。

### 動作確認

```bash
% bin/elasticsearch
~ログがばーっと出る~
[2017-11-25T20:23:09,868][INFO ][o.e.n.Node               ] [Pk16-Uf] started
```
startedが出たので行けるはず。

`http://localhost:9200/`にアクセスしてみる。

```json
{
  "name" : "Pk16-Uf",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Y92hQ0cAR8ivRMDsVUsiCw",
  "version" : {
    "number" : "6.0.0",
    "build_hash" : "8f0685b",
    "build_date" : "2017-11-10T18:41:22.859Z",
    "build_snapshot" : false,
    "lucene_version" : "7.0.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
```

jsonが表示されたので成功したようです。

### Kibanaのセットアップ
特に問題起きなかったのでサラッと。
```bash
% wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-darwin-x86_64.tar.gz
% tar -xzf kibana-6.0.0-darwin-x86_64.tar.gz
% cd kibana-6.0.0-darwin-x86_64
```

### 動作確認
動かしてみます

```bash
% bin/kibana
~ログがばーっと出る~
  log   [11:54:23.317] [info][status][ui settings] Status changed from yellow to green - Ready
```

動き出したようです。

`http://localhost:5601/ `にアクセスしてみる

![screencapture-localhost-5601-app-kibana-1511611150630.png](https://qiita-image-store.s3.amazonaws.com/0/35860/929963e3-d254-9858-4d2b-e4a6771fb015.png "screencapture-localhost-5601-app-kibana-1511611150630.png")

できたのか？

> No default index pattern. You must select or create one to continue.

ワーニングを適当に訳すと、インデックスがね～からつくれよ！
ってことらしい。

.
..
...
うん、無視していけそう。

![screencapture-localhost-5601-app-kibana-1511614150171.png](https://qiita-image-store.s3.amazonaws.com/0/35860/0d69b1ec-f78c-2090-3057-928c25ef59d9.png "screencapture-localhost-5601-app-kibana-1511614150171.png")

三角ボタン押して、右側に結果が出てきたら成功。

```json
{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
      {
        "_index": ".kibana",
        "_type": "doc",
        "_id": "config:6.0.0",
        "_score": 1,
        "_source": {
          "type": "config",
          "config": {
            "buildNum": 16070
          }
        }
      }
    ]
  }
}
```

#感想
一旦ここまで。
次回、簡単にインデックス等構築したところから、進めていこうかと思います。
環境構築自体は比較的簡単にできるけど、使いこなせるかは別問題。
そもそも、今回の機能に合うDB(?)なのかな？

以上！


#関連URL
> elasticsearch
> https://www.elastic.co/jp/products

> はじめての Elasticsearch
> https://qiita.com/nskydiving/items/1c2dc4e0b9c98d164329