Databricks

Databricks Workspace Filesで実現するコード配置と依存ファイル管理

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Databricksではノートブック以外にもPythonモジュール、SQLファイル、設定ファイル、requirements.txtなどを ワークスペース内に配置する必要があります。Workspace Filesは、 ノートブックと同じファイルツリー上にあらゆるファイルタイプを配置し、 相対インポートや依存管理を実現する機能です。

この記事では、Workspace Filesの概要、Reposとの比較、相対インポートの方法、 requirements.txtによるパッケージ管理、そして実務でよく使われる依存管理パターンを解説します。

Workspace Filesとは

Workspace Filesは、Databricksワークスペースの/Workspace/配下に配置される 非ノートブックファイルの総称です。2023年以降のDatabricksでは、ワークスペースのファイルブラウザから Pythonファイル(.py)、テキストファイル(.txt/.csv/.json)、YAML、設定ファイルなどを 直接アップロード・作成・編集できます。

Workspace Filesが導入される以前は、ノートブック以外のファイルをDatabricks上で管理するには DBFSにアップロードするか、%runマジックコマンドで他のノートブックを呼び出す必要がありました。 Workspace Filesにより、通常のPythonプロジェクトと同じディレクトリ構造・インポート方式が使えるようになっています。

Repos vs Workspace Files

観点ReposWorkspace Files
Git統合あり(Clone/Pull/Push/Branch)なし(手動アップロードまたはAPI経由)
主な用途チーム開発・バージョン管理・PRレビュー個人の作業ファイル・補助モジュール・依存ファイル
ファイルパス/Workspace/Repos/<user>/<repo>//Workspace/Users/<user>/ または /Workspace/Shared/
相対インポートサポート(カレントディレクトリがsys.pathに追加)サポート(同様にsys.pathに追加)
アクセス制御ワークスペースACL + Git権限ワークスペースACLのみ
サイズ上限リポジトリ全体で10GB個別ファイルで500MB
バージョン管理Gitの全機能(履歴・差分・ブランチ)なし(上書き保存のみ)

チーム開発のコード本体はReposで管理し、個人の実験スクリプトや一時的な設定ファイルは Workspace Filesに配置する使い分けが一般的です。

相対インポートの仕組み

Workspace Files(Repos含む)では、ノートブックと同じディレクトリに配置したPythonファイルを 通常のimport文で読み込めます。これはノートブック実行時にカレントディレクトリがsys.pathに自動追加されるためです。

ディレクトリ構造の例

/Workspace/Users/[email protected]/my-project/
├── main_notebook.py        # メインのノートブック
├── utils.py                # ユーティリティ関数
├── config.yaml             # 設定ファイル
├── requirements.txt        # 依存パッケージ定義
└── transformations/
    ├── __init__.py          # パッケージ化に必要
    ├── clean.py             # データクレンジング関数
    └── aggregate.py         # 集約処理関数

ノートブックからのインポート

# main_notebook.py

# 同じディレクトリのモジュールをインポート
from utils import validate_schema, log_metrics

# サブディレクトリのパッケージをインポート
from transformations.clean import remove_duplicates
from transformations.aggregate import daily_summary

# 設定ファイルの読み込み
import yaml
with open("config.yaml", "r") as f:
    config = yaml.safe_load(f)

# 処理の実行
df = spark.read.format("delta").load(config["input_path"])
df_clean = remove_duplicates(df)
df_summary = daily_summary(df_clean)
df_summary.write.format("delta").mode("overwrite").save(config["output_path"])

__init__.pyがサブディレクトリに配置されていることが重要です。 これがないとPythonがそのディレクトリをパッケージとして認識せず、from transformations.clean import ...が失敗します。

requirements.txtによるパッケージ管理

Workspace Files内にrequirements.txtを配置し、ノートブック内から%pipでインストールする方式は 依存パッケージ管理のシンプルなパターンです。

# requirements.txt
pandas==2.2.0
requests==2.31.0
pyyaml==6.0.1
great-expectations==0.18.0
# ノートブックの先頭セルで実行
%pip install -r ./requirements.txt

%pipはノートブックスコープのパッケージインストールを行い、 クラスタ全体の環境には影響しません。ただし%pipセルを実行するとPythonプロセスが 再起動されるため、必ずノートブックの先頭で実行する必要があります。

依存管理パターンの比較

パターン方法適用場面メリットデメリット
%pip installノートブック内で%pip install package個人の実験・探索分析即座にインストール可能バージョン固定が曖昧になりやすい
requirements.txtファイルに依存を列挙し%pip install -rプロジェクト単位のパッケージ管理バージョンが明示的・再現性が高い毎回インストールに時間がかかる
クラスタライブラリクラスタ設定でライブラリを事前インストールチーム共通の依存パッケージノートブック側で%pipが不要クラスタ再起動が必要
Init Scriptクラスタ起動時にスクリプトで自動インストールOS依存ライブラリやシステム設定起動時に自動実行デバッグが困難・起動時間の増加
Wheelファイル自作パッケージを.whlにビルドしてインストール社内共通ライブラリの配布インストールが高速・バージョン管理が明確ビルドプロセスの構築が必要

