SlideShare a Scribd company logo
1 of 35
Download to read offline
グラフデータベースNeo4Jで
アセットダウンロードの構成管理と最適化
グリー株式会社
Wright Flyer Studios事業本部
NT Production部 Engineeringグループ
鈴⽊ 清⼈
CEDEC 2017
⾃⼰紹介
• 鈴⽊ 清⼈ (スズキ キヨト)
• グリー株式会社
• Wright Flyer Studios事業本部
• リードエンジニア
2001年 横浜国⽴⼤学 ⼯学部 電⼦情報⼯学科卒業
2013年 グリー株式会社 ⼊社
グリーが⼤規模なサーバ負荷にどうやって対処しているのかを⾒たいと思って⼊社したら、な
ぜか⾃ら負荷を作り出すための活動をすることに
BIシステム、「天と⼤地と⼥神の魔法」のサーバアプリ開発を経て、「アナザーエデン」の各
種パイプラインの下回り全般を担当
• はじめにまとめ、そしてデモ
• なぜグラフDBを使うのか
• グラフDB Neo4J
• アナザーエデンの場合
• マスタデータとファイルツリーをグラフDBに⼊れる
• ダウンロードフェーズをどうやって構成するのか
• ツラみとコツ
もくじ
• アナザーエデンでは、複数のフェーズに分けてユーザにアセットをダウンロー
ドさせている
• グラフDB Neo4Jを利⽤したダウンロードフェーズの⾃動構成は、基本的に⼗
分、運⽤に耐える状態である
• 開発の進⾏におうじて、アセットダウンロードサイズを継続的にモニタリ
ングすることができている
• 開発締め切り間近のタイミングで、事後的にアセットダウンロードのタイミン
グを再構成できることは、ひじょうに⼤きなメリットである
• アセットパイプラインを構築するエンジニアは、だいたいそのあたり場所
とタイミングでいろんな不如意の尻拭いをしてまわることになるのだ
はじめに(まとめ)
というわけで、まずは、デモします
デモ
• アナザーエデンの主⼈公キャラ「アルド」のマ
スタデータ
• ⼤量のVoiceファイルとジョブなどに関連
• Neo4JのWeb Consoleでは、このようにビジュ
アライズされたカタチで、データを⾒ていける
• ⾒栄えはいいが、わりとデバッグ⽤
• ノードをダブルクリックすると、結びついてい
るノードをすべて表⽰できる
• だんだんブラウザが重くなる
さて、では、
なぜグラフDBを使うのか?
アセットパイプライン構築における変数
ミドルウェア
ゲームエンジン
開発状況
市場環境
ユーザ⽂化
プロダクトの
内容・ジャンル チーム規模
スキル⽔準
チーム熟練度
プランニング部⾨
エンジニアリング部⾨
アート部⾨
すべてをつねに満⾜させる「ベスト」プラクティスは存在しない
• ⼊稿管理の問題と配布の問題を切り離して考えることができる
• ⼊稿 = 開発者の都合
• 配布 = エンドユーザの都合
なぜ、グラフDBなのか
Graph DB
ファイルツリーを管理
マスタデータを管理
いい感じに配布
インクリメンタルに統合
アーティスト
プランナ
スクリプタ
エンドユーザ
エンジニア
当事者ごとの視点の違い
• ノード(頂点/葉)とエッジ(辺/枝)の集合で表現される
• 多対多の関係を柔軟に定義できる
• 関係の管理や経路探索にまつわる成熟した⼀連の体系がある
• 18世紀にオイラーが「ひと筆書きの問題」として提⽰したのが始まり
グラフ理論
• グラフDBは関係性の問題(グラフ理論)を取り扱う専⽤のミ
ドルウェア
• 属性つきの関係データを取り扱うことができる
• 洗練された経路探索アルゴリズムの実装を持つ
• 循環参照等、運⽤の実際における問題をうまく解決できる
• 実⽤に耐える⼗分なパフォーマンスが出ている
• 管理・デバッグ⽤のビジュアライズツールが揃っている
グラフDB
Relational DB vs Document Store vs Graph DB
Relational DB
Document Store
Graph DB
スキーマで定義
関係⾃体が
データの実体
今回のグラフDBの⽤法
Static Graph ⼩さなデータ 低可⽤性
Batch Queryでのみ利⽤
確定したダウンロード構
成は静的である
• manifestファイル
開発の進展という側⾯に
おいてのみ動的
• 各バージョン毎にStatic
稼働中のサービスから呼
び出されたりはしない
クラスタを組む必要なし
共⽤で使うので、開発環
境あたりひとつでよい
データ量は、数⼗名程度
のチームのメンバが⼈⼒
で⽣成していける程度の
規模である
• マスタデータ
• 数万レコード
• ファイル
• 1万ファイル
• 数GB
Instance Type AWS r4.xlarge
CPU Cores 4
Memory 30.5GB
Storage EBS
• OSSでもっとも⼈気の⾼いグラフDB
• DB Enginesで21位 (2017/8時点)
• 2010年にVer.1.0がリリース
• 現在はVer.3.2
• 基本的に無料で利⽤可能
• Enterprise版はクラスタリング対応と
可⽤性の向上、およびベンダサポート
• 各種OSへのインストールも簡単
• コマンド⼀発
Graph Database Neo4J
• プロパティグラフモデル
• 経路探索時の条件付け
• 専⽤のQL Cypher
• グラフをシンプルなテキストで
記述可能
• 標準Webコンソール
• 各種作業をいい感じにビジュア
ライズ
• そこそこ良好なパフォーマンス
• 1つだけ結果が返る場合はミリ秒
オーダー
パイプライン(全体)
1
2
3
3+1つのステップ
Neo4Jに状態をImport
関連ファイルのリストを⽣成
ダウンロードフェーズに分配
4 フェーズ単位で⼀括ダウンロード
2 4
• importer
• python 3.6 or 2.7
• Bolt Protocol
• 差分更新
• 関係の基本はスキーマ側に定義
• Character.skillId -> Skill.id といっ
た関係を定義
• 定義形式は任意
• SQL 等でもよい
• 実データと実ファイルをスキャンして投⼊
1.ノードを追加
2.ノード間の関係を追加
Step1: アセット部品をNeo4Jに登録
アナザーエデンの場合
ローンチ時 2017/4 現在 2017/8
ノード数 140K
リレーション数 360K
テーブル数 165
ファイル数 8.5K
ファイルサイズ 4.6GB
配布サイズ 750MB
ノード数 200K
リレーション数 500K
テーブル数 200
ファイル数 10K
ファイルサイズ 5.6GB
配布サイズ 950MB
Cypherの基本
()-[]-()() ノード
[] リレーション
- 接続
Cypherを使ってグラフを表現する
(:Character)-[:skillId]->(:Skill)-[:`<skillId>.png`]->(:File)
CharacterレコードはSkillを経由して、スキルの素材ファイルを参照している⽇本語
Cypher
Property
Graph
※実際のスキーマはもうちょっと複雑です
関係を抽出するクエリの例 1
match p = (:Character)-[*1]->(:PcSkill) return p limit 1 24ms
キャラクタとスキルの結びつきを1つ取得
関係を抽出するクエリの例 2
match p = (c:Character)-[]-(s:PcSkill)-[]-(e:PcSkillEffect)-[]-
(b:BattleEffect)-[]-(g:`.png`)
return p limit 1 6ms
キャラクタ->スキル->スキルエフェクト->バトルエフェクト->ファイルと辿る
関係を抽出するクエリの例 3
match p = shortestpath((c:Character)-[*]-(g:`.ogg`))
return p limit 1 8ms
キャラクタと.oggファイルの最短経路を1つ抽出
Step 2: 集約キーごとのファイルリスト⽣成
• アナザーエデンの場合、2つの⼊⼝を⽤意
• キャラクタIDとロケーションID
• 次のクエリを⽤意
• 左端 = 集約のキーとなるノード
• 右端 = アセットの実ファイルパスを保持するノード
shortestpath((c:Character)-[r*]-(f {_nodeType: 'file'}))
match
p = shortestpath((c:Character)-[r*]-(f {_nodeType: 'file'}))
with c, f, p,
reduce(cost = 0, n in nodes(p) | cost + n._cost) as cost
where
cost <= 60 and
not any (x in relationships(p) where x.name = 'AreaList.id') and
not any (x in relationships(p) where x.name = 'AreaObject.id') and
not any (x in relationships(p) where x.name = 'Location.id')
return c.id, f.realPath
order by c.id, f.realPath;
Characterに紐づくファイル数をIDごとに集約
実際の集約のクエリ
コスト計算やガード条件で制御
• アプリにバンドル
• タイトル画⾯
• イントロ中
• ガチャ
• 中盤以降のシナリオx3
• 不要(お蔵⼊り or 未出)
ダウンロードフェーズに分配
IDごとの素材リストを7+1のダウンロードフェーズに分配
ビルド時にダウンロードフェーズに分配
output 1: project.manifest.1 (6232 files 341MB)
output 2: project.manifest.2 (862 files 173MB)
output 3: project.manifest.3 (257 files 39MB)
output 4: project.manifest.4 (770 files 122MB)
output 5: project.manifest.5 (443 files 101MB)
output 6: project.manifest.6 (228 files 70MB)
output 7: project.manifest.7 (218 files 110MB)
total asset size = 958MB
こんな感じで、フェーズごとのファイル数とサイズをビルドの
たびにチェックしています
まとめ
コツとツラみ
• 構成を管理できる、とはいうものの、、
• やはり誰にでも、というわけにはいかない
• やはり管理者がひとり必要である
• グラフDBに馴染みがなかったり、Cypherを習得するための(半⽇くらい
の)コストを払いづらかったり
• ほうっておくと勝⼿に関係性の蜘蛛の巣が拡⼤していく
• チームにリテラシーが醸成されると、勝⼿に関係を定義、管理してくれる
• ときどき棚卸ししましょう(3ヶ⽉に⼀度くらい)
• ときどきクエリもチューニングしましょう
ツラみ
• 最終的にはみんな負担を(劇的に)下げているのだ、ちゃんと役に⽴っているんだ、
と信じてやっていきましょう
• グラフDBなしでダウンロードフェーズを構成する、ということは、もはや考
えられないほどみんなが依存しているのは事実です
• 集約は実質的にフルスキャン
• 処理時間が発散したりはしませんが、それなりのコストがかかります
• データ量によりますが、数分から数⼗分程度
• クエリをこまかく場合分けすることも可能ですが、、、
• 勝⼿に増殖していく関係性の状態に追いつくのはかなりタイヘン
• 関係を定義するのを制約するのは「柔軟さ」を失わせることに
「遅い!」「重い!」の声
• 何をグラフDBに⼊れるべきか、をきちんと考えましょう
• スキーマ+マスタデータ+ファイルツリーというのはひとつの例に
すぎません
• 重要なのは「各当事者間の関係性を動的に管理してあげる」こと、
そのためにグラフDBを使う、ということです
• ⼊れるなら、はやめに⼊れましょう
• ⽇々、成⻑を続けるゲームアセットをインクリメンタルに統合して
いけることが強みです
• そのまま、かなりスムーズに運⽤に⼊ることができます
導⼊のコツ
• ダウンロードフェーズ構築以外の⽤途も探していきましょう
• 不満の声がやわらぎます
• 素材の網羅的なデータベースなので探しものの役にたちます
• 不要なファイルの抽出にも利⽤できるでしょう
• 本番⽤のマスタデータDBにも使えるでしょう
• 運⽤設備構築とベンチマークとある程度の慣れが必要ですが
• もちろんソーシャルグラフのDBに最適です
• RDBのようなIndex Scanが不要なのはそれなりに⼤きいです
導⼊のコツ
おしまい
• Neo4J公式サイト
• https://neo4j.com/
• Neo4J OʼReilly本
• https://neo4j.com/graph-databases-book/
• FlatBuffers
• https://google.github.io/flatbuffers/
参考⽂献

