Databricksのノートブック開発はブラウザ上で完結する手軽さがある一方、 チームでの共同開発やバージョン管理にはGit統合が必須です。Databricks Reposは、ワークスペース内から直接Gitリポジトリをクローンし、 ブランチの切り替え・Pull・Push・差分表示を行える機能です。
この記事では、Reposの概要、サポートされるGitプロバイダ、ブランチ運用設計、 ファイル形式の選択(.py vs .ipynb)、シークレット管理の注意点、そしてCI/CDとの連携パターンを解説します。
ReposはDatabricksワークスペース内のフォルダとして表示されるGitリポジトリのクローンです。 ローカルPCにGitをインストールする必要はなく、ワークスペースのUI上でブランチ操作・Pull・Pushを行えます。
Reposの主な特徴は以下の通りです。
| Gitプロバイダ | サポート状況 | 認証方式 |
|---|---|---|
| GitHub / GitHub Enterprise | 完全サポート | PAT / GitHub App / OAuth |
| GitLab / GitLab Self-Managed | 完全サポート | PAT |
| Azure DevOps (Azure Repos) | 完全サポート | PAT / Entra ID Token |
| Bitbucket Cloud / Server | 完全サポート | App Password / PAT |
| AWS CodeCommit | サポート | Git Credentials(IAM生成) |
Git認証情報はワークスペースのUser Settings → Git Integrationから設定します。 認証情報はユーザー単位で保存され、ワークスペース内の他のユーザーからは参照できません。
Databricks Reposを使ったチーム開発では、以下のブランチ戦略が推奨されます。
| ブランチ | 用途 | 保護ルール |
|---|---|---|
| main | 本番デプロイ対象のコード | 直接pushを禁止、PRマージのみ |
| develop | 次回リリースの統合ブランチ | PRマージのみ、CI必須 |
| feature/* | 個人の開発ブランチ | 制限なし(自由にpush可能) |
| release/* | リリース前の最終検証 | PRマージのみ、E2Eテスト必須 |
| hotfix/* | 緊急修正 | mainから分岐し、mainとdevelopの両方にマージ |
実際の開発フローは以下の通りです。
feature/add-etl-pipelineブランチを作成Databricks ReposでGitに保存されるファイルの形式はGit管理の品質に直結します。
| 観点 | .py(ソースファイル形式) | .ipynb(ノートブック形式) |
|---|---|---|
| Gitのdiff | 読みやすい(Pythonコードそのまま) | 読みにくい(JSONメタデータ・出力セルを含む) |
| PRレビュー | 容易(コードの変更点が明確) | 困難(diffにノイズが多い) |
| ファイルサイズ | 小さい(コードのみ) | 大きい(出力・画像がBase64で埋め込まれる) |
| Databricks UIでの開発 | ノートブックUIでそのまま開発可能 | ノートブックUIでそのまま開発可能 |
| 外部IDEとの互換性 | 高い(VSCode等でそのまま編集可能) | Jupyter互換(VSCode + Jupyter拡張で開発可能) |
Databricksのノートブックを.py形式で保存する場合、セルの区切りは# COMMAND ----------コメントで表現されます。 DatabricksのUIではこのコメントを解釈してセル分割を再現するため、.py形式でもノートブックUIの使い勝手は維持されます。
# Databricks notebook source
# COMMAND ----------
from pyspark.sql import SparkSession
# COMMAND ----------
df = spark.read.format("delta").load("/mnt/data/sales")
display(df.limit(10))
# COMMAND ----------
# MAGIC %sql
# MAGIC SELECT region, SUM(amount) FROM sales GROUP BY regionRepos(Gitリポジトリ)にシークレット情報を含めてはいけません。以下は厳守すべきルールです。
dbutils.secrets.get(scope, key)で 実行時にシークレットを取得する。Secret ScopeはDatabricks上に安全に保存され、Gitには含まれない# NG: シークレットをハードコード
storage_key = "AbCdEfGhIjKlMnOp..."
# OK: Secret Scopeから取得
storage_key = dbutils.secrets.get(scope="my-scope", key="storage-key")
# OK: Spark Configから取得(クラスタ設定で注入)
storage_key = spark.conf.get("spark.custom.storage_key")Reposは開発フェーズのGit統合を担い、デプロイはCI/CDパイプライン(DABs、GitHub Actions等)が担当する 「開発はRepos、デプロイはCI/CD」の役割分担が推奨されます。
| フェーズ | ツール | 役割 |
|---|---|---|
| 開発 | Databricks Repos | ブランチ上でノートブック開発・テスト・Commit・Push |
| コードレビュー | GitHub / GitLab / Azure DevOps | Pull Requestのレビュー・承認 |
| テスト自動化 | GitHub Actions / Azure Pipelines | pytestによるユニットテスト・リンターチェック |
| デプロイ | Databricks Asset Bundles(DABs) | ジョブ・パイプラインの環境別デプロイ |
Databricksにはファイルを配置する場所としてReposとWorkspace Filesがあります。
| 観点 | Repos | Workspace Files |
|---|---|---|
| Git統合 | あり(Clone/Pull/Push/Branch) | なし |
| 用途 | チーム開発・バージョン管理 | 個人の作業ファイル・依存ファイル配置 |
| ファイルタイプ | ノートブック・Python・SQL・設定ファイル | 任意のファイル(.csv, .json, requirements.txt等) |
| 相対インポート | サポート | サポート |
Security & Governance
問題 1
データエンジニアリングチームがDatabricks Reposを使って共同開発を行っている。あるメンバーがノートブック内にストレージアカウントのアクセスキーをハードコードしてGitにCommit・Pushしてしまった。この問題への対処として最も適切なものはどれか。
正解: A
Gitにコミットされたシークレットは履歴に永続的に残るため、単に次のコミットで置き換えるだけでは不十分です。git filter-branchやBFG Repo Cleanerで履歴から完全に除去し、漏洩したキーは即座にローテーション(再発行)する必要があります。その上で、今後はSecret Scope経由でシークレットを取得する方式に変更します。Reposのアクセス権限制限はGit側のアクセスを制御しません。.gitignoreは既にコミットされたファイルには効果がありません。
Databricks Reposでコンフリクトが発生した場合どう対処しますか?
Databricks ReposのUIにはマージコンフリクト解消の簡易エディタが用意されていますが、複雑なコンフリクト解消には不向きです。実務ではローカルのIDEやGitHub/GitLab上でコンフリクトを解消してからpushし、Repos側でPullする運用を推奨します。Reposはあくまでワークスペース内でGitブランチの中身を同期・参照する仕組みで、本格的なコンフリクト解消はGitクライアント側で行うのが安全です。
Reposで.ipynbファイルと.pyファイルのどちらを使うべきですか?
Git管理の観点では.pyファイルを推奨します。.ipynbファイルはJSON形式で出力セルやメタデータを含むため、diffが読みにくくPRレビューが困難です。Databricksはノートブック形式で作成しても、Repos経由でGitに保存する際にはソースファイル(.py/.sql/.scala/.r)として保存する「ソースファイル形式」を選択できます。チームでGitレビューフローを運用する場合は.py形式を選択し、ノートブックUIで開発するメリットはそのまま維持できます。
Databricks ReposはDatabricks認定試験でどう出題されますか?
Data Engineer Associate試験の「開発ツールとワークフロー」ドメインおよびProfessional試験の「CI/CDとデプロイ」ドメインで出題されます。主な問われ方は「ReposとGitの統合方法」「ブランチ運用のベストプラクティス」「Repos vs DABsの使い分け」「シークレットをReposに含めてよいか」です。具体的なGitコマンドを書かせる問題は出ず、ReposのDatabricksエコシステムでの位置づけと運用上の注意点が問われます。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...