jpskill.com
🛠️ 開発・MCP コミュニティ

alembic

Alembicは、データベースの構造変更をバージョン管理し、変更履歴を記録・適用することで、開発環境から本番環境まで安全かつ効率的にデータベースの変更を管理・移行するSkill。

📜 元の英語説明(参考)

Manage database migrations with Alembic. Use when a user asks to version database schemas, create migration scripts, handle schema changes in production, or manage SQLAlchemy model migrations.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Alembicは、データベースの構造変更をバージョン管理し、変更履歴を記録・適用することで、開発環境から本番環境まで安全かつ効率的にデータベースの変更を管理・移行するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o alembic.zip https://jpskill.com/download/14623.zip && unzip -o alembic.zip && rm alembic.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/14623.zip -OutFile "$d\alembic.zip"; Expand-Archive "$d\alembic.zip" -DestinationPath $d -Force; ri "$d\alembic.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して alembic.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → alembic フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Alembic

概要

Alembic は SQLAlchemy のためのマイグレーションツールです。データベースのスキーマ変更をバージョン管理された Python スクリプトとして追跡します — データベース版の Git のようなものです。モデルの変更からの自動生成、ブランチング、およびデータマイグレーションをサポートします。

手順

ステップ 1: セットアップ

pip install alembic
alembic init alembic
# alembic/env.py — async SQLAlchemy での設定
from alembic import context
from sqlalchemy.ext.asyncio import create_async_engine
from models import Base
import asyncio

config = context.config
target_metadata = Base.metadata

def run_migrations_online():
    connectable = create_async_engine(config.get_main_option("sqlalchemy.url"))

    async def do_run():
        async with connectable.connect() as connection:
            await connection.run_sync(do_migrations)

    def do_migrations(connection):
        context.configure(connection=connection, target_metadata=target_metadata)
        with context.begin_transaction():
            context.run_migrations()

    asyncio.run(do_run())

run_migrations_online()

ステップ 2: マイグレーションの作成

# モデルの変更から自動生成
alembic revision --autogenerate -m "add projects table"

# 空のマイグレーションの作成 (データマイグレーション用)
alembic revision -m "backfill user roles"
# alembic/versions/001_add_projects.py — 生成されたマイグレーション
def upgrade():
    op.create_table('projects',
        sa.Column('id', sa.String(36), primary_key=True),
        sa.Column('name', sa.String(100), nullable=False),
        sa.Column('owner_id', sa.String(36), sa.ForeignKey('users.id')),
        sa.Column('created_at', sa.DateTime, server_default=sa.func.now()),
    )
    op.create_index('ix_projects_owner_id', 'projects', ['owner_id'])

def downgrade():
    op.drop_index('ix_projects_owner_id')
    op.drop_table('projects')

ステップ 3: データマイグレーション

# alembic/versions/002_backfill_roles.py — データマイグレーション
from alembic import op
import sqlalchemy as sa

def upgrade():
    # カラムの追加
    op.add_column('users', sa.Column('role', sa.String(20), server_default='member'))

    # 既存の行のバックフィル
    conn = op.get_bind()
    conn.execute(sa.text("UPDATE users SET role = 'admin' WHERE email LIKE '%@mycompany.com'"))

def downgrade():
    op.drop_column('users', 'role')

ステップ 4: コマンド

alembic upgrade head          # 保留中のすべてのマイグレーションを適用
alembic downgrade -1          # 1つ前のマイグレーションにロールバック
alembic history               # マイグレーション履歴を表示
alembic current               # 現在のリビジョンを表示
alembic upgrade +1            # 次のマイグレーションのみを適用

ガイドライン

  • 自動生成されたマイグレーションは常にレビューしてください — リネームが見逃されている可能性があります (drop+create として検出される)。
  • デプロイ前に CI でマイグレーションを実行してください — スキーマの問題を早期にキャッチします。
  • データマイグレーションは冪等であるべきです — 複数回実行しても安全であるように。
  • SQLite では op.batch_alter_table() を使用してください (ALTER TABLE をうまくサポートしていません)。
  • 適用済みのマイグレーションは決して編集しないでください — 代わりに新しいマイグレーションを作成してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Alembic

Overview

Alembic is the migration tool for SQLAlchemy. It tracks database schema changes as versioned Python scripts — like Git for your database. Supports autogeneration from model changes, branching, and data migrations.

Instructions

Step 1: Setup

pip install alembic
alembic init alembic
# alembic/env.py — Configure with async SQLAlchemy
from alembic import context
from sqlalchemy.ext.asyncio import create_async_engine
from models import Base
import asyncio

config = context.config
target_metadata = Base.metadata

def run_migrations_online():
    connectable = create_async_engine(config.get_main_option("sqlalchemy.url"))

    async def do_run():
        async with connectable.connect() as connection:
            await connection.run_sync(do_migrations)

    def do_migrations(connection):
        context.configure(connection=connection, target_metadata=target_metadata)
        with context.begin_transaction():
            context.run_migrations()

    asyncio.run(do_run())

run_migrations_online()

Step 2: Create Migrations

# Auto-generate from model changes
alembic revision --autogenerate -m "add projects table"

# Create empty migration (for data migrations)
alembic revision -m "backfill user roles"
# alembic/versions/001_add_projects.py — Generated migration
def upgrade():
    op.create_table('projects',
        sa.Column('id', sa.String(36), primary_key=True),
        sa.Column('name', sa.String(100), nullable=False),
        sa.Column('owner_id', sa.String(36), sa.ForeignKey('users.id')),
        sa.Column('created_at', sa.DateTime, server_default=sa.func.now()),
    )
    op.create_index('ix_projects_owner_id', 'projects', ['owner_id'])

def downgrade():
    op.drop_index('ix_projects_owner_id')
    op.drop_table('projects')

Step 3: Data Migrations

# alembic/versions/002_backfill_roles.py — Data migration
from alembic import op
import sqlalchemy as sa

def upgrade():
    # Add column
    op.add_column('users', sa.Column('role', sa.String(20), server_default='member'))

    # Backfill existing rows
    conn = op.get_bind()
    conn.execute(sa.text("UPDATE users SET role = 'admin' WHERE email LIKE '%@mycompany.com'"))

def downgrade():
    op.drop_column('users', 'role')

Step 4: Commands

alembic upgrade head          # apply all pending migrations
alembic downgrade -1          # rollback one migration
alembic history               # show migration history
alembic current               # show current revision
alembic upgrade +1            # apply next migration only

Guidelines

  • Always review autogenerated migrations — they may miss renames (detected as drop+create).
  • Run migrations in CI before deploying — catch schema issues early.
  • Data migrations should be idempotent — safe to run multiple times.
  • Use op.batch_alter_table() for SQLite (which doesn't support ALTER TABLE well).
  • Never edit applied migrations — create new ones instead.