Upgrade to Pro — share decks privately, control downloads, hide ads and more …

グラフDBで解き明かすコードの系譜 ~Amazon Neptuneによるメソッド依存関係の可視化~

グラフDBで解き明かすコードの系譜 ~Amazon Neptuneによるメソッド依存関係の可視化~

開発時、複雑なメソッドの依存関係を洗い出すのに一苦労した新米エンジニアが、Amazon Neptuneを利用して依存関係を可視化した取り組みです。

Avatar for MatsuzawaTakeshi

MatsuzawaTakeshi

June 10, 2025
Tweet

More Decks by MatsuzawaTakeshi

Other Decks in Technology

Transcript

  1. 2 Copyright(C) NRI Netcom, Ltd. All rights reserved. 1. 自己紹介

    2. ある日の出来事 3. Amazon Neptuneとは 4. メソッドの依存関係を可視化してみた 5. まとめ 目次
  2. 4 Copyright(C) NRI Netcom, Ltd. All rights reserved. 1. 自己紹介

    名前:松澤武志 出身:兵庫県小野市 趣味:お弁当作り・推し活 保有AWS認定: 所属:NTシステム事業一部 NTシステム開発二課 職種:アプリケーションエンジニア Webアプリケーションのフロントエンド・バックエンド開発 Spring Boot(Java)・Angular(TypeScript) 経歴: 2024年4月 NRIネットコム入社 2024年7月 NTシステム事業一部に配属 2025年12月 Amazon SageMaker AIに10$課金する 2025年3月 JAWS DAYS 2025参加 お気に入りの AWSのジャケット Amazon SageMaker AI
  3. 6 Copyright(C) NRI Netcom, Ltd. All rights reserved. 2. ある日の出来事

    Java開発中 メソッド依存関係の洗い出しを行う コード追うの疲れる… Controller #methodA Service #methodA Logic #methodA Logic #methodB Controller #methodB Service #methodB ※実際はメソッドのみならずクラスやパッケージ等も合わさり、もっと複雑です 共通箇所の修正 →他実装への影響範囲が大 →単体テストケースでのデグレ確認の項目として参考 メソッドの依存関係とは? IntelliJ IDEA JetBrains社
  4. 7 Copyright(C) NRI Netcom, Ltd. All rights reserved. 2. ある日の出来事

    松澤のメソッドの洗い出し方 IntelliJ IDEA画面上 public class Hoge { public String huga( String bar ){ // 省略 } Import Hoge Public class Foo { private final Hoge hoge; void buz( String bar ){ final String piyo = hoge.huga(bar); // 省略 } mdファイルに階層でまとめる Foo#huga Hoge#buz Controller#•• Hoge#☆☆ Controller#★★ ーーー 中略(大量) ーーー △△#□□ △△#▪▪ Hoge#buz Controller#•• Controller#★★ が関わるので••APIと ★★APIの挙動に影響が 出るか確認しよう! たまに再利用 →複雑な依存関係 ここの労力を減らしたい!
  5. 8 Copyright(C) NRI Netcom, Ltd. All rights reserved. 2. ある日の出来事

    Controller #methodA Service #methodA Logic #methodA Logic #methodB Controller #methodB Service #methodB そもそも依存関係を可視化できればいいのでは? グラフDBであるAmazon Neptuneを利用して可視化してみよう! public class Hoge { public String huga( String bar ){ // 省略 } Import Hoge public class Foo { private final Hoge hoge; void huga( String bar ){ final String piyo = hoge.huga(bar); // 省略 } Amazon Neptune
  6. 10 Copyright(C) NRI Netcom, Ltd. All rights reserved. そもそもグラフとは 3.

    Amazon Neptuneとは https://aws.amazon.com/jp/neptune/ 点 (Vertex) 線 (Edge) と • SNS(ユーザーが点、フォロー関係が線) • 不正パターン検出 • 機械学習/深層学習 (グラフニューラルネットワーク/GNN) ユースケース で構成される数学的な関係 「関係」に特化
  7. 11 Copyright(C) NRI Netcom, Ltd. All rights reserved. Amazon Neptuneについて

    3. Amazon Neptuneとは フルマネージド型のグラフデータベース グラフモデル 対応 2つの主要なグラフモデル Property Graph(TinkerPop/Gremlin)、RDF(SPARQL)をサポート 高速なクエリ 数百万の関係性を高速にクエリ 高い安全性 Amazon Virtual Private Cloud(VPC)によるネットワーク分離 AWS Key Management Service(AWS KMS)による暗号化に対応 高可用性 Neptuneレプリカを作成し、読み取りの負荷を軽減 高い耐久性 クラスターボリュームにより、AZ間でレプリケーション • 2025年1月21日リリース • グラフDBを活用した検索拡張生成(RAG) ワークフローの構築を容易に • ベクトルベースの類似性では得られない関 連情報を見つけることが可能 特徴 GraphRAG Toolkit New! Amazon Neptune
  8. 13 Copyright(C) NRI Netcom, Ltd. All rights reserved. 今回登録するメソッドの依存関係 4.

    メソッドの依存関係を可視化してみた Spring Boot アプリケーションを 想定 4つの層のみ考慮 4つのAPI
  9. 14 Copyright(C) NRI Netcom, Ltd. All rights reserved. リソースのプロビジョニング 4.

    メソッドの依存関係を可視化してみた 役割 AWS リソース Amazon VPCとともに Neptuneクラスターを プロビジョニング AWS CloudFormation グラフDB Amazon Neptune Neptuneクラスターに クエリを行う ノートブックインスタンスを 作成 Amazon SageMaker AI Neptuneに データをロードするための 踏み台 Amazon Elastic Compute Cloud (Amazon EC2) データソース(Vertex.csv、 Edge.csv)を保存 Amazon Simple Storage Service (Amazon S3)
  10. 15 Copyright(C) NRI Netcom, Ltd. All rights reserved. Neptune Bulk

    Loaderによるデータの登録 Neptune Bulk Loaderとは  Neptuneクラスターにデータを登録する方法の一種  外部ファイルに存在するデータを取り込む  高速で、大量のデータをインポートするのに適する 4. メソッドの依存関係を可視化してみた 200 OK AmazonS3ReadOnlyAccess Vertex.csv Edge.csv ssh接続 curlコマンド Vertex.csv Edge.csv 頂点のデータ • Group:string:タグ • label 辺のデータ • From • to • label Amazon Neptune Amazon EC2 Amazon S3
  11. 17 Copyright(C) NRI Netcom, Ltd. All rights reserved. Graph Explorerによる可視化1

    4. メソッドの依存関係を可視化してみた 対応!
  12. 20 Copyright(C) NRI Netcom, Ltd. All rights reserved. メソッド依存関係の把握ができた! 

    図として管理しなくても把握が可能 今後の展望  データを随時追加してインタラクティブな可視化  他の可視化ツール • Cambridge Intelligence JavaScriptやReact用のSDKでアプリケーション化 今回の課金額:15.44$  Neptune:$10.11 • APS2-Neptune:ServerlessUsage  EC2 その他(今回はNatGateway):$3.56 • APS2-NatGateway-Hours • APS2-NatGateway-Bytes  SageMaker:$0.98 • APS2-Notebk:ml.t3.medium • APS2-Notebk:VolumeUsage.gp2  VPC:$0.78 • APS2-VpcEndpoint-Hours 5. まとめ 皆さんもAmazon Neptuneで あらゆる関係を可視化していきましょう!