Communityコーディング&開発github.com

24601/surreal-skills

SurrealDBのSurrealism WASM拡張開発。Rust関数を作成し、WASMにコンパイルしてデータベースモジュールとしてデプロイします。surreal-skillsコレクションの一部です。

surreal-skills とは?

このスキルは、SurrealDB 3で新たに導入されたSurrealismフレームワークを利用して、データベース用のネイティブWASM拡張を開発するためのものです。Rustで独自の関数を記述し、WebAssemblyにコンパイルすることで、SurrealQLから直接呼び出せるデータベースモジュールとしてデプロイできます。主なワークフローは、Rustコードに`#[surrealism]`アトリビュートを付与し、`surreal module compile`コマンドでWASMバイナリを生成、その後SurrealQLの`DEFINE BUCKET`と`DEFINE MODULE`で登録して使用します。これにより、カスタムスカラー関数、テスト用の偽データ生成、ドメイン固有のロジック、特殊な暗号化処理など、SurrealDBのコア機能ではカバーしきれない処理を拡張できます。現在は活発に開発中のためAPIは安定しておらず、変更される可能性があります。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealism

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Surrealism -- SurrealDBのWASM拡張

SurrealDB 3の新機能。Rustでカスタム関数を記述し、WebAssembly (WASM) にコンパイルして、SurrealQLから呼び出せるネイティブデータベースモジュールとしてデプロイします。

前提条件

  • Rustツールチェーン(stable)と wasm32-unknown-unknown ターゲット
  • SurrealDB CLI v3.1.4以上(surreal module サブコマンドを含む surreal バイナリ)
  • SurrealQLの DEFINE MODULE と DEFINE BUCKET の知識

開発ワークフロー

1. アノテーション -- surrealism.toml + Rust関数への #[surrealism]
2. コンパイル    -- surreal module compile  (.wasm バイナリを生成)
3. 登録         -- SurrealQLで DEFINE BUCKET + DEFINE MODULE

クイックスタート

# Surrealismプロジェクトを作成
cargo new --lib my_extension
cd my_extension

# WASMターゲットを追加
rustup target add wasm32-unknown-unknown

# surrealism.toml(必須のマニフェスト)を作成
cat > surrealism.toml << 'TOML'
[package]
name = "my_extension"
version = "0.1.0"
TOML

# 拡張を記述(#[surrealism] でアノテーション)
cat > src/lib.rs << 'RUST'
use surrealism::surrealism;

#[surrealism]
fn greet(name: String) -> String {
    format!("こんにちは、{}!", name)
}
RUST

# SurrealDB CLIを使ってWASMにコンパイル
surreal module compile

# SurrealDBに登録
surreal sql --endpoint http://localhost:8000 --user root --pass root --ns test --db test
-- WASMファイルへのアクセスを許可
DEFINE BUCKET my_bucket;

-- モジュール関数を登録
DEFINE MODULE my_extension FROM 'my_bucket:my_extension.wasm';

-- クエリで関数を使用
SELECT my_extension::greet('World');

ユースケース

  • SurrealQLから呼び出せるカスタムスカラー関数
  • テスト用のフェイク/モックデータ生成
  • ドメイン固有ロジック(言語処理、定量ファイナンス、カスタムエンコーディング)
  • SurrealDBのコアには含まれていないニッチなRustクレート機能へのアクセス
  • 全文検索用のカスタムアナライザ

ステータス

Surrealismは活発に開発中であり、まだ安定していません。APIはSurrealDB 3.xのリリース間で変更される可能性があります。フィードバックはsurrealdb/surrealdbリポジトリのGitHub Issue/PRで報告してください。

完全なドキュメント

完全なガイダンスについては、メインのスキルルールファイルを参照してください:

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

関連スキル