Traffine I/O

日本語

2023-03-31

Cookiecutter

Cookiecutterとは

Cookiecutterは、プリセットされたテンプレートからプロジェクトを作成できる多目的なコマンドラインツールです。Cookiecutterを使用すると、カスタマイズ可能なテンプレートに基づいたプロジェクト構造を素早く簡単に生成し、プロジェクトの基本フレームワークの設定にかかる時間と労力を節約できます。Pythonで書かれており、オープンソースのBSDライセンスの下で利用可能であり、異なるプラットフォームの開発者にアクセス可能です。

Cookiecutterの利点

Cookiecutterを開発フローに取り入れることには、次のような利点があります。

  • スピード
    Cookiecutterのテンプレートを使用することで、プロジェクト構造を迅速に生成でき、コードの記述や機能の実装に集中できます。

  • 一貫性
    Cookiecutterテンプレートにより、プロジェクトが一貫した構造とレイアウトに従うようになり、コードベースのナビゲーションとメンテナンスが容易になります。

  • ベストプラクティス
    多くのテンプレートは、経験豊富な開発者が産業界のベストプラクティスを取り入れて作成されており、自分自身のコード品質を向上させることができます。

  • カスタマイズ性
    Cookiecutterテンプレートは、簡単にカスタマイズして拡張することができ、特定の要件に合わせて適応できます。

  • コラボレーション
    共有テンプレートを使用することで、チーム全員が同じプロジェクト構造に従うことができ、コラボレーションやコミュニケーションの改善に役立ちます。

Cookiecutterの使い方

Cookiecutterを使うための手順は次のとおりです。

  1. pipを使用してCookiecutterをインストール
bash
$ pip install cookiecutter
  1. Cookiecutterリポジトリからテンプレートを選択するか、独自のテンプレートを作成

選択したテンプレートを使用して新しいプロジェクトを生成するには、次のコマンドを実行

bash
$ cookiecutter https://github.com/username/repo-name.git

URLをテンプレートリポジトリのパスに置き換えます。

例えば、cookiecutter-pypackageを使用する場合、次のコマンドを実行します。

bash
$ cookiecutter https://github.com/audreyr/cookiecutter-pypackage

full_name [Audrey Roy Greenfeld]:
email [aroy@alum.mit.edu]:
github_username [audreyr]:
project_name [Python Boilerplate]:
project_slug [python_boilerplate]:
project_short_description [Python Boilerplate contains all the boilerplate you need to create a Python package.]:
pypi_username [audreyr]:
version [0.1.0]:
use_pytest [n]:
use_pypi_deployment_with_travis [y]:
Select command_line_interface:
1 - Click
2 - No command-line interface
Choose from 1, 2 [1]:
create_author_file [y]:
Select open_source_license:
1 - MIT license
2 - BSD license
3 - ISC license
4 - Apache Software License 2.0
5 - GNU General Public License v3
6 - Not open source
Choose from 1, 2, 3, 4, 5, 6 [1]:

対話型の質問に回答することで、次のようなプロジェクトが作成されます。

python_boilerplate
├── AUTHORS.rst
├── CONTRIBUTING.rst
├── HISTORY.rst
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── docs
│   ├── Makefile
│   ├── authors.rst
│   ├── conf.py
│   ├── contributing.rst
│   ├── history.rst
│   ├── index.rst
│   ├── installation.rst
│   ├── make.bat
│   ├── readme.rst
│   └── usage.rst
├── python_boilerplate
│   ├── __init__.py
│   └── python_boilerplate.py
├── requirements_dev.txt
├── setup.cfg
├── setup.py
├── tests
│   ├── __init__.py
│   └── test_python_boilerplate.py
├── tox.ini
└── travis_pypi_setup.py

人気のCookiecutterテンプレートを探索

さまざまなプログラミング言語、フレームワーク、目的に対応した数多くのCookiecutterテンプレートがあります。ここでは、2つの人気のテンプレートを探索します。

Cookiecutter FastAPI

https://github.com/arthurhenrique/cookiecutter-fastapi

このテンプレートは、FastAPIフレームワークを使用してWebアプリケーションを構築するために設計されています。

Cookiecutter Data Science

https://github.com/drivendata/cookiecutter-data-science

Cookiecutter Data Scienceテンプレートは、コード、データ、分析を整理するための標準化された構造を取り入れた、データサイエンスプロジェクトに最適化されています。Jupyterノートブック、データバージョン管理、再現可能な研究のサポートが含まれています。

Cookiecutterテンプレートのカスタマイズ

既存のテンプレートをクローンして、テンプレートファイルを変更することで、テンプレートをカスタマイズすることができます。これにより、テンプレートを特定のニーズや好みに合わせることができます。

独自のCookiecutterテンプレートの作成

適切なテンプレートが見つからない場合や、特定のユースケースに合わせてカスタムテンプレートを作成したい場合は、次の手順に従います。

  1. テンプレート名が付いた新しいディレクトリを作成
  2. cookiecutter.jsonファイルを追加。これは、変数のデフォルト値を含むテンプレート構成を保存するために使用されます。
  3. Jinja2構文を使用して変数と制御構造を含めたテンプレートファイルとディレクトリを作成
  4. ローカルディレクトリパスを使用してcookiecutterコマンドを実行して、テンプレートをテスト
bash
$ cookiecutter path/to/your/template

参考

https://cookiecutter.readthedocs.io/en/stable/
https://github.com/cookiecutter/cookiecutter
https://cookiecutter.readthedocs.io/en/1.7.2/installation.html
https://training.talkpython.fm/courses/explore_cookiecutter_course/using-and-mastering-cookiecutter-templates-for-project-creation

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!