Sphereとともに

scalaとかplayframeworkとか。技術ブログにしたいなと。環境は Windows7x64, mac です。たまに声優さん情報が混ざります。最近ちょっとClojure触りました。

neo4jでスフィアの共演作品を出してみる

データの準備

ここが一番大変
Wikipediaから2016/05/07現在の登録情報を抜き出してcsv形式にします。

docs.google.com

import

LOAD CSV WITH HEADERS FROM "file:///anime.csv" AS csvLine
MERGE (s: 声優 {名前: csvLine.名前})
MERGE (a: アニメ {作品名: csvLine.作品名, 放映年: csvLine.放映年})
CREATE (s)-[:出演]->(a)

表示

MATCH (n) RETURN n

f:id:FScoward:20160507171537p:plain

設定を変更しないで表示させると350件表示までしてくれないのでInitial Node Displayを1000に変えておくとよし。

あやひーと他のメンバーとの共演作品をグラフ化

MATCH (a: 声優{名前: "高垣彩陽"})-[r:出演]->(b),
(b)<--(s)
WHERE (s.名前="豊崎愛生")
RETURN a,b,s

f:id:FScoward:20160507171449p:plain

MATCH (a: 声優{名前: "高垣彩陽"})-[r:出演]->(b),
(b)<--(s)
WHERE (s.名前="戸松遥")
RETURN a,b,s

f:id:FScoward:20160507171423p:plain

MATCH (a: 声優{名前: "高垣彩陽"})-[r:出演]->(b),
(b)<--(s)
WHERE (s.名前="寿美菜子")
RETURN a,b,s

f:id:FScoward:20160507171657p:plain

2010年の共演

MATCH (a: 声優{名前: "高垣彩陽"})-[r:出演]->(b),
(b)<--(s)
WHERE (b.放映年="2010年")
RETURN a,b,s

f:id:FScoward:20160507171927p:plain

4人全員が出演している作品

MATCH (a: 声優{名前: "高垣彩陽"})-[r:出演]->(b),
(b)<--(s: 声優{名前: "豊崎愛生"}),
(b)<--(s2: 声優{名前: "戸松遥"}),
(b)<--(s3: 声優{名前: "寿美菜子"})
RETURN a,b,s,s2,s3

f:id:FScoward:20160507175636p:plain

そふてにっ に4人出てたんだ・・・知らんかった

neo4j ローカルファイルインポート

ファイルを用意

id,name
1,"高垣彩陽"
2,"豊崎愛生"
3,"寿美菜子"
4,"戸松遥"
5,"雨宮天"
6,"夏川椎菜"
7,"麻倉もも"
id,name
1,Sphere
2,TrySail
actorId,unitId
1,1
2,1
3,1
4,1
5,2
6,2
7,2

ファイル格納

Neo4jのDatabase Locationで指定しているディレクトリ配下にimportというフォルダを用意してそこにcsvファイルを格納する。

C:\Users\FScoward\Documents\Neo4j\default.graphdb\import\seiyu.csv

LOAD CSVでファイルをインポートする

MATCH (n) DELETE n

LOAD CSV WITH HEADERS FROM "file:///seiyu.csv" AS csvLine
CREATE (a: Actor {actorId: toInt(csvLine.id), name: csvLine.name} )

LOAD CSV WITH HEADERS FROM "file:///unit.csv" AS csvLine
CREATE (u: Unit {unitId: toInt(csvLine.id), name: csvLine.name} )


LOAD CSV WITH HEADERS FROM "file:///belong.csv" AS csvLine
MATCH (a: Actor {actorId: toInt(csvLine.actorId)}), (u: Unit {unitId: toInt(csvLine.unitId)})
CREATE (a)-[:BELONG]->(u)

f:id:FScoward:20160507120856p:plain

グラフ型データベース入門 - Neo4jを使う

グラフ型データベース入門 - Neo4jを使う

グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門

グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門

はじめてのneo4j

neo4j をダウンロードして起動して、パスワード設定をすること。

github.com

f:id:FScoward:20160430105248j:plain

グラフ型データベース入門 - Neo4jを使う

グラフ型データベース入門 - Neo4jを使う

Applicant Tracking System (ATS) とは

個人メモ

ATSとは?

人材採用のための道具である。

経験や直感による採用はもう古い、人材採用に広がるデータ・ドリブンなアプローチ | TechCrunch Japan

なぜATSが必要か

企業によっては一日に幾つもの面談をして合計何百人という人たちを管理しなければならない。 そうなってくるとエクセルでやるのは少しツライものが出てくる。 そういう時に採用管理のツールが必要となる。(逆に言うとエクセルでまかなえるならわざわざ使う必要はないということ。)

採用に関して

日本の人口減少に歯止めがかからず、今後"優秀な"人材の確保は困難になってくる可能性が高い。 今までのように新卒一括採用で大量に取るだけではなく、中途採用で優秀な人材を獲得することが重要となるのではないだろうか。

人事の動向

人事は自分たちが会社を成長させるための重要な柱であることをキチンと認識して優秀な人材を積極的に取っていく必要がある。 しかし、人事も無闇矢鱈にやってもダメで、情報を整理・管理して数値化して最適な採用計画を立てて採用活動を進めていかなければならない。

海外のATS

www.softwareadvice.com

アメリカの傾向

人事とは会社を成長させるための採用というプロフェッショナルな技能を求められる職種であり、アメリカではリクルーターの育成に力を入れている。

www.works-i.com

http://www.works-i.com/pdf/r_140404.pdf

さいごに

仕事を自分で探すのではなく、リクルーターに探してもらう。 そんな風になるといいなぁ

How Google Works (ハウ・グーグル・ワークス)  ―私たちの働き方とマネジメント

How Google Works (ハウ・グーグル・ワークス) ―私たちの働き方とマネジメント

Redux ちょっとわかってきたこと

reducer と action の関係

actionはどういう挙動がありますよーっていう定義。 reducerはその定義に対して実際どういう動きしますよーっていう実際の処理を記述する。 だからreducerはstoreとactionを引数に受け取って新たなstateを返す関数となる。 (reducer と action が紐づく)

dispatch

Reduxではdispatchが既に定義されている。

Store | Redux

dispatchはstateを変更する唯一の方法である。 dispatchはactionを引数に取り、dispatch actionのオブジェクトを返す。

store と reducer の関係

ひとつの Redux application にストアは一つ。 createStoreという関数が定義されていて第一引数にreducerを受け取るようになっている。 createStoreを使用することでreducerとstoreを紐付ける事ができる。

createStore | Redux

Exampleにもあるように createStore で reducer の紐付いた store を定義し、store.dispatch で action の種類と値を渡してやることで reducer の処理が実施され store の内容が更新される。

fluxフレームワークreduxについてドキュメントを読んだメモ - fukajun - 僕はvimで行きます -

redux-form

gist.github.com

入門 React ―コンポーネントベースのWebフロントエンド開発

入門 React ―コンポーネントベースのWebフロントエンド開発

いけにえと雪のセツナ Original Soundtrack

いけにえと雪のセツナ Original Soundtrack