Cookiecutter Data Scienceとは
Cookiecutter Data Science(以下CCDS) は、データ分析プロジェクトのディレクトリ構成を標準化するための非常に強力なテンプレートです。
しかし、CCDSのデフォルト設定では、プロジェクトを作成するたびに「プロジェクト名」「著者名」「パッケージマネージャ」などを一から入力する必要があります。
何も入力せずにEnterを押せばカッコ内のデフォルト値が適用されますが、「デフォルト値以外のパッケージマネージャを常用している」 といった場合、結局手動で数字を選択し直さなければならず、少々手間です。パッケージマネージャなどの毎回決まっている項目は、Enter連打で済ませたいところです。
そこでこの記事では、CCDSで自分好みのデフォルト値を設定し、プロジェクト作成を効率化する方法を解説します。
通常のプロジェクト作成時の入力例
通常は以下のように、多くの項目で選択や入力が求められます。
project_name (project_name): My Analysis
repo_name (my_analysis): my_analysis
module_name (my_analysis):
author_name (Your name (or your organization/company/team)): Dat A. Scientist
description (A short description of the project.): This is my analysis of the data.
python_version_number (3.10): 3.12
Select dataset_storage
1 - none
2 - azure
3 - s3
4 - gcs
Choose from [1/2/3/4] (1): 3
bucket (bucket-name): s3://my-aws-bucket
aws_profile (default):
Select environment_manager
1 - virtualenv
2 - conda
3 - pipenv
4 - uv
5 - pixi
6 - poetry
7 - none
Choose from [1/2/3/4/5/6/7] (1): 2
... (以下、多くの選択肢が続く)
デフォルト値を設定する方法
デフォルト値をカスタマイズするには、主に2つの方法があります。
1. ユーザー設定ファイル(~/.cookiecutterrc)を作成する(推奨)
テンプレート自体を書き換えるのではなく、自分のPC全体の設定としてデフォルト値を保持する方法です。個人で利用する場合は、管理のしやすさからこちらの方法が推奨されます。
ホームディレクトリに .cookiecutterrc という名前の YAML ファイルを作成します。
-
Linux/macOS:
~/.cookiecutterrc -
Windows:
%USERPROFILE%\.cookiecutterrc
設定例
以下は、設定ファイルの内容例です。環境に合わせて適宜書き換えてください。
default_context:
# テキスト入力項目のデフォルト
author_name: "Your Name"
project_name: "my_new_project"
# 選択肢項目(数字ではなく、選択肢の文字列を正確に指定します)
dataset_storage: "none"
environment_manager: "uv" # virtualenv, conda, pipenv, uv, pixi, poetry, none
dependency_file: "pyproject.toml" # requirements.txt, pyproject.toml, environment.yml, Pipfile, pixi.toml
pydata_packages: "none" # none, basic
testing_framework: "pytest" # none, pytest, unittest
linting_and_formatting: "ruff" # ruff, flake8+black+isort
open_source_license: "MIT" # No license file, MIT, BSD-3-Clause
docs: "none" # mkdocs, none
include_code_scaffold: "No" # Yes, No
設定後の挙動
このファイルを作成すると、ccds(または cookiecutter)コマンドを実行した際、指定した値がデフォルト(1番目の選択肢)として提示されるようになります。
設定後の実行画面:
選択肢の順序が入れ替わり、設定した値(例:uv や pyproject.toml)が自動的に 1 になっていることがわかります。これにより、ほぼ全ての項目をEnterキーの連打だけで確定させることができます。
$ ccds
# (中略)
Select environment_manager
1 - uv # 設定した値が1番目に来る
2 - virtualenv
3 - conda
4 - pipenv
5 - pixi
6 - poetry
7 - none
Choose from [1/2/3/4/5/6/7] (1):
Select dependency_file
1 - pyproject.toml # 設定した値が1番目に来る
2 - requirements.txt
3 - environment.yml
4 - Pipfile
5 - pixi.toml
Choose from [1/2/3/4/5] (1):
2. cookiecutter.json を直接編集する(テンプレートを自作・Forkする場合)
自分専用のテンプレートをGitHubで管理している場合や、チーム全体で共通の初期設定を適用したい場合は、テンプレート内の cookiecutter.json を直接書き換えます。
{
"project_name": "project_name",
"repo_name": "{{ cookiecutter.project_name.replace(' ', '_').lower() }}",
"author_name": "Your Name (Default)",
"description": "A short description of the project.",
"open_source_license": ["MIT", "BSD-3-Clause", "No license file"],
"python_interpreter": ["python3", "python"]
}
リストの先頭(0番目の要素)に記述した値が、その項目のデフォルト値として扱われます。このテンプレートを共有することで、同じテンプレートを使うメンバー全員の初期設定を統一できます。
まとめ
Cookiecutter Data Scienceにデフォルト値を設定する方法として、以下の2点を紹介しました。
-
個人利用の場合:
~/.cookiecutterrcを作成して自分好みの設定を書き込む -
チーム利用・配布する場合:
cookiecutter.jsonを編集したカスタムテンプレートを作成する
毎回同じ選択肢を入力する時間は、積み重なると意外に大きなロスになります。ぜひ自分の「いつもの構成」をデフォルト値に設定して、分析をスムーズに開始できるようにしてみてください。
参考