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
56
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
690
PlaywrightのE2Eテストコードを1人で書くのを辞めた話/NCDC_フロントエンドAI活用LT会
toppan_digital_dev
0
35
GitHub Actions超入門-CICDはじめの一歩 / 【増枠】社外発表したことない人がチャレンジしたことを発表するLT大会
toppan_digital_dev
0
28
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
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
2
570
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
2
140
大型犬好きによるPugの紹介
yamanoku
1
160
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
890
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
210
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
180
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
930
Rustuna: Rustによる高速なOptuna実装
pfn
PRO
0
200
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
2
170
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
210
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Paper Plane
katiecoart
PRO
5
54k
GitHub's CSS Performance
jonrohan
1033
470k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Balancing Empowerment & Direction
lara
6
1.3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2k
A designer walks into a library…
pauljervisheath
211
25k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
310
Building AI with AI
inesmontani
PRO
1
1.3k
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