SlideShare a Scribd company logo
1 of 47
Getting Started with Graph Database with
Python
2019/10/10 PyFukuoka #7
@loftkun
About Me
• @loftkun
• ヤフー株式会社
• サービスプラットフォーム本部
• 将棋(初段)/ ピアノ(独学)/ LIVE(スピッツetc)
• Python歴 3年くらい
• 週1参加・月1登壇
IT Event Bot
福岡新着ITイベント
@ITEventFukuoka
Agenda
Graph Database
GitHubAPI
Neo4J
Graph Database
Graph
Graph
点(Node)と線(Edge)で表現されるデータ構造
Graph
User
User
User
Tweet
Tweet
Tweet
Tweet
点(Node)の種別を定義できる
Graph
User
User
User
Tweet
Tweet
Tweet
Tweet
線(Edge)の種別も定義できる
Follow
Post
Graph
User
User
User
Tweet
Tweet
Tweet
Tweet
線(Edge)は方向も持てる(有効グラフ)
点(Node)の関係を表せるのでRelationshipとも呼ばれる
親子関係、所有、アクションなどを表せる
Follow
Post
Graph
User
User
User
Tweet
Tweet
Follow
Post
Tweet
Tweet
NodeにもEdgeにも
属性(Property, Label)を付与できる
name : ロフトくん
followers : 1
following : 2
name : hoge
followers : 1
following : 0 name : fuga
followers : 1
following : 1
text : hello
text : むくり
text :おやす
text :
python!!
Graph Database
• Graph構造を扱えるデータベース
• AWS
• AmazonNeptune
• Azure
• Cosmos DB がグラフデータモデルをサポート
• GCP
• GKEにJanusGraphをデプロイ ( https://cloud.google.com/solutions/running-janusgraph-with-
bigtable?hl=ja )
• OSS
• Neo4J
Case
• ソーシャルグラフ
• Web上での人間の相関関係
• Facebook グラフAPI( https://developers.facebook.com/docs/graph-api )
• 最短経路問題
• 鉄道路線、カーナビ
• 最短経路= 各Edgeに付与した重み(距離)の合計が最も少ない経路
Case
• イレギュラーなパターンの発見
• クレジットカード等の不正利用検知
• 通常と異なる経路の検出
• https://neo4j.com/developer/(FraudDetection)
• パナマ文書や銀行顧客情報のICIJ国際調査報道ジャーナリスト連合によ
る解析 ( Neo4j + Linkrious )
• https://www.itmedia.co.jp/enterprise/articles/1605/25/news024.html
• 前職でやっていたこと
• IaaSの構成物(物理マシン、VM、ストレージ、NW )をGraph構造で定義&可
視化
• Node(VM)を2つクリックしたら経路(Edge) を表示など
GitHub API
GitHub GraphQLAPI v4
• v3 は REST だが、v4 は GraphQL APIとなっている
• WhyGitHubisusingGraphQL
• GraphQLletsyoureplacemultipleRESTrequestswithasinglecalltofetchthedatayouspecify
=>複数のRESTリクエストを1回の呼び出しに置き換えられる
• v3はPRやIssueなどエンドポイントが分かれている
• v4 はエンドポイントは1つ
https://developer.github.com/v4/
Explorer
• 左ペインにGraphQLを書いて実行でき
る
• Tyr& Errorに便利
• Syntax Checkもやってくれる
• マウスオーバーで型の説明も出る
https://developer.github.com/v4/explorer/?variables=%7B%7D&query=query%20%7B%0A%20%20__type%28name%3A%20%22Repo
sitory%22%29%20%7B%0A%20%20%20%20name%0A%20%20%20%20kind%0A%20%20%20%20description%0A%20%20%20%20f
ields%20%7B%0A%20%20%20%20%20%20name%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D
Types
全ての型を調べる 特定の型について調べる
https://developer.github.com/v4/guides/intro-to-graphql/#discovering-the-graphql-api
Authentication & Authorization
• v3 (REST)では必須ではない
• 認証しない場合はrate limit制限が厳しくなる
• v4 (GraphQL) では必須
• Basic認証
• あまりパスワードは使いたくない・・・
• OAuth認証
• 権限設定できるのでおすすめ
• OAuth用のtokenが必要となる
• Settings -->Developer settings ( https://github.com/settings/apps ) で作成しておく
• もしくはAuthorizations APIで作成できる
Python Sample
• 以下に置いています
• https://github.com/loftkun/github-api-samples/blob/master/v4/demo.py
• tokenを設定すると使えます
• 以下を試しました
1. ratelimit
2. user
3. repository
4. search
Post Query
1. ratelimit
1. ratelimit
2. user
2. user
3. repository
3. repository
4. search
4. search
Python スター数 ランキング発表!
Python Star Ranking: 6 -10
rank stars name description
6 48441 nvbn/thefuck Magnificent app which corrects your previous console command.
7 46840 pallets/flask The Python micro framework for building web applications.
8 44585 keras-team/keras Deep Learning for humans
9 44494 django/django The Web framework for perfectionists with deadlines.
10 43363 jakubroztocil/httpie
As easy as HTTPie /aitch-tee-tee-pie/ 🥧 Modern command line
HTTP client
Python Star Ranking: 1 -5
rank stars name description
1 74412
donnemartin/system-
design-primer
Learn how to design large-scale systems. Prep for the
system design interview. Includes Anki flashcards.
2 73840 vinta/awesome-python
A curated list of awesome Python frameworks, libraries,
software and resources
3 63299 public-apis/public-apis
A collective list of free APIs for use in software and web
development.
4 58120 tensorflow/models Models and examples built with TensorFlow
5 56406 ytdl-org/youtube-dl
Command-line program to download videos from
YouTube.com and other video sites
https://neo4j.com/style-guide/
Neo4J
• World'sleading graphdatabase
• クエリ言語
• Cypher ( default )
• Gremlin
• プロトコル
• Bolt (バイナリプロトコル )
• HTTP-API
• ドライバ
• Python/ Go /JS /Java / .NET /Ruby / PHP / etc
https://neo4j.com/developer/
sandbox
https://neo4j.com
sandbox- TwitterGraph
https://guides.neo4j.com/sandbox/twitter/index.html
favoranking
favoranking
Install
• Docker
• k8s ( Helm )
:play movie-graph
:play movie-graph
Python Sample
• 以下に置いています
• https://github.com/loftkun/neo4j-demo/blob/master/movie-graph/demo.py
• :play movie-graphで生成した全Nodeを検索してみました
Searchall Nodes
Searchall Nodes
Summary
Summary
• Pythonで GitHub GraphQL API v4 と Neo4J を操作してみた
• それぞれWebUIがあり、クエリの組み立てに便利だった
• 特にNeo4JのDashboardは可視化もしてくれるのが便利
• 採用されているクエリ言語が異なるためそれぞれ学習が必要だ
• 世の中の事例も参考にし、Graph構造が適していそうなデータを
操作する際はGraphDatabaseを活用していきたい
Thank you for listening !

More Related Content

What's hot

G検定傾向と対策2018
G検定傾向と対策2018G検定傾向と対策2018
G検定傾向と対策2018Hide Fukano
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたYusuke Kon
 
Py datameetup1
Py datameetup1Py datameetup1
Py datameetup1shiroyagi
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Kir Chou
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?Aki Ariga
 
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望Lina Katayose
 
ElectraとpQRNNについて
ElectraとpQRNNについてElectraとpQRNNについて
ElectraとpQRNNについてItsuki Slide
 
日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくるYuta Kashino
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplibShinya Okano
 
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
2020年10月29日 プロフェッショナルAI×RoboticsエンジニアへのロードマップNVIDIA Japan
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Takayuki Shimizukawa
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化Yutaka Kato
 
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2ManPingHe
 
Python×ドローンについて過去のPyConJP登壇から今までの進化。
Python×ドローンについて過去のPyConJP登壇から今までの進化。Python×ドローンについて過去のPyConJP登壇から今までの進化。
Python×ドローンについて過去のPyConJP登壇から今までの進化。Lina Katayose
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3tak9029
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Takayuki Shimizukawa
 
みんなのPython勉強会#62
みんなのPython勉強会#62みんなのPython勉強会#62
みんなのPython勉強会#62hiroya akita
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察cch-robo
 

What's hot (20)

G検定傾向と対策2018
G検定傾向と対策2018G検定傾向と対策2018
G検定傾向と対策2018
 
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみたRubyエンジニアがPythonをdisるためにPythonを勉強してみた
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
 
Py datameetup1
Py datameetup1Py datameetup1
Py datameetup1
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望
過去2回の登壇内容からのPython×ドローンの進化アップデート内容と今後について展望
 
ElectraとpQRNNについて
ElectraとpQRNNについてElectraとpQRNNについて
ElectraとpQRNNについて
 
Reactの全体像と新しい情報を収集する方法
Reactの全体像と新しい情報を収集する方法Reactの全体像と新しい情報を収集する方法
Reactの全体像と新しい情報を収集する方法
 
日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる日本のオープンデータプラットフォームをPythonでつくる
日本のオープンデータプラットフォームをPythonでつくる
 
Pyconjp2016 pyftplib
Pyconjp2016 pyftplibPyconjp2016 pyftplib
Pyconjp2016 pyftplib
 
Why python
Why pythonWhy python
Why python
 
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
2020年10月29日 プロフェッショナルAI×Roboticsエンジニアへのロードマップ
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
みんなのPython勉強会#43 Pyladies x Stapy ジョイントミートアップ #2
 
Python×ドローンについて過去のPyConJP登壇から今までの進化。
Python×ドローンについて過去のPyConJP登壇から今までの進化。Python×ドローンについて過去のPyConJP登壇から今までの進化。
Python×ドローンについて過去のPyConJP登壇から今までの進化。
 
Tensor flow勉強会3
Tensor flow勉強会3Tensor flow勉強会3
Tensor flow勉強会3
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 
みんなのPython勉強会#62
みんなのPython勉強会#62みんなのPython勉強会#62
みんなのPython勉強会#62
 
フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察フラッター開発におけるシークレット情報取扱考察
フラッター開発におけるシークレット情報取扱考察
 

Similar to Getting Started with Graph Database with Python

PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側masahito12
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようcch-robo
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門cch-robo
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大openrtm
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~Hideki Takase
 
WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側Yusuke Naka
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Yasuaki Matsuda
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストAtsuhiro Kubo
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)NTT DATA OSS Professional Services
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてTakuji Kawata
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMFAtomu Hidaka
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会Takayuki Shimizukawa
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Tomoya Hibi
 

Similar to Getting Started with Graph Database with Python (20)

PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側PTLのお仕事とリリースパイプラインの裏側
PTLのお仕事とリリースパイプラインの裏側
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
 
Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門Dart / Flutter コードファイルジェネレート入門
Dart / Flutter コードファイルジェネレート入門
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 
WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側WebRTC開発者向けプラットフォーム SkyWayの裏側
WebRTC開発者向けプラットフォーム SkyWayの裏側
 
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 について
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
 
14対話bot発表資料
14対話bot発表資料14対話bot発表資料
14対話bot発表資料
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 

More from ロフト くん

OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
 OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました! OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!ロフト くん
 
Demo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + MarkdownDemo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + Markdownロフト くん
 
Write slides and books in VSCode + Markdown
Write slides and books in VSCode + MarkdownWrite slides and books in VSCode + Markdown
Write slides and books in VSCode + Markdownロフト くん
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Wayロフト くん
 
Kubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみたKubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみたロフト くん
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )ロフト くん
 
Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )ロフト くん
 