More Related Content

What's hot

DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...NTT DATA Technology & Innovation
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII
 
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Takahiko Ito
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術Preferred Networks
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いたAkihiro Kuwano
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介ippei_suzuki
 
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組みHironori Washizaki
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォームAutoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォームTakuya Azumi
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?Sho Tanaka
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門ryosuke-kojima
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~Hideki Tsunashima
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」西岡 賢一郎
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOpsMariOhbuchi
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Preferred Networks
 

What's hot (20)

DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
 
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
 
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
SSII2020SS: グラフデータでも深層学習 〜 Graph Neural Networks 入門 〜
 
RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」RDF Semantic Graph「RDF 超入門」
RDF Semantic Graph「RDF 超入門」
 
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
Elasticsearch の検索精度のチューニング 〜テストを作って高速かつ安全に〜
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術20180729 Preferred Networksの機械学習クラスタを支える技術
20180729 Preferred Networksの機械学習クラスタを支える技術
 
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
 
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
機械学習デザインパターンおよび機械学習システムの品質保証の取り組み
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォームAutoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
Autoware: ROSを用いた一般道自動運転向けソフトウェアプラットフォーム
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
 
グラフニューラルネットワーク入門
グラフニューラルネットワーク入門グラフニューラルネットワーク入門
グラフニューラルネットワーク入門
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」学習時に使ってはいないデータの混入「リーケージを避ける」
学習時に使ってはいないデータの混入「リーケージを避ける」
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
 
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
 