Workspace Files APIによる管理

Workspace Filesはブラウザからのアップロードだけでなく、REST APIやDatabricks CLIで管理できます。 CI/CDパイプラインでの自動配置に便利です。

# Databricks CLIでファイルをアップロード
databricks workspace import \
  --path /Workspace/Shared/etl-project/utils.py \
  --file ./src/utils.py \
  --format SOURCE \
  --language PYTHON

# REST APIでファイル一覧を取得
curl -X GET \
  "https://<workspace-url>/api/2.0/workspace/list" \
  -H "Authorization: Bearer <token>" \
  -d '{"path": "/Workspace/Shared/etl-project"}'

# REST APIでファイルをエクスポート
curl -X GET \
  "https://<workspace-url>/api/2.0/workspace/export" \
  -H "Authorization: Bearer <token>" \
  -d '{"path": "/Workspace/Shared/etl-project/utils.py", "format": "SOURCE"}'

ベストプラクティス

  • プロジェクト単位でディレクトリを構成する: ノートブック・モジュール・設定ファイルを 1つのディレクトリにまとめて、相対パスで自然に参照できる構造にする
  • 共有ファイルは/Workspace/Shared/に配置: チーム共通のユーティリティモジュールは 個人フォルダではなく共有フォルダに配置してアクセス制御を明示的にする
  • 大きなデータファイルはWorkspace Filesに置かない: CSVやParquetなどのデータファイルは クラウドストレージ(S3/ADLS/GCS)またはUnity Catalog Volumesに配置する
  • 本格的なバージョン管理にはReposを使う: Workspace Filesにはバージョン管理がないため、 チーム開発のコード本体はReposで管理し、Workspace Filesは補助用途に限定する

試験で問われるポイント

  • 「ノートブックから外部のPythonモジュールをインポートするには」→ Workspace Files / Repos内に.pyファイルを配置してimport
  • 「依存パッケージをノートブック単位で管理するには」→ %pip install -r requirements.txt
  • 「Workspace FilesとDBFSの違いは」→ Workspace Filesは/Workspace/配下でコード用、DBFSは/dbfs/配下でデータ用
  • 「サブディレクトリのモジュールをインポートするには」→ __init__.pyを配置してパッケージ化

問題で確認

Development Tools

問題 1

データエンジニアが複数のノートブックから共通で使用するバリデーション関数をPythonモジュール(validators.py)として切り出したい。ノートブックから from validators import check_schema でインポートしたい場合、最も適切なファイル配置はどれか。

  1. validators.pyをノートブックと同じWorkspace Filesディレクトリに配置する
  2. validators.pyをDBFS(/dbfs/FileStore/)にアップロードする
  3. validators.pyの内容を別のノートブックに記述し、%runマジックコマンドで呼び出す
  4. validators.pyをクラスタのInit Scriptとして登録する

正解: A

Workspace Files内でノートブックと同じディレクトリに.pyファイルを配置すると、カレントディレクトリがsys.pathに自動追加されるため、標準的なimport文でインポートできます。DBFSに配置したファイルはsys.pathに含まれないため直接インポートできません。%runは関数の再利用に使えますが、import文の形式では呼び出せません。Init Scriptはクラスタ起動時のシステム設定用であり、Pythonモジュールの配置には不適切です。

よくある質問

Workspace FilesとDBFS(Databricks File System)の違いは何ですか?

Workspace Filesはワークスペースのファイルツリー(/Workspace/配下)に配置されるファイルで、ノートブックやPythonモジュールと同じ階層で管理されます。DBFSはDatabricksが管理するファイルシステムで、/dbfs/配下にマウントされ、クラスタから直接アクセスできます。Workspace Filesはコード・設定ファイル・小さな依存ファイルの配置に適し、DBFSは大量のデータファイルの配置に適しています。Unity Catalog時代ではDBFSの直接利用は推奨されず、Volumes経由のアクセスが標準になりつつあります。

Workspace Filesで相対インポートはどう書きますか?

Workspace Files内のPythonモジュールは通常のPythonの相対/絶対インポートで参照できます。例えば、/Workspace/Users/[email protected]/project/ 配下にutils.pyを配置した場合、同じディレクトリのノートブックから import utils または from utils import my_function でインポートできます。サブディレクトリの場合は __init__.py を配置してパッケージ化し、from subdir.module import func の形式で参照します。Repos内でも同様にカレントディレクトリがsys.pathに追加されるため、相対インポートが自然に動作します。

Workspace FilesはDatabricks認定試験でどう出題されますか?

Data Engineer Associate試験の「開発環境とツール」ドメインで出題されます。主な出題パターンは「ノートブックから外部Pythonモジュールをインポートする方法」「依存ファイル(requirements.txt等)の配置場所」「Workspace FilesとReposの使い分け」です。Workspace Filesのパス形式(/Workspace/...)やDBFSとの違いを明確に理解しておくことが重要です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (105件)
© 2026 NicheeLab All rights reserved.