ソフトウェアエンジニア必見!Tursoが変えるデータアクセス:libSQLとWebAssemblyが実現する「インプロセスDB」の未来


ソフトウェアエンジニア必見!Tursoが変えるデータアクセス:libSQLとWebAssemblyが実現する「インプロセスDB」の未来

tursodatabase/turso

2025-12-14

Tursoは、一言で言うと「SQLiteと互換性のある、分散型の組み込み可能なSQLデータベース」です。

SQLite互換
普段使い慣れたSQLiteと同じように扱えます。

In-Process(インプロセス)
アプリケーションと同じプロセス内で動作します。これにより、従来のデータベースサーバーとの通信によるレイテンシ(遅延)が極めて少なくなります。

分散型
Tursoは、基盤技術としてlibSQL(SQLiteのフォーク)を用いており、世界中のエッジロケーションにデータを分散配置できます。

推し活の悩み(現状の課題)Tursoで解決!(熱い応援ポイント)
「推しイベントのチケット購入、通信が遅くて失敗...」 極小レイテンシ: アプリケーションとDBが近く(インプロセスやエッジ)にあるので、データアクセスが超高速!ユーザー体験が劇的に向上します。
「推しの最新情報、世界のファンにどう公平に届けるの?」 グローバル分散: 世界中のエッジにデータを配置できるので、どこからアクセスしても高速かつ一貫性のあるデータを提供できます。
「DBサーバーの管理が面倒で、推しへの愛をコードに注げない...」 サーバーレス・組み込み: DBサーバーの運用・管理から解放され、アプリケーションのロジック開発に集中できます。
「WebAssembly (Wasm) との連携が難しい...」 Wasmネイティブ: WebAssembly環境(Cloudflare Workers, Vercel Edge Functionsなど)でネイティブに動作するように設計されています。

Tursoを使い始めるには、CLI(コマンドラインインターフェース)を使うのが最も簡単で強力です。

まず、Tursoアカウントを作成し、CLIをインストールします。

# Turso CLIのインストール (macOS/Linuxの例)
curl -sSfL https://get.tur.so/install.sh | bash

# 認証
turso auth login
# ブラウザでログインが完了したら、CLIに戻って認証が完了します

turso db create コマンドで、新しいデータベースを作成します。これは、あなたの「推し専用データ保管庫」を作るイメージです。

# データベース名を設定して作成
turso db create my-oshi-db

# データベースの接続URLを確認
turso db show my-oshi-db
# > URL: libsql://...

アプリケーションからデータベースに接続するために、認証トークンを発行します。

# 読み書き可能な認証トークンを発行
turso db tokens create my-oshi-db

# > ...長い文字列のトークンが表示されます。これを環境変数などに保存します。

Tursoは多くの言語で利用できますが、ここではWeb開発でよく使われるNode.js環境での例を紹介します。Tursoが提供するlibSQLクライアントを使用します。

# プロジェクトフォルダを作成
mkdir turso-demo
cd turso-demo
npm init -y
npm install @libsql/client

# 実行ファイルを作成
touch index.js

環境変数から接続URLとトークンを取得して接続します。

import { createClient } from "@libsql/client";

// 環境変数から接続情報を取得
const url = process.env.TURSO_DATABASE_URL;
const authToken = process.env.TURSO_AUTH_TOKEN;

// URLとトークンが設定されているか確認
if (!url || !authToken) {
  console.error("エラー: TURSO_DATABASE_URL および TURSO_AUTH_TOKEN を設定してください。");
  process.exit(1);
}

// libSQLクライアントの初期化
const client = createClient({
  url: url,
  authToken: authToken,
});

