# Neo4jの機能と実践的な使い方
🔍 SQLで5段JOINになる問い合わせが、矢印の絵1行で書ける——Cypherはグラフのための宣言型クエリ言語です。
🏷️ タイトル: Cypher(宣言型グラフクエリ言語)
🔗 URL:
📘 概要
CypherはNeo4jのために設計された宣言型のグラフクエリ言語です。「どう取得するか」ではなく「どんなデータが欲しいか」を、アスキーアート的なパターンで表現します。アプリ・分析・運用すべてに共通する、グラフの共通言語です。
⚙️ 機能の説明
Cypherの核はパターンマッチングです。
・ノードは丸括弧 `(node)` で表す
・リレーションシップは角括弧と矢印 `-[rel]->` で表し、方向を矢印で示す
・ラベルや型、プロパティをパターン内に直接書ける(`(:User {id: $id})`)
主要な句は次の通りです。
・`MATCH`: グラフ内のパターンを検索する
・`RETURN`: 返す結果を射影する
・`WHERE`: 条件で絞り込む
・`CREATE` / `MERGE`: 作成 / なければ作成あれば一致
・`WITH`: 複数ステップのパイプラインを組む
CypherはGQL(ISOのグラフクエリ言語標準)に準拠しつつNeo4j拡張を持ちます。Neo4j 2025.06以降、新機能はCypher 25に追加され、Cypher 5は凍結されています。
🛠️ 実践的な使い方
SQLで複数JOINになる問い合わせが、1つのパターンで書けます。
```cypher
MATCH (c:Customer {id: $id})-[:ORDERED]->(o:Order)-[:CONTAINS]->(p:Product)
RETURN count(*) AS times
ORDER BY times DESC
```
クエリには必ずパラメータ(`$id`)を使います。インジェクション防止と実行計画キャッシュの両方に効きます。
💡 ユースケース
顧客の購買履歴集計、レコメンド、不正検知の経路追跡、組織図のたどり方など、つながりを問う業務すべての基盤になります。可読性が高く、SQLより少ない行数で複雑なトラバーサルを表現できます。
⚠️ 注意点
・文字列連結でクエリを組み立てず、必ずパラメータ化します。
・バージョン差に注意します。新機能はCypher 25中心で、Cypher 5は凍結済みです。互換性を確認しましょう。
・宣言型ゆえ、書き方次第で実行計画が大きく変わります。重いクエリはPROFILE/EXPLAINで確認します。
#
Neo4j# #
Cypher#