Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Alembicを使ってDBのマイグレーションをやってみた / Toranomon Tech H...
Search
TOPPAN ict
February 06, 2026
Technology
53
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Alembicを使ってDBのマイグレーションをやってみた / Toranomon Tech Hub 第6回 新春!初心者だらけのLT大会!登壇資料
TOPPAN ict
February 06, 2026
More Decks by TOPPAN ict
See All by TOPPAN ict
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
650
PlaywrightのE2Eテストコードを1人で書くのを辞めた話/NCDC_フロントエンドAI活用LT会
toppan_digital_dev
0
32
GitHub Actions超入門-CICDはじめの一歩 / 【増枠】社外発表したことない人がチャレンジしたことを発表するLT大会
toppan_digital_dev
0
26
S3を固定IPで公開した話 ―ALBのHost Header Rewriteを添えて― / JAWS-UG初心者支部#78 NW再入門!NW-JAWSコラボLT回
toppan_digital_dev
0
180
Other Decks in Technology
See All in Technology
AI時代、データエンジニアが一番おもろい
genshun9
0
690
AI de Idea
kawaguti
PRO
2
130
AI coding 整合正規方法
philipz
0
530
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
270
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.4k
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
280
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
160
リアーキテクチャ後の障害ゼロを目指したShadow Testingの取り組み
nihonbuson
PRO
1
170
Genieを崇めよ
kameitomohiro
0
170
Kiro Meetup #8 Kiro アップデート (2026/3/21〜2026/9/24)
katzueno
1
160
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
240
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
The untapped power of vector embeddings
frankvandijk
2
1.9k
The Pragmatic Product Professional
lauravandoore
37
7.5k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
570
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Transcript
Alembicを使って DBのマイグレーションをやってみた 2026年1月20日 ICT開発センター 井口 雅士 Toranomon Tech Hub 第6回
新春!初心者だらけのLT大会!
©TOPPAN Digital Inc. 2 自己紹介 名前:井口 雅士 所属:TOPPANデジタル株式会社 ICT開発センター 役割:システム開発
(インフラ / バックエンド開発) 好きなAWSサービス:ECS
©TOPPAN Digital Inc. 3 開発 複数インフラ環境の管理どうされてますか
©TOPPAN Digital Inc. 4 開発 dev(開発) stg(検証) prod(本番) よくあるプロジェクトの開発環境
©TOPPAN Digital Inc. 5 開発 dev(開発) stg(検証) prod(本番) Terraform 弊社では、terraformを使ってコード管理しています
©TOPPAN Digital Inc. 6 dev(開発) stg(検証) prod(本番) 開発 DBを立てたときに中身も統一したい ・テーブル定義
・スキーマ定義 ・カラム名
©TOPPAN Digital Inc. 7 dev(開発) stg(検証) prod(本番) 開発 DBの中身をどうやって 管理するか。。
⇒ Alembicを使ってDBの管理をできるようにしよう
©TOPPAN Digital Inc. 8 開発 本日のテーマ: Alembic
©TOPPAN Digital Inc. 9 Alembicとは Pythonで使われているデータベース マイグレーションツール ・スキーマ管理の自動化 ・SQLArchemyとの連携 ・バージョン管理
©TOPPAN Digital Inc. 10 Alembicとは(やってみた) ・インストール pip install alembic sqlalchemy
alembic init migrations ・初期実行コマンド → バージョン管理用のファイルや 設定値を書きこむファイルが生成される → 変更を適用するDBのURLを記載する ・接続先の変更
©TOPPAN Digital Inc. 11 Alembicとは(やってみた) ・バージョンファイルの作成 alembic revision -m “<任意の識別名>"
→ バージョン管理用のファイル生成される 変更内容のSQLを書きこんで管理する
©TOPPAN Digital Inc. 12 Alembicとは(やってみた) ・DBへの適用 alembic upgrade head :最新バージョンに更新
or alembic upgrade <バージョン番号> :特定バージョンに更新 これで更新できるのですが。。。
©TOPPAN Digital Inc. 13 Alembicとは(やってみた) ・バージョンファイルの作成 alembic revision -m “<任意の識別名>"
→ バージョン管理用のファイル生成される 変更内容のSQLを書きこんで管理する 自分で一つ一つ打ち込んで 作っていくと たいへん手間がかかる
©TOPPAN Digital Inc. 14 Alembicとは Pythonで使われているデータベース マイグレーションツール ・スキーマ管理の自動化 ・SQLArchemyとの連携(SQLModelとの連携) ・バージョン管理
©TOPPAN Digital Inc. 15 開発 本日のテーマ: Alembic + SQLModel
©TOPPAN Digital Inc. 16 Alembic + SQLModel SQLModelと組み合わせる → Modelファイルで管理する
Modelファイル: DBの設計書の ようなイメージ DBに定義したい「テーブル」や「カラム」、 「スキーマ」をpythonクラスとして記載していく
©TOPPAN Digital Inc. 17 Alembic + SQLModel DB DB モデルファイルの定義と過去のバージョンファイル(DBの状態)を見比べて
まだ未反映の項目を作成できるバージョンファイルを自動生成してくれる models.py alembic 過去バージョン ファイル models.py alembic 新バージョン 過去バージョン ファイル
©TOPPAN Digital Inc. 18 Alembic + SQLModel(やってみた) ◆実行環境 ◆インフラ環境 Github
codespaces AWS codespaces EC2 (踏み台サーバー) RDS AWS Cloud ※AWS環境にあるDBにアクセスするため踏み台サーバーを使った構成
©TOPPAN Digital Inc. 19 ◆環境構築 ・alembicのインストール pip install sqlmodel alembic
alembic init migrations ・初期実行コマンド ・モデルファイルの作成 models.py → 作りたいテーブル、カラム、スキーマを定義したファイルを作成 Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 20 ◆環境構築 ・DB接続設定 env.py → 上記で整理したアクセス情報を使ったアクセス設定を行う 2つのファイルを編集
config.py → DBへのアクセス情報を整理するファイル Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 21 ◆環境構築 config.py 環境変数取得 DBアクセス URLの成型 シークレット
(DB PW)取得 Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 22 ◆環境構築 env.py 作ったconfig ファイルを インポート 成型したDB
URLに差し替え 差し替え版を 設定 Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 23 ◆実行 codespaces EC2 (踏み台サーバー) RDS AWS
Cloud Codespacesと踏み台サーバーを接続する → セッションマネージャーを使う aws ssm start-session --profile <プロファイル>¥ --target <踏み台インスタンスID>¥ --document-name AWS-StartPortForwardingSessionToRemoteHost ¥ --parameters '{"host":[“<DBエンドポイント>"],"portNumber":["5432"], "localPortNumber":["15432"]}' → 実行環境(codespaces)の ”15432”というポートにアクセスする と踏み台を経由してDBにアクセスできる状態になる Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 24 ◆実行 踏み台サーバーとの接続 DBと実行環境がつながる プロファイル インスタンスID インスタンスID
インスタンスID インスタンスID セッション マネージャーコマンド Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 25 ◆実行 実行環境に環境変数を登録する export PROFILE = <プロファイル>
export DB_HOST= localhost export DB_PORT=15432 export DB_NAME=<DB名> export DB_USER=<ユーザー名> export DB_SECRETS_NAME=<シークレット名> セッションマネージャーで、実行環境の特定 ポートをDBとつないだので、環境変数 は”local”の特定ポートになるようにする バージョンファイルを作成する alembic revision --autogenerate -m “<任意の識別名>" Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 26 ◆実行 alembicの実行 別ターミナルで実行する インスタンスID インスタンスID 環境変数登録
alembic実行 Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 27 ◆実行 バージョンファイルの出力 DBとの差分を補うコードが自動記述される テーブル名 カラム名 カラム名
このバージョンまで上げたときに 実行される このバージョンから下げたときに 実行される Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 28 ◆実行 DBに変更を適用する alembic upgrade head or
alembic upgrade <バージョン番号> 【おまけ】DBを戻したい alembic downgrade -1 :一つ前のバージョンに戻る or alembic downgrade <バージョン番号> :特定バージョンに戻る Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 29 ◆環境切り換え 踏み台サーバーとの接続 プロファイルとインスタンスIDを別環境の値に変更する プロファイル インスタンスID インスタンスID
インスタンスID インスタンスID セッション マネージャーコマンド alembicの実行 別ターミナルで、別環境に応じた環境変数を入力する。その後、上げたいバージョンも しくは最新バージョンを適用する インスタンスID インスタンスID 環境変数登録 alembic実行 踏み台サーバーや環境変数を変えて同じ作業をすればOK Alembic + SQLModel(やってみた)
©TOPPAN Digital Inc. 30 まとめ ◆よかった点 ・バージョンファイルとしてDBに何が作られているのか残る → どの時点で何が作られているのかファイルを見れば把握できる ・DBへの変更がスムーズ(アップグレード/ダウングレード)
→ コマンド一つで変更スクリプトを生成 → コマンド一つでDBに即反映 ・DBの構造管理が、Modelファイル1つで全て完結する → Modelファイルの更新だけで、DBの更新を制御できる ・複数の環境があっても一つのバージョンファイルで統一できる → 環境ごとに管理する必要が無い ・フロントやバックエンドとModelファイルを共有できる → APIの入出力スキーマなどに使え、DB定義との乖離を防げる 【管理面】 【開発面】
©TOPPAN Digital Inc. 31 まとめ ◆気になる点 自動生成の安全性 ・機械的にテーブル生成、削除を管理するので確認した方が良い → 名称変更などでテーブルの削除/追加が起こると中身が消えてしまうことも
・全て反映されるわけではない → インデックスの変更、プライマリキーの変更等は反映されないことも
©TOPPAN Digital Inc. 32 まとめ 今回は、 「Alembic」を使って 複数環境のDBを管理してみました 一つのソース(Modelファイル)の更新だけで 全環境の管理ができるのはとても実用的と感じております。
一方で、実際に運用してみて、 DB更新の抜けもれが気になったので、 もっと最適化できる方法があれば ご意見伺いたいなと思っています!!
None