4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】Cookiecutter Data Scienceでデフォルト値を設定してプロジェクト作成を効率化する

4
Last updated at Posted at 2025-12-23

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

設定例

以下は、設定ファイルの内容例です。環境に合わせて適宜書き換えてください。

.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番目の選択肢)として提示されるようになります。

設定後の実行画面:
選択肢の順序が入れ替わり、設定した値(例:uvpyproject.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 を直接書き換えます。

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 を編集したカスタムテンプレートを作成する

毎回同じ選択肢を入力する時間は、積み重なると意外に大きなロスになります。ぜひ自分の「いつもの構成」をデフォルト値に設定して、分析をスムーズに開始できるようにしてみてください。

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?