mcpField
G
grdb

grdb

github.com/johnrogersデータ・データベース233163 回インストール40 週間前に更新
リポジトリ

grdb について

GRDB.swift を使う Swift 開発者向けのリファレンスです。SQLite に直接アクセスするためのデータベース設定、クエリ、マイグレーション、リアクティブ監視、性能確認を扱います。

主な機能

  1. 01DatabaseQueue または DatabasePool の設定
  2. 02SQL と QueryInterface によるクエリ作成
  3. 03スキーママイグレーションの定義
  4. 04クエリ結果のリアクティブ監視
  5. 05クエリとインデックスの性能分析

活用シーン

  1. 01Swift アプリでの SQLite データベース構成
  2. 02マイグレーションによるスキーマ更新
  3. 03クエリ変更に応じた SwiftUI ビュー更新
  4. 04最適化前のクエリプラン確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/johnrogers/claude-swift-engineering --skill grdb

インストール後、Claude Code で/grdbを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
getting-started.md
migrations.md
performance.md
queries.md
value-observation.md

詳細

GRDB

GRDB.swift を使用した SQLite への直接アクセスです。必要に応じて SQLite のすべての機能を利用できる、型安全な Swift ラッパーです。

リファレンスの読み込みガイド

内容が必要になる可能性が少しでもある場合は、必ずリファレンスファイルを読み込んでください。 パターンを見逃したり、間違えたりするより、あらかじめコンテキストを把握しておくほうが確実です。

リファレンス読み込むタイミング
Getting StartedDatabaseQueue または DatabasePool のセットアップ
Queries生 SQL、Record 型、型安全なクエリの作成
Value Observationリアクティブクエリ、SwiftUI との統合
MigrationsDatabaseMigrator、スキーマの進化
PerformanceEXPLAIN QUERY PLAN、インデックス作成、プロファイリング

GRDB と SQLiteData の使い分け

シナリオ使用するもの
型安全な @Table モデルSQLiteData
CloudKit 同期が必要SQLiteData
複雑な結合(4 つ以上のテーブル)GRDB
ウィンドウ関数(ROW_NUMBER、RANK)GRDB
パフォーマンスが重要な生 SQLGRDB
リアクティブクエリ(ValueObservation)GRDB

基本的なワークフロー

  1. DatabaseQueue(単一接続)または DatabasePool(並行読み取り)を選択します
  2. DatabaseMigrator でマイグレーションを定義します
  3. Record 型(Codable、FetchableRecord、PersistableRecord)を作成します
  4. 生 SQL または QueryInterface でクエリを記述します
  5. リアクティブな更新には ValueObservation を使用します

要件

  • iOS 13+、macOS 10.15+
  • Swift 5.7+
  • GRDB.swift 6.0+

よくある間違い

  1. EXPLAIN PLAN を使わずにパフォーマンスを推測する — EXPLAIN QUERY PLAN を確認せずにクエリが速いか遅いかを判断するのは、当て推量です。最適化の前に、必ず EXPLAIN でクエリをプロファイリングしてください。

  2. WHERE 句で使う列にインデックスがない — インデックスのない列で絞り込むクエリは、テーブル全体をスキャンします。大きなテーブルでは、WHERE、JOIN、ORDER BY 句で使用する列にインデックスを作成してください。

  3. マイグレーションの順序が不適切 — 順序を入れ替えたり、中間バージョンを飛ばしたりしてマイグレーションを実行すると、スキーマの整合性が損なわれます。マイグレーションは必ず順番に適用し、バージョンを飛ばさないでください。

  4. Record の準拠を省略する — Record 型を PersistableRecord または FetchableRecord に正しく準拠させないと、気づかないうちにデータが失われたり、デシリアライズに失敗したりします。必要なプロトコルはすべて正しく実装してください。

  5. 適切にクリーンアップせず ValueObservation を使う — ビューが表示されなくなったときに ValueObservation のキャンセルを忘れると、メモリーリークや古いデータの購読が発生します。キャンセル可能なオブジェクトを保存し、deinit でクリーンアップしてください。

コメント