【データ管理】DVCの設定まとめ

サービスアカウントを使ったDVCの設定方法をまとめます。

DVC
公開

2025年6月1日

最終更新

2026年2月1日

はじめに

DVCはデータのバージョン管理ツールで、GitHubの容量制限(100MiB)を超えるデータをGoogle Driveなどの外部ストレージで管理できます。

DVCでGoogle Driveをリモートストレージとして使う場合、認証方法には主にOAuthとサービスアカウントの2つがあります。

OAuth サービスアカウント
設定の手軽さ やや複雑 シンプル
トークン管理 定期的に再認証が必要 不要(キーファイルで認証)
共有のしやすさ 各自が認証を行う キーファイルを共有するだけ

本記事ではサービスアカウントを使った方法を解説します。

開発コンテナでの利用を想定していますが、それ以外の環境でも同様の手順で設定できます。開発コンテナの環境構築についてはこちらの記事を参考にしてください。

前提条件

以下がインストールされていることを前提とします。

  • Python(pipが使える状態)
  • Git

DVCとGoogle Drive用のパッケージをインストールしてください。

Terminal
pip install dvc dvc-gdrive

サービスアカウントの作成

Google Cloudのサービスアカウントは、人ではなくアプリケーションがGoogle APIにアクセスするための仕組みです。DVCがGoogle Driveにアクセスするために使用します。

  1. Google Cloud Consoleへアクセス
  2. 画面上部のボックスからプロジェクトを作成
    • 左上にGoogle Cloudと書いてある部分の右です。
    • 出てくるウィンドウの右上から作れます。

  1. 画面左のメニューから「IAMと管理」を選択
    • 左にメニューがない場合は左上の3本線から開けます。
  2. サイドバーの真ん中上あたりから「サービスアカウント」を選択
  3. 画面上部の「サービスアカウントを作成」へ進む
  4. 任意の名前と説明を入力し、完了を押下
    • 権限のところはスキップで構いません。

  1. メールの列に書いてある長いメールアドレスをコピーしておく
    • 後ほどGoogle Driveのフォルダにこのアドレスを共有します。
  2. 作成したサービスアカウントの一番右にある「操作」から「鍵を管理」を選択
    • 長いメールアドレスの右側にある点々の部分です。
  3. 「キーを追加」→「新しい鍵を作成」→「JSON」を選択し、作成へ進む
  4. ファイルとして保存されるので、作業ディレクトリの.secretsフォルダに保存する
    • .secretsフォルダがなければ作成してください。
    • ファイル名はkey.jsonなどわかりやすいもので構いません。

Google Driveの設定

  1. Google Driveの任意の場所にデータ保管用のフォルダを作成
  2. フォルダの共有設定から、先ほどコピーしたサービスアカウントのメールアドレスを貼り付け、「編集者」権限で共有

メールアドレスを貼り付け、権限を「編集者」にして共有します
  1. フォルダのIDをコピー
    • IDは、ドライブでフォルダを開いたときのURLで、最後のスラッシュ(~/folders/)より右側の部分です。

DVCの初期化とリモート設定

ターミナルで以下のコマンドを順番に実行します。

リモートの追加

フォルダIDの部分を、先ほどコピーしたIDに置き換えてください。

Terminal
dvc init && dvc remote add -d myremote gdrive://[Google DriveのフォルダID]

サービスアカウントの有効化

Terminal
dvc remote modify myremote gdrive_use_service_account true

キーファイルのパスを設定

--localを付けることで、この設定は.dvc/config.localに保存され、Gitには追跡されません。フォルダ名やファイル名を変更した場合は、適宜修正してください。

Terminal
dvc remote modify myremote --local \
    gdrive_service_account_json_file_path .secrets/key.json

セキュリティ設定

.secretsフォルダにはサービスアカウントのキーファイルが含まれています。これは機密情報なので、必ず.gitignoreに追記してGitの追跡対象から外してください。

.gitignore
/.secrets/

これで.secretsフォルダの中身がGitにコミットされることはありません。

データの追加とプッシュ

以上で設定は完了です。あとはデータを管理していきましょう。

  1. ワーキングディレクトリにdataフォルダを作成し、データを追加
  2. DVCにデータを登録
Terminal
dvc add data/
  1. Google Driveにプッシュ
Terminal
dvc push
  1. データをダウンロードしたい場合
Terminal
dvc pull

共同作業者の設定

共同研究で他のメンバーとデータを共有する場合、以下の手順が必要です。

キーファイルの共有

.secretsフォルダはGitで追跡されないため、クローンしただけでは含まれません。キーファイルはメールやチャットなど別の手段で共有し、ワーキングディレクトリに.secrets/key.jsonとして配置してもらってください。

DVCの設定

共同作業者は以下のコマンドを順番に実行して、リモートの設定を行います。

Terminal
dvc remote modify myremote gdrive_use_service_account true
Terminal
dvc remote modify myremote --local \
    gdrive_service_account_json_file_path .secrets/key.json

これにより、.dvc/config.localに以下のような内容が書き込まれます。

['remote "myremote"']
    gdrive_service_account_json_file_path = ../.secrets/key.json
Note

パスが../.secrets/key.jsonとなるのは、.dvc/config.localから見た相対パスだからです。.dvc/config.localもGitで追跡されないため、各自が設定する必要があります。

設定が完了したら、dvc pullでデータをダウンロードできます。

Terminal
dvc pull

おわりに

サービスアカウントを使ったDVCの設定方法を紹介しました。OAuthと比べてトークンの再認証が不要になるため、運用面でのストレスが軽減されます。

何かあればコメントでお知らせください。