Traffic Management with Istio
Traffic Management with IstioTraffic Management with Istio
Traffic Management with Istioロフト くん
 
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話ロフト くん
 
Enjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and HelmEnjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and Helmロフト くん
 

More from ロフト くん (10)

OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
 OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました! OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
OpenShiftのサポートを始めるぞ!高頻度で更新されるOSSを効果的にキャッチアップする仕組みを考えました!
 
Demo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + MarkdownDemo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + Markdown
 
Write slides and books in VSCode + Markdown
Write slides and books in VSCode + MarkdownWrite slides and books in VSCode + Markdown
Write slides and books in VSCode + Markdown
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
 
Kubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみたKubernetes The Hard Way をやってみた
Kubernetes The Hard Way をやってみた
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
 
Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )Traffic Management with Istio ( with Demo )
Traffic Management with Istio ( with Demo )
 
Traffic Management with Istio
Traffic Management with IstioTraffic Management with Istio
Traffic Management with Istio
 
AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話AbemaTVのコメントビューアを作る話
AbemaTVのコメントビューアを作る話
 
Enjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and HelmEnjoying k8s cluster with Minikube and Helm
Enjoying k8s cluster with Minikube and Helm
 

Recently uploaded

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 

Recently uploaded (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

Getting Started with Graph Database with Python

Editor's Notes

  1. [00:00] Getting Started with Graph Database with Python というタイトルで発表します、よろしくおねがいします
  2. [00:05] ロフトくんと申します、ヤフーで主にプラットフォーム・バックエンドを担当しています 趣味は将棋ピアノライブです、 Python歴は3年くらいです 勉強会は週1で参加、登壇は月1くらいでやっています。
  3. [00:25] 福岡の勉強会をつぶやくTwitterBotを動かしています、是非フォローおねがいします
  4. [00:30] アジェンダです、 グラフデータベース、GitHub API と Neo4Jを紹介します
  5. [00:35] まずグラフデータベースについて紹介します
  6. [00:40] グラフ構造の例を絵にしてみました
  7. [00:50] このように点 ノードと 線 エッジ で表現されるデータ構造です
  8. [01:00] ノードの種別を定義できます ここでは User と Tweet と定義してみました
  9. [01:10] エッジの種別も定義できます ここでは 緑のエッジをFollow、黄色のエッジをPost と定義してみました
  10. [01:20] エッジは方向も定義できます、Relationshipと呼ばれることもあります これによりFollowやTweetの方向を表せました
  11. [01:30] ノードやエッジにはプロパティとかラベルと呼ばれる属性を付与できます ユーザノードにはユーザ名、ツイートノードにはツイート本文などの属性を付与できそうでね
  12. [01:40] このようなグラフ構造を扱えるデータベースが、グラフデータベースです AWSはNeptuneというマネージドサービスを提供しています アズールはコスモスDBがグラフデータをサポートしている GCPはマネージドのサービスはなくてGKEにジェーナスグラフというOSSをデプロイする方法がドキュメントで紹介されていました そのほか、OSSとしてはNeo4Jが有名です
  13. [01:55] グラフデータベースが使われている事例を紹介します 先ほど紹介したデータ構造はソーシャルグラフになります。FacebookなどのSNSがAPIを提供しています。 他には、路線案内やカーナビなどで最短経路を求める用途にも使われています。 エッジに距離というプロパティを付与しておいて、その合計が最も小さい経路が最短経路になります
  14. [02:15] また、クレカの不正利用検知や、送金データの解析などで、通常とは異なるイレギュラーな関係性の検出にも使われています、 私は、前職で、IaaSの構成の可視化に使用していて、VMのノードを2つクリックしたらその間の経路を表示する、などをやってました。自分用メモ(JointJS, Graphviz)
  15. [02:30] つづいてGitHub APIについて紹介します
  16. [02:35] API v3 は REST ですが、 v4 が GraphQL API となっています。 なぜ、GraphQLを使うのかがドキュメントに乗っていて、 複数のRESTリクエストを1回の呼び出しに置き換えられるから、が理由のようです たしかにv3のエンドポイントは分かれていますが、v4のエンドポイントは1つとなっているので1回の呼び出しに置き換えられそうです
  17. [02:45] ExplorerというWebUIが提供されていて、GraphQLの実行を手軽に試せます シンタックスチェックしてれたり、型の説明も出るので便利です
  18. [02:55] どんなプロパティがあるかについて調べることが多いのですが、このようなクエリで型を調べることができます
  19. [03:05] APIを使用するための認証認可については v3では必須ではないですが、v4では必須となっています 方法はBasic認証とOauth認証があります Oauth認証の方がパスワードを使わなくて良く、権限設定もできるので安心感があります
  20. [03:15] PythonでGraphQL APIを叩いてみました。 サンプルはこちらにおいています。 今回は、ratelimit、user、リポジトリ情報の取得や、検索を試してみました。
  21. クエリを投げるのは普通にrequestsを使っています。 ヘッダに認証用のtokenを指定しています
  22. [03:30] ratelimit情報の取得クエリです GraphQLの文法としては、取得したいプロパティを書いていく文法になります
  23. [03:50] こちらが取得結果です。 APIを使用していくうちに remainingが4999、4998と減っていきます リセットされる日時も取得できています
  24. [04:00] ユーザ情報の取得です ピンしているリポジトリと、プルリクを取得するクエリです。 件数の指定や、取得したいプロパティを指定しています。
  25. [04:20] 取得結果です。 確かにピンしているリポジトリや、最近作成したPRが取得できていました。 この例では認証しているユーザj自身の情報を取得しているのでprivateなリポジトリの情報も取得できています
  26. [04:30] リポイトリ情報の取得クエリです。 お試しでpythonのドキュメントのリポジトリの PRやIssueを取得してみました
  27. [04:50] 結果はこのようになりました。 V3のREST APIだと、PRやIssueのAPIはエンドポイントが分かれているので複数回叩く必要があるのですが、 v4のGraphQL APIだとエンドポイントは同じなので1回の呼び出しで関連する情報が取得できています
  28. [05:00] リポジトリの検索クエリです
  29. [05:20] Pythonのスター数の多いリポジトリを調べてみました メモ エンドポイントは https://api.github.com/graphql クエリ https://developer.github.com/v4/query/ Searchのsyntax https://help.github.com/en/articles/understanding-the-search-syntax TODO: Why GitHub is using GraphQL を訳す
  30. [05:30] ということでスター数ランキングを発表します
  31. [05:40] まず、10位から6位までです Django と flaskは使ったことがありますが他はないです 機械学習関連のOSSがランキングしているようです 10位と6位は知っている方いらっしゃいましたら教えてください
  32. [06:00] 5位から1位です、全て使ったことがないです・・・勉強不足かもしれません 5 youtube-dlはYoutubeの動画ダウンロードできるらしいです 4 TensorFlow : 機械学習ライブラリがありますね 3 public-apis/public-apis は 世の中で公開されてるAPIのリストらしいです 2 awesome-python は pythonのライブラリのまとめらしいです 1system-design-primer は 大規模システムの設計方法 らしいです ということで、GitHub APIと、それを使って取得したPythonのスター数ランキングの紹介でした。
  33. [06:30] つづいてNeo4Jをしょうかいします
  34. [06:35] Neo4Jは World‘s leading graph database とうたっているようです クエリとしては CypherやGremlinに対応しています プロトコルはboltと呼ばれるバイナリプロトコルとHTTPがあります ドライバは各種言語向けに提供されています、Pythonももちろんあります
  35. [07:00] 公式サイトにすぐためせるサンドボックスが提供されています
  36. [07:15] あらかじめ様々なデータがセットされています。これはTwitterのグラフです。
  37. [07:30] Dashboardにクエリを入力すると、結果が可視化されます。 Cypherの文法では、かっこはノードで ハイフンや不等号でエッジを表します。 これはMeというノードからPostというエッジでつながっているTweetというノードを検索するCypherです また、Tweetについているいいねの数が多い順に取得するようにしています 実行するとDashboard上に可視化されます。 このスクショではTweetノードにTweet本文が表示されていますが、表示するプロパティは変えれるので、
  38. [07:45] このようにいいねの数を表示することもできます 私はいいね44が最高のようで、全然バズれてないです
  39. [08:00] サンドボックス以外にもインストールして使うこともできます コンテナイメージが提供されていて、 Kubernetesに簡単にデプロイできるチャートも公開されています。 コマンド一発でデプロイ可能です
  40. [08:15] チュートリアルも充実しています。 これは movie-graph という演習用のグラフのチュートリアルです 映画のタイトルと出演者などのデータを扱えます
  41. [08:30] チュートリアルに表示されるCypherをコピペして結果を見ることで学べます
  42. [08:45] Pythonで、Neo4Jに接続してCypherを投げるサンプルを書いてみました。 こちらにおいています。
  43. [09:00] Neo4Jへの接続はこのようになります。 Neo4j公式のPython用ドライバが使用できます。 これは全てのノードを検索するクエリです
  44. [09:15] この場合は映画のノードや人物のノードなど全て検索されます。 先ほどのチュートリアルに記載されているクエリを実行していくと理解を深められます。 ここまでで、Neo4Jの紹介でした。  
  45. [09:30] 最後にまとめです。
  46. [09:35] 読む。
  47. [09:55] ごせいちょうありがとうございました。