async function runExample() {
  try {
    // 1. テーブルの作成 (推しのグッズ情報を保存)
    console.log(" テーブルを作成します...");
    await client.execute(`
      CREATE TABLE IF NOT EXISTS goods (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        price INTEGER,
        release_date TEXT
      );
    `);
    console.log(" テーブル作成完了!");

    // 2. データの挿入
    console.log(" グッズデータを挿入します...");
    const resultInsert = await client.execute({
      sql: "INSERT INTO goods (name, price, release_date) VALUES (?, ?, ?)",
      args: ["公式ペンライト", 5500, "2025-01-15"],
    });
    console.log(` データ挿入完了!ID: ${resultInsert.lastInsertRowid}`);

    // 3. データの取得
    console.log(" 全てのグッズを取得します...");
    const resultSelect = await client.execute("SELECT * FROM goods WHERE price > 5000");
    
    // 結果の表示
    console.log(" 取得したグッズ情報:");
    resultSelect.rows.forEach(row => {
        console.log(`  - 名前: ${row.name}, 価格: ${row.price}円, 発売日: ${row.release_date}`);
    });

  } catch (e) {
    console.error(" エラーが発生しました:", e);
  }
}

runExample();

ターミナルで環境変数を設定し、実行します。

# 環境変数を設定 (YOUR_URLとYOUR_TOKENは適宜置き換えてください)
export TURSO_DATABASE_URL="YOUR_URL"
export TURSO_AUTH_TOKEN="YOUR_TOKEN"

# 実行
node index.js
 テーブルを作成します...
 テーブル作成完了!
 グッズデータを挿入します...
 データ挿入完了!ID: 1
 全てのグッズを取得します...
 取得したグッズ情報:
  - 名前: 公式ペンライト, 価格: 5500円, 発売日: 2025-01-15

このように、TursoはSQLiteのシンプルさと、グローバルな分散能力・低レイテンシを兼ね備えた、モダンなサーバーレス/エッジ環境に最適なデータベースです。あなたのアプリケーション開発を強力に後押ししてくれること間違いなしですよ!


tursodatabase/turso




Vanna.AI徹底解説:データベースとの会話を可能にするAIツールの導入と活用法

よう、みんな!普段、データベースと格闘してるエンジニアなら、一度は「SQL書くのめんどくさいな〜」って思ったことあるよな?特に、ちょっと複雑な結合とか、集計とか、頭の中でクエリを組み立てるのに時間かかったりするんだよな。そんな俺たちエンジニアの救世主になりそうなのが、今回紹介するvanna-ai/vanna だ!一言で言うと、「自然言語でデータベースに質問すると、AIがSQLに変換して答えを返してくれる」っていう、夢のようなツールなんだ。


ソフトウェアエンジニア必見!Grist で実現するデータ管理の革命

今回は、まるでガンダムの新型モビルスーツを開発するかのように、革新的なスプレッドシートツール「Grist」について熱く語りたいと思います。Gristは、従来のExcelやGoogleスプレッドシートとは一線を画す、データベース機能を内包したスプレッドシートです。


データエンジニアリングの「信じる派」も「信じない派」も納得! ハンドブック活用ガイド

データエンジニアとして、このハンドブックが「信じる派」にとってどれほど強力なツールになり得るか、そして「信じない派」がなぜ懐疑的になるのか、それぞれの視点から見ていきましょう。「信じる派」のあなたなら、このハンドブックはまさに救世主だと感じるでしょう。


AIアプリケーション開発の新常識:chroma-core/chroma入門

「煽り運転に注意」という例えは面白いですね。それになぞらえると、chroma-core/chromaは「AIの安全運転を助ける、賢いカーナビ」のような存在です。AI、特に文章や画像のような非構造化データを扱うAIアプリケーションを開発していると、大量のデータの中から、AIにとって意味のある情報(例えば、特定のキーワードを含む文章や、似たような画像)を素早く見つけ出す必要が出てきます。


データベースがリアルタイム同期のロジックを持つ時代:SpacetimeDB活用ガイド

SpacetimeDBは、特にリアルタイム同期やマルチプレイヤー機能が必要なアプリケーション、特にゲーム開発において、非常に強力な味方になります。SpacetimeDBは、一言で言うと「リアルタイムで同期するデータベース」です。従来のデータベース(PostgreSQLやMySQLなど)が、クライアントからのリクエストに応じてデータを返したり保存したりするのに対し、SpacetimeDBは、データベースの状態が変化したとき、その変更を接続している全クライアントに自動的かつ即座に通知・同期します。