Similar to グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化

20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
JAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdfJAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdfEkaterina704352
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsKohei KaiGai
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するTakahito Tejima
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境yuichi_komatsu
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?Kohei KaiGai
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpuKohei KaiGai
 
Presto on YARNの導入・運用
Presto on YARNの導入・運用Presto on YARNの導入・運用
Presto on YARNの導入・運用cyberagent
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12thSatoshi Kume
 
Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理Tusyoshi Matsuzaki
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验Ryan Poy
 
Data processing at spotify using scio
Data processing at spotify using scioData processing at spotify using scio
Data processing at spotify using scioJulien Tournay
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignRyuji TAKEHARA
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Mori Shingo
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇Manabu Ori
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03Akimitsu Takagi
 
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom VisionAzure IoT Edge で Custom Vision
Azure IoT Edge で Custom VisionYoshitaka Seo
 

Similar to グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化 (20)

20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
JAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdfJAWS-UGお遍路_20230916.pdf
JAWS-UGお遍路_20230916.pdf
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
SparkやBigQueryなどを用いた モバイルゲーム分析環境
SparkやBigQueryなどを用いたモバイルゲーム分析環境SparkやBigQueryなどを用いたモバイルゲーム分析環境
SparkやBigQueryなどを用いた モバイルゲーム分析環境
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpu
 
Presto on YARNの導入・運用
Presto on YARNの導入・運用Presto on YARNの導入・運用
Presto on YARNの導入・運用
 
201209 Biopackathon 12th
201209 Biopackathon 12th201209 Biopackathon 12th
201209 Biopackathon 12th
 
Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验
 
Data processing at spotify using scio
Data processing at spotify using scioData processing at spotify using scio
Data processing at spotify using scio
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
 
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
Learning spaerk chapter03
Learning spaerk chapter03Learning spaerk chapter03
Learning spaerk chapter03
 
Azure IoT Edge で Custom Vision
Azure IoT Edge で Custom VisionAzure IoT Edge で Custom Vision
Azure IoT Edge で Custom Vision
 

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
 
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
 
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
 
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介gree_tech
 
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてgree_tech
 
海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験gree_tech
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組みgree_tech
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違いgree_tech
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介gree_tech
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてgree_tech
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーgree_tech
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-gree_tech
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話gree_tech
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)gree_tech
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行gree_tech
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜gree_tech
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)gree_tech
 

More from gree_tech (20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
 
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
 
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
 
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
 
海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
 

グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化